diff --git a/InCallUI/res/drawable-hdpi/business_unknown.png b/InCallUI/res/drawable-hdpi/business_unknown.png
new file mode 100644
index 0000000..b369939
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/endcall_active.png b/InCallUI/res/drawable-hdpi/endcall_active.png
deleted file mode 100644
index 38f1e1c..0000000
--- a/InCallUI/res/drawable-hdpi/endcall_active.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/endcall_background_texture.png b/InCallUI/res/drawable-hdpi/endcall_background_texture.png
deleted file mode 100644
index 095b0b6..0000000
--- a/InCallUI/res/drawable-hdpi/endcall_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/endcall_disable.png b/InCallUI/res/drawable-hdpi/endcall_disable.png
deleted file mode 100644
index 6a0f658..0000000
--- a/InCallUI/res/drawable-hdpi/endcall_disable.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_dial_end_call.png b/InCallUI/res/drawable-hdpi/ic_dial_end_call.png
deleted file mode 100644
index ab3adb4..0000000
--- a/InCallUI/res/drawable-hdpi/ic_dial_end_call.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_end_call_holo_dark.png b/InCallUI/res/drawable-hdpi/ic_end_call_holo_dark.png
deleted file mode 100644
index 0f373bb..0000000
--- a/InCallUI/res/drawable-hdpi/ic_end_call_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_in_call_bt_dk.png b/InCallUI/res/drawable-hdpi/ic_in_call_bt_dk.png
new file mode 100644
index 0000000..4901a2c
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/ic_in_call_bt_dk.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_in_call_phone_hangup.png b/InCallUI/res/drawable-hdpi/ic_in_call_phone_hangup.png
new file mode 100644
index 0000000..d6f26f2
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/ic_in_call_phone_hangup.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/ic_incoming_call_bluetooth.png b/InCallUI/res/drawable-hdpi/ic_incoming_call_bluetooth.png
deleted file mode 100644
index 050c3e7..0000000
--- a/InCallUI/res/drawable-hdpi/ic_incoming_call_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/list_pressed_holo_dark.9.png b/InCallUI/res/drawable-hdpi/list_pressed_holo_dark.9.png
index 5654cd6..596accb 100644
--- a/InCallUI/res/drawable-hdpi/list_pressed_holo_dark.9.png
+++ b/InCallUI/res/drawable-hdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png b/InCallUI/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png
index f6fd30d..c8afb46 100644
--- a/InCallUI/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png
+++ b/InCallUI/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/picture_dialing.png b/InCallUI/res/drawable-hdpi/picture_dialing.png
new file mode 100644
index 0000000..6311f69
--- /dev/null
+++ b/InCallUI/res/drawable-hdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-hdpi/picture_unknown.png b/InCallUI/res/drawable-hdpi/picture_unknown.png
index 278c121..26d2be1 100644
--- a/InCallUI/res/drawable-hdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-hdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png
new file mode 100644
index 0000000..cb587a8
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-hdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png
new file mode 100644
index 0000000..4047b22
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-mdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png b/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png
new file mode 100644
index 0000000..f167ecb
--- /dev/null
+++ b/InCallUI/res/drawable-ldrtl-xhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/business_unknown.png b/InCallUI/res/drawable-mdpi/business_unknown.png
new file mode 100644
index 0000000..eac97a9
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/endcall_active.png b/InCallUI/res/drawable-mdpi/endcall_active.png
deleted file mode 100644
index a82738b..0000000
--- a/InCallUI/res/drawable-mdpi/endcall_active.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/endcall_background_texture.png b/InCallUI/res/drawable-mdpi/endcall_background_texture.png
deleted file mode 100644
index efa6502..0000000
--- a/InCallUI/res/drawable-mdpi/endcall_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/endcall_disable.png b/InCallUI/res/drawable-mdpi/endcall_disable.png
deleted file mode 100644
index bd1a2f3..0000000
--- a/InCallUI/res/drawable-mdpi/endcall_disable.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_dial_end_call.png b/InCallUI/res/drawable-mdpi/ic_dial_end_call.png
deleted file mode 100644
index c476642..0000000
--- a/InCallUI/res/drawable-mdpi/ic_dial_end_call.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_end_call_holo_dark.png b/InCallUI/res/drawable-mdpi/ic_end_call_holo_dark.png
deleted file mode 100644
index e090cc8..0000000
--- a/InCallUI/res/drawable-mdpi/ic_end_call_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_in_call_bt_dk.png b/InCallUI/res/drawable-mdpi/ic_in_call_bt_dk.png
new file mode 100644
index 0000000..820ebe1
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/ic_in_call_bt_dk.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_in_call_phone_hangup.png b/InCallUI/res/drawable-mdpi/ic_in_call_phone_hangup.png
new file mode 100644
index 0000000..1dfad3b
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/ic_in_call_phone_hangup.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/ic_incoming_call_bluetooth.png b/InCallUI/res/drawable-mdpi/ic_incoming_call_bluetooth.png
deleted file mode 100644
index 4b317c1..0000000
--- a/InCallUI/res/drawable-mdpi/ic_incoming_call_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/list_pressed_holo_dark.9.png b/InCallUI/res/drawable-mdpi/list_pressed_holo_dark.9.png
index 6e77525..fd0e8d7 100644
--- a/InCallUI/res/drawable-mdpi/list_pressed_holo_dark.9.png
+++ b/InCallUI/res/drawable-mdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png b/InCallUI/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png
index 92da2f0..c9002b7 100644
--- a/InCallUI/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png
+++ b/InCallUI/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/picture_dialing.png b/InCallUI/res/drawable-mdpi/picture_dialing.png
new file mode 100644
index 0000000..b81b603
--- /dev/null
+++ b/InCallUI/res/drawable-mdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-mdpi/picture_unknown.png b/InCallUI/res/drawable-mdpi/picture_unknown.png
index cc5dd09..1ee333c 100644
--- a/InCallUI/res/drawable-mdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-mdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/business_unknown.png b/InCallUI/res/drawable-xhdpi/business_unknown.png
new file mode 100644
index 0000000..aa84456
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/endcall_active.png b/InCallUI/res/drawable-xhdpi/endcall_active.png
deleted file mode 100644
index 5347ed2..0000000
--- a/InCallUI/res/drawable-xhdpi/endcall_active.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/endcall_background_texture.png b/InCallUI/res/drawable-xhdpi/endcall_background_texture.png
deleted file mode 100644
index c94eeec..0000000
--- a/InCallUI/res/drawable-xhdpi/endcall_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/endcall_disable.png b/InCallUI/res/drawable-xhdpi/endcall_disable.png
deleted file mode 100644
index fa10196..0000000
--- a/InCallUI/res/drawable-xhdpi/endcall_disable.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_dial_end_call.png b/InCallUI/res/drawable-xhdpi/ic_dial_end_call.png
deleted file mode 100644
index c24ec98..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_dial_end_call.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_end_call_holo_dark.png b/InCallUI/res/drawable-xhdpi/ic_end_call_holo_dark.png
deleted file mode 100644
index f64f5e3..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_end_call_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_in_call_bt_dk.png b/InCallUI/res/drawable-xhdpi/ic_in_call_bt_dk.png
new file mode 100644
index 0000000..8ca78f4
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/ic_in_call_bt_dk.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_in_call_phone_hangup.png b/InCallUI/res/drawable-xhdpi/ic_in_call_phone_hangup.png
new file mode 100644
index 0000000..1d1bfeb
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/ic_in_call_phone_hangup.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/ic_incoming_call_bluetooth.png b/InCallUI/res/drawable-xhdpi/ic_incoming_call_bluetooth.png
deleted file mode 100644
index 662e7bb..0000000
--- a/InCallUI/res/drawable-xhdpi/ic_incoming_call_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/list_pressed_holo_dark.9.png b/InCallUI/res/drawable-xhdpi/list_pressed_holo_dark.9.png
index e4b3393..29037a0 100644
--- a/InCallUI/res/drawable-xhdpi/list_pressed_holo_dark.9.png
+++ b/InCallUI/res/drawable-xhdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/picture_dialing.png b/InCallUI/res/drawable-xhdpi/picture_dialing.png
new file mode 100644
index 0000000..792cd8e
--- /dev/null
+++ b/InCallUI/res/drawable-xhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-xhdpi/picture_unknown.png b/InCallUI/res/drawable-xhdpi/picture_unknown.png
index b8ee922..db74fd9 100644
--- a/InCallUI/res/drawable-xhdpi/picture_unknown.png
+++ b/InCallUI/res/drawable-xhdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/business_unknown.png b/InCallUI/res/drawable-xxhdpi/business_unknown.png
new file mode 100644
index 0000000..6273bb3
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/business_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_background_texture.png b/InCallUI/res/drawable-xxhdpi/dial_background_texture.png
new file mode 100644
index 0000000..437741c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_background_texture.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_0_no_plus_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_0_no_plus_wht.png
new file mode 100644
index 0000000..36d65c7
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_0_no_plus_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_0_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_0_wht.png
new file mode 100644
index 0000000..3737232
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_0_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_1_no_vm_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_1_no_vm_wht.png
new file mode 100644
index 0000000..a41c678
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_1_no_vm_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_1_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_1_wht.png
new file mode 100644
index 0000000..e2afb2f
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_1_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_2_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_2_wht.png
new file mode 100644
index 0000000..e4dd69e
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_2_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_3_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_3_wht.png
new file mode 100644
index 0000000..42b37c7
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_3_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_4_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_4_wht.png
new file mode 100644
index 0000000..37bf49c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_4_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_5_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_5_wht.png
new file mode 100644
index 0000000..a163848
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_5_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_6_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_6_wht.png
new file mode 100644
index 0000000..3ff9d39
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_6_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_7_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_7_wht.png
new file mode 100644
index 0000000..bc91621
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_7_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_8_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_8_wht.png
new file mode 100644
index 0000000..84b2f1c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_8_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_9_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_9_wht.png
new file mode 100644
index 0000000..ced1c94
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_9_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_pound_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_pound_wht.png
new file mode 100644
index 0000000..ab2758c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_pound_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/dial_num_star_wht.png b/InCallUI/res/drawable-xxhdpi/dial_num_star_wht.png
new file mode 100644
index 0000000..75ce198
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/dial_num_star_wht.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_ab_dialer_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_ab_dialer_holo_dark.png
new file mode 100644
index 0000000..3c8021c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_ab_dialer_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_active_state_dialer_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_active_state_dialer_holo_dark.png
new file mode 100644
index 0000000..26a22ba
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_active_state_dialer_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_add_contact_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 0000000..6eed276
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_bluetooth_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_bluetooth_holo_dark.png
new file mode 100644
index 0000000..4b668b7
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_bluetooth_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_dialpad_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_dialpad_holo_dark.png
new file mode 100644
index 0000000..c8ce94b
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_dialpad_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000..6fdaa5d
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_groups_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_hold_pause_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_hold_pause_holo_dark.png
new file mode 100644
index 0000000..e38bea1
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_hold_pause_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_in_call_bt_dk.png b/InCallUI/res/drawable-xxhdpi/ic_in_call_bt_dk.png
new file mode 100644
index 0000000..e94c772
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_in_call_bt_dk.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_in_call_phone_hangup.png b/InCallUI/res/drawable-xxhdpi/ic_in_call_phone_hangup.png
new file mode 100644
index 0000000..67d8ad2
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_in_call_phone_hangup.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png b/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png
new file mode 100644
index 0000000..b41967b
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_in_call_touch_handle_normal.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_incall_switch_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_incall_switch_holo_dark.png
new file mode 100644
index 0000000..67c1d7d
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_incall_switch_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_activated.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_activated.png
new file mode 100644
index 0000000..173b54c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_activated.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
new file mode 100644
index 0000000..fcf4367
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_answer_normal.png
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
new file mode 100644
index 0000000..74b6cf0
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_activated.png
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
new file mode 100644
index 0000000..54b7965
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_decline_normal.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_activated.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_activated.png
new file mode 100644
index 0000000..a4e0048
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_activated.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_normal.png b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_normal.png
new file mode 100644
index 0000000..20ff309
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_lockscreen_text_normal.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_merge_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_merge_holo_dark.png
new file mode 100644
index 0000000..a7125af
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_merge_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_more_indicator_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_more_indicator_holo_dark.png
new file mode 100644
index 0000000..42f6549
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_more_indicator_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_mute_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_mute_holo_dark.png
new file mode 100644
index 0000000..678b7fb
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_mute_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_bluetooth_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_bluetooth_holo_dark.png
new file mode 100644
index 0000000..8646bec
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_sound_bluetooth_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_handset_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_handset_holo_dark.png
new file mode 100644
index 0000000..7f89efb
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_sound_handset_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_holo_dark.png
new file mode 100644
index 0000000..5d36d4e
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_sound_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png
new file mode 100644
index 0000000..caf36e0
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_sound_off_speakerphone_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png
new file mode 100644
index 0000000..e6e974f
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_sound_speakerphone_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/ic_split_holo_dark.png b/InCallUI/res/drawable-xxhdpi/ic_split_holo_dark.png
new file mode 100644
index 0000000..16b6ac0
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/ic_split_holo_dark.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/list_focused_holo.9.png b/InCallUI/res/drawable-xxhdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..3e4ca68
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/list_pressed_holo_dark.9.png b/InCallUI/res/drawable-xxhdpi/list_pressed_holo_dark.9.png
new file mode 100644
index 0000000..d4952ea
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/list_pressed_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.png b/InCallUI/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.png
new file mode 100644
index 0000000..26234b1
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/list_selector_disabled_holo_dark.9.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/picture_conference.png b/InCallUI/res/drawable-xxhdpi/picture_conference.png
new file mode 100644
index 0000000..e3dd686
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/picture_conference.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/picture_dialing.png b/InCallUI/res/drawable-xxhdpi/picture_dialing.png
new file mode 100644
index 0000000..17d45f5
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/picture_dialing.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/picture_unknown.png b/InCallUI/res/drawable-xxhdpi/picture_unknown.png
new file mode 100644
index 0000000..38bec2c
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/picture_unknown.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call.png b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call.png
new file mode 100644
index 0000000..9348384
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_end.png b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_end.png
new file mode 100644
index 0000000..1f3a81b
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_end.png
Binary files differ
diff --git a/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_on_hold.png b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_on_hold.png
new file mode 100644
index 0000000..6403ce8
--- /dev/null
+++ b/InCallUI/res/drawable-xxhdpi/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/InCallUI/res/drawable/dialpad_background.xml b/InCallUI/res/drawable/dialpad_background.xml
deleted file mode 100644
index 0e31f5e..0000000
--- a/InCallUI/res/drawable/dialpad_background.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/dial_background_texture"
-    android:tileMode="repeat" />
diff --git a/InCallUI/res/drawable/dialpad_background_opaque.xml b/InCallUI/res/drawable/dialpad_background_opaque.xml
deleted file mode 100644
index d8792f2..0000000
--- a/InCallUI/res/drawable/dialpad_background_opaque.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Opaque version of dialpad_background.xml. -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!-- An opaque black layer underneath. -->
-    <item android:drawable="@android:color/black" />
-
-    <!-- ...and the "dial_background_texture" tiled on top. -->
-    <item>
-        <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-                android:src="@drawable/dial_background_texture"
-                android:tileMode="repeat" />
-    </item>
-
-</layer-list>
diff --git a/InCallUI/res/drawable/end_call_background.xml b/InCallUI/res/drawable/end_call_background.xml
index 33ec22f..53f4e54 100644
--- a/InCallUI/res/drawable/end_call_background.xml
+++ b/InCallUI/res/drawable/end_call_background.xml
@@ -17,29 +17,12 @@
 <!-- Background drawable used to render the "end call" button. -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item android:state_enabled="false">
-        <bitmap
-            android:src="@drawable/endcall_disable"
-            android:tileMode="repeat" />
-    </item>
+    <item android:state_enabled="false"
+          android:drawable="@drawable/end_call_disabled_state" />
 
-    <item android:state_pressed="true">
-        <bitmap
-            android:src="@drawable/endcall_active"
-            android:tileMode="repeat" />
-    </item>
+    <item android:state_pressed="true"
+          android:drawable="@drawable/end_call_pressed_state" />
 
-    <item>
-        <layer-list>
-            <item>
-                <bitmap
-                    android:src="@drawable/endcall_background_texture"
-                    android:tileMode="repeat" />
-            </item>
-
-            <!-- The standard "compound button" background. -->
-            <item android:drawable="@drawable/btn_compound_background" />
-        </layer-list>
-    </item>
+    <item android:drawable="@drawable/end_call_active_state" />
 
 </selector>
diff --git a/InCallUI/res/layout/answer_fragment.xml b/InCallUI/res/layout/answer_fragment.xml
index 4f31e3f..ee2b076 100644
--- a/InCallUI/res/layout/answer_fragment.xml
+++ b/InCallUI/res/layout/answer_fragment.xml
@@ -24,6 +24,7 @@
         android:layout_height="wrap_content"
         android:focusable="true"
         android:layout_centerHorizontal="true"
+        android:gravity="center"
         android:background="@android:color/black"
         android:visibility="gone"
 
diff --git a/InCallUI/res/layout/call_button_fragment.xml b/InCallUI/res/layout/call_button_fragment.xml
index 6a76a1c..420d2aa 100644
--- a/InCallUI/res/layout/call_button_fragment.xml
+++ b/InCallUI/res/layout/call_button_fragment.xml
@@ -51,7 +51,8 @@
     <ImageButton android:id="@+id/endButton"
                  style="@style/InCallEndButton"
                  android:layout_width="match_parent"
-                 android:src="@drawable/ic_dial_end_call"
+                 android:layout_marginTop="2dp"
+                 android:src="@drawable/ic_in_call_phone_hangup"
                  android:background="@drawable/end_call_background"
                  android:contentDescription="@string/onscreenEndCallText"/>
 
@@ -63,9 +64,9 @@
             android:orientation="horizontal"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:background="@drawable/dialpad_background"
             android:paddingStart="@dimen/button_cluster_side_padding"
             android:paddingEnd="@dimen/button_cluster_side_padding"
+            android:background="@color/button_background"
             >
 
         <!-- This row has either 4 or 5 buttons, depending on
diff --git a/InCallUI/res/layout/caller_in_conference.xml b/InCallUI/res/layout/caller_in_conference.xml
index c2c68c8..924bc63 100644
--- a/InCallUI/res/layout/caller_in_conference.xml
+++ b/InCallUI/res/layout/caller_in_conference.xml
@@ -99,7 +99,7 @@
          android:id="@+id/conferenceCallerDisconnect"
          android:layout_width="80dp"
          android:layout_height="match_parent"
-         android:src="@drawable/ic_end_call_holo_dark"
+         android:src="@drawable/ic_in_call_phone_hangup"
          android:background="@drawable/end_call_background"
          android:scaleType="center"
          android:contentDescription="@string/onscreenEndCallText" />
diff --git a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
index c4fecf3..fe84010 100644
--- a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
+++ b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
@@ -60,7 +60,7 @@
         android:paddingStart="5dip"
         android:paddingEnd="5dip"
         android:paddingBottom="10dip"
-        android:background="@drawable/dialpad_background"
+        android:background="@color/dialpad_background"
         android:layoutDirection="ltr">
 
         <TableRow
diff --git a/InCallUI/res/layout/extra_button_row.xml b/InCallUI/res/layout/extra_button_row.xml
index a1600e8..ade3e4e 100644
--- a/InCallUI/res/layout/extra_button_row.xml
+++ b/InCallUI/res/layout/extra_button_row.xml
@@ -18,7 +18,7 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/dialpad_background_opaque">
+    android:background="@color/button_background">
     <!-- The buttons here have a text label floating off to the side
          (which is necessary because these buttons are used only in
          a few rare states, and the meaning of the icon might not be
diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml
index 681519b..0d37a73 100644
--- a/InCallUI/res/layout/primary_call_info.xml
+++ b/InCallUI/res/layout/primary_call_info.xml
@@ -38,77 +38,81 @@
             android:orientation="vertical">
 
         <!-- "Call Banner" for primary call, the foregound or ringing call.
-             The "call banner" is a block of info about a single call,
-             including the contact name, phone number, call time counter,
-             and other status info.  This info is shown as a "banner"
-             overlaid across the top of contact photo. -->
-        <GridLayout android:id="@+id/primary_call_banner"
-                    style="@style/PrimaryCallInfoPrimaryCallBanner"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:minHeight="@dimen/call_banner_height"
-                    android:background="@color/incall_call_banner_background"
-                    android:paddingStart="@dimen/call_banner_side_padding"
-                    android:paddingEnd="@dimen/call_banner_side_padding"
-                    android:paddingTop="@dimen/call_banner_top_bottom_padding"
-                    android:paddingBottom="@dimen/call_banner_top_bottom_padding">
+         The "call banner" is a block of info about a single call,
+         including the contact name, phone number, call time counter,
+         and other status info.  This info is shown as a "banner"
+         overlaid across the top of contact photo. -->
+        <RelativeLayout android:id="@+id/primary_call_banner"
+            style="@style/PrimaryCallInfoPrimaryCallBanner"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:minHeight="@dimen/call_banner_height"
+            android:paddingStart="@dimen/call_banner_side_padding"
+            android:paddingEnd="@dimen/call_banner_side_padding"
+            android:paddingTop="@dimen/call_banner_top_bottom_padding"
+            android:paddingBottom="@dimen/call_banner_top_bottom_padding"
+            android:background="@color/incall_call_banner_background">
 
             <!-- Name (or the phone number, if we don't have a name to display). -->
             <TextView android:id="@+id/name"
-                      android:textAppearance="?android:attr/textAppearanceMedium"
-                      android:textColor="@color/incall_call_banner_text_color"
-                      android:singleLine="true"
-                      android:textAlignment="viewStart"
-                      android:layout_column="0"
-                      android:layout_row="0"
-                      android:layout_columnSpan="2"
-                      android:layout_gravity="fill"/>
+                android:layout_alignParentTop="true"
+                android:layout_alignParentStart="true"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingEnd="@dimen/call_banner_name_number_right_padding"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="@color/incall_call_banner_text_color"
+                android:singleLine="true"
+                android:textAlignment="viewStart"/>
 
             <!-- Label (like "Mobile" or "Work", if present) and phone number, side by side -->
-            <TextView android:id="@+id/phoneNumber"
-                      android:textAppearance="?android:attr/textAppearanceSmall"
-                      android:textColor="@color/incall_call_banner_text_color"
-                      android:singleLine="true"
-                      android:textDirection="ltr"
-                      android:layout_column="0"
-                      android:layout_row="1"
-                      android:layout_gravity="fill"/>
+            <LinearLayout android:id="@+id/labelAndNumber"
+                android:layout_below="@id/name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:paddingEnd="@dimen/call_banner_name_number_right_padding"
+                android:orientation="horizontal">
+                <TextView android:id="@+id/phoneNumber"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="@color/incall_call_banner_text_color"
+                    android:singleLine="true"
+                    android:textDirection="ltr" />
+                <TextView android:id="@+id/label"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="@color/incall_call_banner_text_color"
+                    android:textAllCaps="true"
+                    android:singleLine="true"
+                    android:layout_marginStart="6dp" />
+            </LinearLayout>
 
-            <TextView android:id="@+id/label"
-                      android:textAppearance="?android:attr/textAppearanceSmall"
-                      android:textColor="@color/incall_call_banner_text_color"
-                      android:textAllCaps="true"
-                      android:singleLine="true"
-                      android:paddingStart="6dp"
-                      android:layout_column="1"
-                      android:layout_row="1"
-                      android:layout_gravity="fill"/>
+            <!-- Elapsed time indication for a call in progress. -->
+            <TextView android:id="@+id/elapsedTime"
+                android:layout_alignParentEnd="true"
+                android:layout_centerVertical="true"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="@color/incall_call_banner_text_color"
+                android:singleLine="true"
+                android:visibility="invisible" />
 
             <!-- Call type indication: a special label and/or branding
                  for certain kinds of calls (like "Internet call" for a SIP call.) -->
             <TextView android:id="@+id/callTypeLabel"
-                      android:textAppearance="?android:attr/textAppearanceSmall"
-                      android:textColor="@color/incall_call_banner_text_color"
-                      android:maxLines="1"
-                      android:layout_column="0"
-                      android:layout_row="2"
-                      android:layout_columnSpan="2"
-                      android:ellipsize="end"
-                      android:layout_gravity="fill"/>
+                android:layout_below="@id/labelAndNumber"
+                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" />
 
-            <!-- Elapsed time indication for a call in progress. -->
-            <TextView android:id="@+id/elapsedTime"
-                      android:textAppearance="?android:attr/textAppearanceMedium"
-                      android:textColor="@color/incall_call_banner_text_color"
-                      android:singleLine="true"
-                      android:visibility="invisible"
-                      android:layout_column="2"
-                      android:layout_row="0"
-                      android:layout_rowSpan="3"
-                      android:layout_gravity="fill"
-                      android:gravity="end|center_vertical"/>
-        </GridLayout>
-        <!-- End of call_banner -->
+        </RelativeLayout>  <!-- End of call_banner -->
+
 
         <LinearLayout android:id="@+id/supplementary_info_container"
             style="@style/PrimaryCallInfoSupplementaryInfoContainer"
@@ -167,7 +171,7 @@
                       android:textAppearance="?android:attr/textAppearanceSmall"
                       android:textColor="@color/incall_call_banner_text_color"
                       android:textAllCaps="true"
-                      android:background="@color/incall_secondary_info_background"
+                      android:background="@android:color/transparent"
                       android:singleLine="true"
                       android:ellipsize="end"/>
         </LinearLayout>
diff --git a/InCallUI/res/layout/secondary_call_info.xml b/InCallUI/res/layout/secondary_call_info.xml
index 97bc0bf..787dc59 100644
--- a/InCallUI/res/layout/secondary_call_info.xml
+++ b/InCallUI/res/layout/secondary_call_info.xml
@@ -43,18 +43,19 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/call_banner_height"
         android:paddingStart="@dimen/call_banner_side_padding"
-        android:paddingEnd="@dimen/call_banner_side_padding"
+        android:paddingEnd="@dimen/secondary_call_banner_right_padding"
         android:paddingTop="@dimen/call_banner_top_bottom_padding"
         android:paddingBottom="@dimen/call_banner_top_bottom_padding"
         android:background="@color/incall_call_banner_background">
         <!-- Name (or the phone number, if we don't have a name to display). -->
         <TextView android:id="@+id/secondaryCallName"
             style="@style/SecondaryCallInfoSecondaryCallName"
-            android:layout_gravity="top|start"
+            android:layout_gravity="bottom|start"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:textColor="@color/incall_call_banner_text_color"
+            android:ellipsize="marquee"
             android:singleLine="true"/>
     </FrameLayout>
 
@@ -63,7 +64,7 @@
         style="@style/SecondaryCallInfoSecondaryCallStatus"
         android:layout_width="wrap_content"
         android:layout_height="@dimen/call_banner_height"
-        android:gravity="top|end"
+        android:gravity="bottom|end"
         android:layout_gravity="end"
         android:paddingStart="@dimen/call_banner_side_padding"
         android:paddingEnd="@dimen/call_banner_side_padding"
diff --git a/InCallUI/res/values-af/strings.xml b/InCallUI/res/values-af/strings.xml
index 4cf802b..3a423c8 100644
--- a/InCallUI/res/values-af/strings.xml
+++ b/InCallUI/res/values-af/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ek bel jou later."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan nie nou praat nie. Bel my later?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Skryf jou eie..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Vinnige antwoorde"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redigeer vinnige antwoorde"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-am/strings.xml b/InCallUI/res/values-am/strings.xml
index 236feb5..9c63e82 100644
--- a/InCallUI/res/values-am/strings.xml
+++ b/InCallUI/res/values-am/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ኋላ እደውላለሁ።"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"አሁን ማውራት አልችልም። ትንሽ ቆይተው ይደውሉ?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"የእራስዎን ይጻፉ..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ፈጣን ምላሾች"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ፈጣን ምላሾች አርትዕ"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ar/strings.xml b/InCallUI/res/values-ar/strings.xml
index 3627fcd..b69714b 100644
--- a/InCallUI/res/values-ar/strings.xml
+++ b/InCallUI/res/values-ar/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"سأتصل بك لاحقًا."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"لا يمكنني التحدث الآن. اتصل بي لاحقًا."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"اكتب ردك..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"الردود السريعة"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"تعديل الردود السريعة"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-be/strings.xml b/InCallUI/res/values-be/strings.xml
index b1e691c..d41b780 100644
--- a/InCallUI/res/values-be/strings.xml
+++ b/InCallUI/res/values-be/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я патэлефаную пазней."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не магу размаўляць. Набяры пазней."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Напiшыце сваё..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Хуткія адказы"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Рэдагаваць хуткія адказы"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-bg/strings.xml b/InCallUI/res/values-bg/strings.xml
index 49116b5..3477f92 100644
--- a/InCallUI/res/values-bg/strings.xml
+++ b/InCallUI/res/values-bg/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ще ви се обадя по-късно."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Сега не мога да говоря. По-късно?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Напишете свой собствен..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Бързи отговори"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Редактиране на бързи отговори"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml
index 02e1b8c..638fb32 100644
--- a/InCallUI/res/values-ca/strings.xml
+++ b/InCallUI/res/values-ca/strings.xml
@@ -502,7 +502,7 @@
     <string name="voicemail_provider" msgid="5135942703327136909">"Servei"</string>
     <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 configuració de trucades"</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="contactPhoto" msgid="4713193418046639466">"foto de contacte"</string>
     <string name="goPrivate" msgid="865837794424530980">"passa a privat"</string>
@@ -521,7 +521,7 @@
     <string name="pick_outgoing_call_phone_type" msgid="5622916534828338675">"Fes una trucada"</string>
     <string name="pick_outgoing_sip_phone" msgid="7012322118236208875">"Utilitza el compte per a trucades per Internet:"</string>
     <string name="remember_my_choice" msgid="7058059586169290705">"Utilitza-ho sempre per fer trucades per Internet"</string>
-    <string name="reset_my_choice_hint" msgid="5523030209803567922">"Pots canviar quin compte vols utilitzar com a opció predeterminada per a les trucades per Internet del telèfon a la pantalla &gt; Configuració &gt; Configuració de les trucades per Internet &gt; Comptes."</string>
+    <string name="reset_my_choice_hint" msgid="5523030209803567922">"Pots canviar el compte de trucades per Internet que vols utilitzar de manera predeterminada, accedeix a Telèfon &gt; Configuració &gt; Configuració de trucades per Internet &gt; Comptes."</string>
     <string name="pstn_phone" msgid="8782554491484326429">"Trucada amb telèfon mòbil"</string>
     <string name="internet_phone" msgid="1147922660195095810">"Trucada per Internet"</string>
     <string name="no_sip_account_found_title" msgid="6266249392379373628">"No hi ha cap compte per a trucades per Internet"</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Et truco més tard."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ara no puc parlar. Truques després?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escriu la teva…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostes ràpides"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edita les respostes ràpides"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
@@ -614,10 +618,10 @@
     <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">"To del telèfon"</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="dtmf_tone_enable_title" msgid="827601042915852989">"Sonar en marcar els números"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Autocompletar amb teclat"</string>
-    <string name="preference_category_ringtone" msgid="5197960752529332721">"To i vibració"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"So i vibració"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestiona la trucada de conferència"</string>
 </resources>
diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml
index 85f4f42..2fe3141 100644
--- a/InCallUI/res/values-cs/strings.xml
+++ b/InCallUI/res/values-cs/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zavolám později."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nemůžu telefonovat, volejte jindy."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napsat vlastní odpověď..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Rychlé odpovědi"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Upravit rychlé odpovědi"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-da/strings.xml b/InCallUI/res/values-da/strings.xml
index abba97d..a12972a 100644
--- a/InCallUI/res/values-da/strings.xml
+++ b/InCallUI/res/values-da/strings.xml
@@ -68,7 +68,7 @@
     <string name="labelCDMAMore" msgid="1630676740428229339">"Indstillinger for CDMA-opkald"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Navn på adgangspunkt"</string>
     <string name="settings_label" msgid="3876743539816984008">"Indstillinger for netværk"</string>
-    <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Telefonsvarer"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
     <string name="networks" msgid="8873030692174541976">"Netværksudbydere"</string>
     <string name="call_settings" msgid="6112441768261754562">"Indstillinger for opkald"</string>
@@ -131,7 +131,7 @@
     <string name="fw_change_failed" msgid="5298103228470214665">"Telefonsvarernummeret kunne ikke ændres.\nKontakt dit mobilselskab, hvis problemet vedbliver."</string>
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"De aktuelle indstillinger til viderestillingsnummer kunne ikke hentes og gemmes.\nVil du skifte til den nye udbyder alligevel?"</string>
     <string name="no_change" msgid="3186040086622435212">"Der blev ikke foretaget nogen ændringer."</string>
-    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Vælg voicemail-tjeneste"</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Vælg telefonsvarertjeneste"</string>
     <string name="voicemail_default" msgid="5902099213882352338">"Min udbyder"</string>
     <string name="mobile_networks" msgid="5540397602919106177">"Indstillinger for mobilnetværk"</string>
     <string name="label_available" msgid="1181658289009300430">"Tilgængelige netværk"</string>
@@ -407,8 +407,8 @@
     <string name="notification_ongoing_call" msgid="7068688957273482989">"Igangværende opkald"</string>
     <string name="notification_on_hold" msgid="3480694969511790465">"Ventende"</string>
     <string name="notification_incoming_call" msgid="2820429205043529642">"Indgående opkald"</string>
-    <string name="notification_voicemail_title" msgid="8933468752045550523">"Ny voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Ny voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Ny telefonsvarerbesked"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nye telefonsvarerbeskeder (<xliff:g id="COUNT">%d</xliff:g>)"</string>
     <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Ring til <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemailnummeret er ukendt"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ingen dækning"</string>
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jeg ringer til dig senere."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan ikke tale nu. Ringer du senere?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Skriv dit eget..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hurtige svar"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Rediger hurtige svar"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-de/strings.xml b/InCallUI/res/values-de/strings.xml
index c3776aa..ece9de5 100644
--- a/InCallUI/res/values-de/strings.xml
+++ b/InCallUI/res/values-de/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ich rufe später zurück."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kann jetzt nicht sprechen. Später?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Eigene Antwort schreiben..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Kurzantworten"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Kurzantworten bearbeiten"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml
index ed22979..127702a 100644
--- a/InCallUI/res/values-el/strings.xml
+++ b/InCallUI/res/values-el/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Θα σου τηλεφωνήσω αργότερα."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Δεν μπορώ τώρα. Πάρε με αργότερα."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Συντάξτε τη δική σας…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Γρήγορες απαντήσεις"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Επεξεργασία γρήγορων απαντήσεων"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-en-rGB/strings.xml b/InCallUI/res/values-en-rGB/strings.xml
index 55abb56..1b0de27 100644
--- a/InCallUI/res/values-en-rGB/strings.xml
+++ b/InCallUI/res/values-en-rGB/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Write your own..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-en-rIN/strings.xml b/InCallUI/res/values-en-rIN/strings.xml
index 55abb56..1b0de27 100644
--- a/InCallUI/res/values-en-rIN/strings.xml
+++ b/InCallUI/res/values-en-rIN/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"I\'ll call you later."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Can\'t talk now. Call me later?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Write your own..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Quick responses"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit quick responses"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-es-rUS/strings.xml b/InCallUI/res/values-es-rUS/strings.xml
index 96c4ed7..4bf82cf 100644
--- a/InCallUI/res/values-es-rUS/strings.xml
+++ b/InCallUI/res/values-es-rUS/strings.xml
@@ -86,7 +86,7 @@
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Durante una llamada, notificarme sobre las llamadas entrantes"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Durante una llamada, notificarme sobre las llamadas entrantes"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"Configuración de reenvío de llamadas"</string>
-    <string name="labelCF" msgid="2574386948026924737">"Reenvío de llamada"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Desvío de llamadas"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Reenviar siempre"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Usar siempre este número"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Reenviar todas las llamadas"</string>
@@ -369,7 +369,7 @@
     <string name="pin_changed" msgid="4365538014588501049">"El PIN de la tarjeta SIM se modificó correctamente."</string>
     <string name="puk_requested" msgid="3898394204193202803">"Contraseña incorrecta. La tarjeta SIM está bloqueada. Se solicitó PUK2."</string>
     <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
-    <string name="oldPin2Label" msgid="8559146795026261502">"Reenviar cuando está ocupado"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"PIN2 viejo"</string>
     <string name="newPin2Label" msgid="4573956902204349054">"PIN2 nuevo"</string>
     <string name="confirmPin2Label" msgid="8100319484454787708">"Confirmar PIN2 nuevo"</string>
     <string name="badPuk2" msgid="4851734468010000418">"El PUK2 que ingresaste es incorrecto. Vuelve a intentarlo."</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Te llamo más tarde."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"No puedo hablar ahora. ¿Me llamas más tarde?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escribe tu propia respuesta..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respuestas rápidas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respuestas rápidas"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
@@ -616,7 +620,7 @@
     <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="dtmf_tone_enable_title" msgid="827601042915852989">"Tonos táctiles del teclado de marcado"</string>
+    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Tonos táctiles del teclado"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Completar automáticamente 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>
diff --git a/InCallUI/res/values-es/strings.xml b/InCallUI/res/values-es/strings.xml
index 6bb3b32..66577a9 100644
--- a/InCallUI/res/values-es/strings.xml
+++ b/InCallUI/res/values-es/strings.xml
@@ -519,7 +519,7 @@
     <string name="sip_call_options_title" msgid="27433718808839672">"Llamadas por Internet"</string>
     <string name="sip_call_options_wifi_only_title" msgid="145572394529090811">"Llamadas por Internet (Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="6556668894178520760">"Para todas las llamadas cuando haya redes de datos disponibles"</string>
-    <string name="sip_call_options_entry_2" msgid="6789764029719494361">"Solo llamadas Internet"</string>
+    <string name="sip_call_options_entry_2" msgid="6789764029719494361">"Solo para llamadas de Internet"</string>
     <string name="sip_call_options_entry_3" msgid="7474809001402649185">"Preguntar cada vez"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="7423523864471650069">"En todas las llamadas"</string>
     <string name="pick_outgoing_call_phone_type" msgid="5622916534828338675">"Llamadas"</string>
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Te llamo más tarde."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"No puedo hablar. Llámame luego."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escribe tu propia respuesta..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respuestas rápidas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respuestas rápidas"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-et-rEE/strings.xml b/InCallUI/res/values-et-rEE/strings.xml
index 8c44da7..4f03b6d 100644
--- a/InCallUI/res/values-et-rEE/strings.xml
+++ b/InCallUI/res/values-et-rEE/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Helistan sulle hiljem."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ei saa rääkida. Helistad hiljem?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Kirjutage ise …"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Kiirvastused"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Kiirvastuste muutmine"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-fa/strings.xml b/InCallUI/res/values-fa/strings.xml
index f80f6eb..71d6c84 100644
--- a/InCallUI/res/values-fa/strings.xml
+++ b/InCallUI/res/values-fa/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"بعداً با شما تماس می‌گیرم."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"اکنون نمی‌توانم صحبت کنم. بعداً به من زنگ می‌زنید؟"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"نوشتن پاسخ خود…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"پاسخ‌های سریع"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ویرایش پاسخ‌های سریع"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-fi/strings.xml b/InCallUI/res/values-fi/strings.xml
index d900183..dfa12b1 100644
--- a/InCallUI/res/values-fi/strings.xml
+++ b/InCallUI/res/values-fi/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Soitan sinulle myöhemmin."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"En voi puhua nyt. Soita myöhemmin?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Kirjoita oma…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Pikavastaukset"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Muokkaa pikavastausta"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-fr-rCA/strings.xml b/InCallUI/res/values-fr-rCA/strings.xml
index 79c41c9..e18ec6d 100644
--- a/InCallUI/res/values-fr-rCA/strings.xml
+++ b/InCallUI/res/values-fr-rCA/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Je t\'appellerai plus tard."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Peux pas parler. On se rappelle?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Réponse personnalisée..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Réponses rapides"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modif. rép. rapides"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-fr/strings.xml b/InCallUI/res/values-fr/strings.xml
index b3dd8c8..06c1320 100644
--- a/InCallUI/res/values-fr/strings.xml
+++ b/InCallUI/res/values-fr/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Je t\'appellerai plus tard."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Peux pas parler. On se rappelle ?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Réponse personnalisée..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Réponses rapides"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modifier les réponses rapides"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml
index 825c082..48fefe4 100644
--- a/InCallUI/res/values-hi/strings.xml
+++ b/InCallUI/res/values-hi/strings.xml
@@ -111,16 +111,16 @@
     <string name="updating_title" msgid="6146755386174019046">"कॉल सेटिंग"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"कॉल सेटिंग त्रुटि"</string>
     <string name="reading_settings" msgid="1920291699287055284">"सेटिंग पढ़ रहा है..."</string>
-    <string name="updating_settings" msgid="8171225533884883252">"सेटिंग अपडेट कर रहा है..."</string>
+    <string name="updating_settings" msgid="8171225533884883252">"सेटिंग के लिए नई जानकारी मिल रही है..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"सेटिंग वापस ला रहा है..."</string>
     <string name="response_error" msgid="6674110501330139405">"नेटवर्क से अनपेक्षित प्रतिसाद."</string>
     <string name="exception_error" msgid="7027667130619518211">"नेटवर्क या सिम कार्ड त्रुटि."</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"आपके फ़ोन एप्‍लिकेशन की फ़िक्‍स्‍ड डायलिंग नंबर सेटिंग चालू है. इसके परिणामस्‍वरूप, कॉल से संबंधित कुछ सुविधाएं कार्य नहीं कर रही हैं."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"आपके फ़ोन एप्‍स की फ़िक्‍स्‍ड डायलिंग नंबर सेटिंग चालू है. इसके परिणामस्‍वरूप, कॉल से संबंधित कुछ सुविधाएं कार्य नहीं कर रही हैं."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"इन सेटिंग को देखने के पहले रेडियो चालू करें."</string>
     <string name="close_dialog" msgid="2365884406356986917">"ठीक है"</string>
     <string name="enable" msgid="1059008390636773574">"सक्षम करें"</string>
     <string name="disable" msgid="7274240979164762320">"अक्षम करें"</string>
-    <string name="change_num" msgid="239476305819844391">"अपडेट करें"</string>
+    <string name="change_num" msgid="239476305819844391">"नई जानकारी पाएं"</string>
   <string-array name="clir_display_values">
     <item msgid="5560134294467334594">"नेटवर्क सामान्य"</item>
     <item msgid="7876195870037833661">"नंबर छुपाएं"</item>
@@ -339,14 +339,14 @@
     <string name="adding_fdn_contact" msgid="7627379633721940991">"फ़िक्स्ड डायलिंग नंबर जोड़ रहा है..."</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"फ़िक्स्ड डायलिंग नंबर जोड़ा गया."</string>
     <string name="edit_fdn_contact" msgid="7976936035587081480">"फ़िक्स्ड डायलिंग नंबर संपादित करें"</string>
-    <string name="updating_fdn_contact" msgid="8370929876849803600">"फ़िक्स्ड डायलिंग नंबर अपडेट कर रहा है…"</string>
-    <string name="fdn_contact_updated" msgid="5497828782609005017">"फ़िक्स्ड डायलिंग नंबर अपडेट किया गया."</string>
+    <string name="updating_fdn_contact" msgid="8370929876849803600">"फ़िक्स्ड डायलिंग नंबर के लिए नई जानकारी…"</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"फ़िक्स्ड डायलिंग नंबर के लिए नई जानकारी."</string>
     <string name="delete_fdn_contact" msgid="6668958073074151717">"फ़िक्स्ड डायलिंग नंबर हटाएं"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"फ़िक्स्ड डायलिंग नंबर हटा रहा है..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"फ़िक्स्ड डायलिंग नंबर हटाया गया."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"FDN अपडेट नहीं किया गया था क्योंकि आपने गलत पिन लिखा है."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN अपडेट नहीं था क्योंकि नंबर में 20 से अधिक अंक नहीं हो सकते."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN अपडेट नहीं किया गया था. PIN2 गलत था, या फ़ोन नंबर अस्वीकृत था."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"FDN पे नई जानकारी नहीं है क्योंकि आपने गलत पिन लिखा है."</string>
+    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN पे नई जानकारी नहीं है क्योंकि नंबर में 20 से अधिक अंक नहीं हो सकते."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN पे नई जानकारी नहीं है. PIN2 गलत था, या फ़ोन नंबर अस्वीकृत था."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"सिम कार्ड से पढ़ रहा है…"</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"आपके सिम कार्ड पर कोई संपर्क नहीं है."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"आयात करने के लिए संपर्कों को चुनें"</string>
@@ -487,8 +487,8 @@
     <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> मिनट के लिए कोई डेटा कनेक्शन नहीं"</item>
   </plurals>
   <plurals name="alert_dialog_exit_ecm">
-    <item quantity="one" msgid="8060210887681426682">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी एप्लिकेशन का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
-    <item quantity="other" msgid="8617116564023933114">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी एप्लिकेशन का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
+    <item quantity="one" msgid="8060210887681426682">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी एप्स का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
+    <item quantity="other" msgid="8617116564023933114">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी एप्स का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
   </plurals>
   <plurals name="alert_dialog_not_avaialble_in_ecm">
     <item quantity="one" msgid="2585506997024726599">"आपातकालीन कॉलबैक मोड के समय चयनित क्रिया उपलब्ध नहीं है. फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट तक इस मोड में रहेगा. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
@@ -549,7 +549,7 @@
     <string name="registration_status_failed_try_later" msgid="5214474354451220581">"खाता पंजीकरण विफल: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); बाद में पुन: प्रयास किया जाएगा"</string>
     <string name="registration_status_invalid_credentials" msgid="4908446367559341757">"खाता पंजीकरण विफल: गलत उपयोगकर्ता नाम या पासवर्ड."</string>
     <string name="registration_status_server_unreachable" msgid="5733421582468991276">"खाता पंजीकरण विफल: सर्वर नाम जांचें."</string>
-    <string name="third_party_account_summary" msgid="2532526738862533028">"वर्तमान में इस खाते का उपयोग <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> एप्लिकेशन द्वारा किया जा रहा है."</string>
+    <string name="third_party_account_summary" msgid="2532526738862533028">"वर्तमान में इस खाते का उपयोग <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> एप्स द्वारा किया जा रहा है."</string>
     <string name="sip_edit_title" msgid="489288416435014385">"SIP खाता विवरण"</string>
     <string name="sip_edit_new_title" msgid="3659149255856520385">"SIP खाता विवरण"</string>
     <string name="domain_address_title" msgid="9071787581316160480">"सर्वर"</string>
@@ -585,11 +585,15 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"मैं आपको बाद में कॉल करूंगा/करूंगी."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"अभी बात नहीं हो सकती. बाद में कॉल करें?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"अपना स्वयं का लिखें..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"त्वरित प्रतिसाद"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"त्वरित प्रतिसाद संपादित करें"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
     <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"त्वरित प्रतिसाद"</string>
-    <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"डिफ़ॉल्ट एप्लिकेशन रीसेट करें"</string>
+    <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"डिफ़ॉल्ट एप्स रीसेट करें"</string>
     <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"<xliff:g id="PHONE_NUMBER">%s</xliff:g> को संदेश भेजा गया."</string>
     <string name="description_image_button_one" msgid="5502718871331943463">"एक"</string>
     <string name="description_image_button_two" msgid="4903738528222924522">"दो"</string>
diff --git a/InCallUI/res/values-hr/strings.xml b/InCallUI/res/values-hr/strings.xml
index 6ee1cbe..d87d49e 100644
--- a/InCallUI/res/values-hr/strings.xml
+++ b/InCallUI/res/values-hr/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zvat ću vas kasnije."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Sada ne mogu razgovarati. Nazovite me kasnije?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napišite odgovor..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Brzi odgovori"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Uređivanje brzih odgovora"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-hu/strings.xml b/InCallUI/res/values-hu/strings.xml
index 07790e2..79e9c92 100644
--- a/InCallUI/res/values-hu/strings.xml
+++ b/InCallUI/res/values-hu/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Később visszahívom."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Most nem alkalmas. Hívna később?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Saját válasz írása..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Gyors válaszok"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Gyors válaszok szerkesztése"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-hy-rAM/strings.xml b/InCallUI/res/values-hy-rAM/strings.xml
index 8cae8d9..172bd83 100644
--- a/InCallUI/res/values-hy-rAM/strings.xml
+++ b/InCallUI/res/values-hy-rAM/strings.xml
@@ -581,7 +581,7 @@
     <string name="no_internet_available_title" msgid="3327109242858406165">"Ինտերնետ կապ չկա"</string>
     <string name="no_wifi_available_title" msgid="747881033089378758">"Wi-Fi կապ չկա"</string>
     <string name="no_internet_available" msgid="7877142631803238549">"Ինտերնետային զանգի կատարման համար նախ ստուգեք ձեր ինտերնետ կապը:"</string>
-    <string name="no_wifi_available" msgid="1225073547318465713">"Ինտերնետային զանգերի համար դուք պետք է միացված լինեք Wi-Fi ցանցին (օգտագործեք Անլար &amp; Ցանցային կարգավորումները):"</string>
+    <string name="no_wifi_available" msgid="1225073547318465713">"Ինտերնետային զանգերի համար դուք պետք է միացված լինեք Wi-Fi ցանցին (օգտագործեք Անլար կապ և Ցանցեր կարգավորումները):"</string>
     <string name="no_voip" msgid="8901474054537199865">"Ինտերնետային զանգերը չեն սպասարկվում"</string>
     <string name="sip_system_decide" msgid="368030746310423471">"Ավտոմատ"</string>
     <string name="sip_always_send_keepalive" msgid="8192080724632877132">"Միշտ ուղարկել"</string>
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ես ձեր մի փոքր ուշ կզանգեմ:"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Չեմ կարող խոսել հիմա: Զանգե՞մ ձեզ մի փոքր ուշ:"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Գրեք ձեր սեփականը..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Արագ պատասխաններ"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Խմբագրել արագ պատասխանները"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-in/strings.xml b/InCallUI/res/values-in/strings.xml
index c87bee3..0136b35 100644
--- a/InCallUI/res/values-in/strings.xml
+++ b/InCallUI/res/values-in/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nanti saya telepon balik."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Tak bisa bicara skrg. Tlp lg nanti?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Tulis respons Anda sendiri…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tanggapan cepat"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit tanggapan cepat"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-it/strings.xml b/InCallUI/res/values-it/strings.xml
index 5e2b144..85875b6 100644
--- a/InCallUI/res/values-it/strings.xml
+++ b/InCallUI/res/values-it/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ti chiamo dopo."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Non posso parlare ora. Mi chiami dopo?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Scrivi risposta personale..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Risposte rapide"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Modifica risposte rapide"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-iw/strings.xml b/InCallUI/res/values-iw/strings.xml
index 89060a8..c55a1c1 100644
--- a/InCallUI/res/values-iw/strings.xml
+++ b/InCallUI/res/values-iw/strings.xml
@@ -115,7 +115,7 @@
     <string name="reverting_settings" msgid="4752151682666912828">"מאחזר הגדרות הקודמות…"</string>
     <string name="response_error" msgid="6674110501330139405">"תגובה לא צפויה מהרשת."</string>
     <string name="exception_error" msgid="7027667130619518211">"שגיאת רשת או שגיאה של כרטיס SIM."</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"הגדרת מספרי החיוג הקבועים של יישום הטלפון שלך מופעלת. כתוצאה מכך, חלק מהתכונות הקשורות לשיחות לא פועלות."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"הגדרת מספרי החיוג הקבועים של אפליקציית הטלפון שלך מופעלת. כתוצאה מכך, חלק מהתכונות הקשורות לשיחות לא פועלות."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"הפעל את הרדיו לפני ההצגה של הגדרות אלה."</string>
     <string name="close_dialog" msgid="2365884406356986917">"אישור"</string>
     <string name="enable" msgid="1059008390636773574">"הפעל"</string>
@@ -487,8 +487,8 @@
     <item quantity="other" msgid="3122217344579273583">"אין חיבור נתונים במשך <xliff:g id="COUNT">%s</xliff:g> דקות"</item>
   </plurals>
   <plurals name="alert_dialog_exit_ecm">
-    <item quantity="one" msgid="8060210887681426682">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך דקה <xliff:g id="COUNT">%s</xliff:g>. במצב זה לא ניתן להשתמש ביישומים המשתמשים בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
-    <item quantity="other" msgid="8617116564023933114">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך <xliff:g id="COUNT">%s</xliff:g> דקות. במצב זה לא ניתן להשתמש ביישומים המשתמשים בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
+    <item quantity="one" msgid="8060210887681426682">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך דקה <xliff:g id="COUNT">%s</xliff:g>. במצב זה לא ניתן להשתמש באפליקציות המשתמשות בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
+    <item quantity="other" msgid="8617116564023933114">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך <xliff:g id="COUNT">%s</xliff:g> דקות. במצב זה לא ניתן להשתמש באפליקציות המשתמשים בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
   </plurals>
   <plurals name="alert_dialog_not_avaialble_in_ecm">
     <item quantity="one" msgid="2585506997024726599">"הפעולה שנבחרה אינה זמינה במצב התקשרות חזרה בחירום. הטלפון יהיה במצב זה במשך <xliff:g id="COUNT">%s</xliff:g> דקות. האם אתה רוצה לצאת כעת?"</item>
@@ -549,7 +549,7 @@
     <string name="registration_status_failed_try_later" msgid="5214474354451220581">"הרשמת החשבון נכשלה: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); יתבצע ניסיון חוזר מאוחר יותר"</string>
     <string name="registration_status_invalid_credentials" msgid="4908446367559341757">"רישום החשבון נכשל: שם המשתמש או הסיסמה שגויים."</string>
     <string name="registration_status_server_unreachable" msgid="5733421582468991276">"רישום החשבון נכשל: בדוק את שם השרת."</string>
-    <string name="third_party_account_summary" msgid="2532526738862533028">"היישום <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> משתמש כרגע בחשבון זה."</string>
+    <string name="third_party_account_summary" msgid="2532526738862533028">"האפליקציה <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> משתמש כרגע בחשבון זה."</string>
     <string name="sip_edit_title" msgid="489288416435014385">"פרטי חשבון SIP"</string>
     <string name="sip_edit_new_title" msgid="3659149255856520385">"פרטי חשבון SIP"</string>
     <string name="domain_address_title" msgid="9071787581316160480">"שרת"</string>
@@ -585,11 +585,15 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"אני אתקשר אליך יותר מאוחר."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"אני לא יכול לדבר עכשיו. תתקשר אלי מאוחר יותר?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"כתוב אחת משלך..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"תגובות מהירות"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ערוך תגובות מהירות"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
     <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"תגובה מהירה"</string>
-    <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"אפס את היישום המוגדר כברירת מחדל"</string>
+    <string name="respond_via_sms_menu_reset_default_activity" msgid="1461742052902053466">"אפס את האפליקציה המוגדר כברירת מחדל"</string>
     <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"הודעה נשלחה אל <xliff:g id="PHONE_NUMBER">%s</xliff:g>."</string>
     <string name="description_image_button_one" msgid="5502718871331943463">"אחת"</string>
     <string name="description_image_button_two" msgid="4903738528222924522">"שתיים"</string>
diff --git a/InCallUI/res/values-ja/strings.xml b/InCallUI/res/values-ja/strings.xml
index 9e16a39..a7db5d6 100644
--- a/InCallUI/res/values-ja/strings.xml
+++ b/InCallUI/res/values-ja/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ただいま電話に出られません。後ほど折り返しご連絡いたします。"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ただいま電話に出られません。後ほどご連絡をお願いいたします。"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"カスタム返信を作成..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"クイック返信"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"クイック返信の編集"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ka-rGE/strings.xml b/InCallUI/res/values-ka-rGE/strings.xml
index a049ba6..658180d 100644
--- a/InCallUI/res/values-ka-rGE/strings.xml
+++ b/InCallUI/res/values-ka-rGE/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"მოგვიანებით გადმოვრეკავ."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ვერ ვპასუხობ. მოგვიანებით დამირეკე."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"ჩაწერეთ საკუთარი..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"სწრაფი პასუხი"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"სწრაფი პასუხის რედაქტირება"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-km-rKH/strings.xml b/InCallUI/res/values-km-rKH/strings.xml
index cea0a6c..39b4ea2 100644
--- a/InCallUI/res/values-km-rKH/strings.xml
+++ b/InCallUI/res/values-km-rKH/strings.xml
@@ -350,7 +350,7 @@
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"កំពុង​អាន​ពី​ស៊ីមកាត…"</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"គ្មាន​ទំនាក់ទំនង​នៅ​លើ​ស៊ីមកាត​របស់​អ្នក​ទេ។"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"ជ្រើស​ទំនាក់​ទំនង​ដើម្បី​នាំចូល"</string>
-    <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ដើម្បី​នាំចូល​ទំនាក់ទំនង​ពី​ស៊ី​ម​កាត​ ដំបូង​បិទ​របៀប​ពេល​ជិះ​​យន្តហោះ​។"</string>
+    <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ដើម្បី​នាំចូល​ទំនាក់ទំនង​ពី​ស៊ី​ម​កាត​ ដំបូង​ត្រូវបិទ​របៀប​ពេល​ជិះ​​យន្តហោះ​។"</string>
     <string name="enable_pin" msgid="5422767284133234860">"បិទ/បើក​កូដ PIN ស៊ីមកាត"</string>
     <string name="change_pin" msgid="9174186126330785343">"ប្ដូរ​កូដ​ PIN ស៊ីមកាត"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"កូដ PIN ស៊ីមកាត៖"</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ខ្ញុំ​នឹង​ហៅ​ទៅ​អ្នក​នៅ​ពេល​ក្រោយ។"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"មិន​អាច​និយាយ​បាន​ទេ​ឥឡូវ​នេះ។ ហៅ​​​​មក​ខ្ញុំ​ពេល​ក្រោយ?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"សរសេរ​ផ្ទាល់​ខ្លួន​របស់​អ្នក"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ការ​ឆ្លើយតប​រហ័ស"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"កែ​ការ​ឆ្លើយតប​រហ័ស"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ko/strings.xml b/InCallUI/res/values-ko/strings.xml
index 3eb6214..cc795b8 100644
--- a/InCallUI/res/values-ko/strings.xml
+++ b/InCallUI/res/values-ko/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"나중에 전화드리겠습니다."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"통화 불가. 나중에 전화주세요."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"나만의 응답 작성…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"빠른 응답"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"빠른 응답 수정"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-lo-rLA/strings.xml b/InCallUI/res/values-lo-rLA/strings.xml
index 4cd2961..b09ab35 100644
--- a/InCallUI/res/values-lo-rLA/strings.xml
+++ b/InCallUI/res/values-lo-rLA/strings.xml
@@ -66,7 +66,7 @@
     <string name="unlock_success" msgid="6770085622238180152">"ການປົດລັອກເຄືອຂ່າຍບໍ່ສຳເລັດ."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"ການຕັ້ງຄ່າການໂທ GSM"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"ການຕັ້ງຄ່າໂທ CDMA"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"ຊື່ຂອງຈຸດການເຂົ້າເຖິງ"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"ຊື່ຂອງຈຸດການເຂົ້າເຖິງ (APN)"</string>
     <string name="settings_label" msgid="3876743539816984008">"ການຕັ້ງຄ່າເຄືອຂ່າຍ"</string>
     <string name="voicemail" msgid="8693759337917898954">"ຂໍ້ຄວາມສຽງ"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM​:"</string>
@@ -180,7 +180,7 @@
     <item msgid="1524224863879435516">"GSM ເທົ່ານັ້ນ"</item>
     <item msgid="3817924849415716259">"ຕ້ອງການ GSM/WCDMA"</item>
   </string-array>
-    <string name="data_enabled" msgid="5972538663568715366">"ເປີດໃຊ້ຂໍ້ມູນແລ້ວ"</string>
+    <string name="data_enabled" msgid="5972538663568715366">"ເປີດໃຊ້ເດຕາ"</string>
     <string name="data_enable_summary" msgid="5022018967714633874">"ເປີດໃຊ້ການເຂົ້າເຖິງຂໍ້ມູນຜ່ານເຄືອຂ່າຍມືຖື"</string>
     <string name="roaming" msgid="8871412572928323707">"ການໂຣມມິງຂໍ້ມູນ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ເຊື່ອມຕໍ່ບໍລິການຂໍ້ມູນເມື່ອໂຣມມິງ"</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"ຂ້ອຍຈະໂທຫາເຈົ້ານຳຫຼັງ."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ຕອນນີ້ລົມບໍ່ໄດ້ເທື່ອ. ເຈົ້າຄ່ອຍໂທຫາຂ້ອຍໃໝ່ໄດ້ບໍ່?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"ຂຽນຂໍ້ຄວາມຂອງທ່ານເອງ..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"ຕອບກັບດ່ວນ"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"ແກ້ໄຂຂໍ້ຄວາມຕອບກັບດ່ວນ"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-lt/strings.xml b/InCallUI/res/values-lt/strings.xml
index eaee183..d73194b 100644
--- a/InCallUI/res/values-lt/strings.xml
+++ b/InCallUI/res/values-lt/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Paskambinsiu vėliau."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Dabar negaliu kalb. Pask. vėliau."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Sukurkite patys..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Greiti atsakai"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redaguoti greitus atsakus"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-lv/strings.xml b/InCallUI/res/values-lv/strings.xml
index cd36e8a..9e316ac 100644
--- a/InCallUI/res/values-lv/strings.xml
+++ b/InCallUI/res/values-lv/strings.xml
@@ -587,6 +587,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Piezvanīšu vēlāk."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nevaru runāt. Vai piezvanīsi vēlāk?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Rakstīt savu…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Ātrās atbildes"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Ātro atbilžu rediģēšana"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-mn-rMN/strings.xml b/InCallUI/res/values-mn-rMN/strings.xml
index a3b4a75..26f3eeb 100644
--- a/InCallUI/res/values-mn-rMN/strings.xml
+++ b/InCallUI/res/values-mn-rMN/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Би тань руу дараа залгана."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Одоо ярих боломжгүй байна. Дараа надруу залгах уу?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Өөрийн гэснийг бичээрэй..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Шуурхай хариунууд"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Шуурхай хариунуудыг засах"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ms-rMY/strings.xml b/InCallUI/res/values-ms-rMY/strings.xml
index ba61a2c..2813fb3 100644
--- a/InCallUI/res/values-ms-rMY/strings.xml
+++ b/InCallUI/res/values-ms-rMY/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Saya akan hubungi awak kemudian."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Tdk blh berckp skg. Tel saya nanti?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Tulis sendiri…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respons pantas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edit respons pantas"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-nb/strings.xml b/InCallUI/res/values-nb/strings.xml
index 2a574fc..f7f7be0 100644
--- a/InCallUI/res/values-nb/strings.xml
+++ b/InCallUI/res/values-nb/strings.xml
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jeg ringer deg senere."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Ikke nå. Ringer du meg senere?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Skriv ditt eget"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hurtigsvar"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Rediger hurtigsvar"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-nl/strings.xml b/InCallUI/res/values-nl/strings.xml
index e8d0efa..8e557f7 100644
--- a/InCallUI/res/values-nl/strings.xml
+++ b/InCallUI/res/values-nl/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ik bel je later."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan nu niet opnemen. Bel me later."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Eigen reactie opstellen..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Snelle reacties"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Snelle reacties bewerken"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-pl/strings.xml b/InCallUI/res/values-pl/strings.xml
index 461439f..b0da245 100644
--- a/InCallUI/res/values-pl/strings.xml
+++ b/InCallUI/res/values-pl/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zadzwonię do Ciebie później."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nie mogę rozmawiać. Zadzwonisz później?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napisz własną..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Szybkie odpowiedzi"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Edytuj szybkie odpowiedzi"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-pt-rPT/strings.xml b/InCallUI/res/values-pt-rPT/strings.xml
index ce60bbb..9ac0ac6 100644
--- a/InCallUI/res/values-pt-rPT/strings.xml
+++ b/InCallUI/res/values-pt-rPT/strings.xml
@@ -181,7 +181,7 @@
     <item msgid="3817924849415716259">"GSM/WCDMA preferido"</item>
   </string-array>
     <string name="data_enabled" msgid="5972538663568715366">"Dados ativados"</string>
-    <string name="data_enable_summary" msgid="5022018967714633874">"Activar acesso a dados através de rede móvel"</string>
+    <string name="data_enable_summary" msgid="5022018967714633874">"Ativar acesso a dados através de rede móvel"</string>
     <string name="roaming" msgid="8871412572928323707">"Roaming de dados"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Ligar a serviços de dados em roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Ligar a serviços de dados em roaming"</string>
@@ -202,18 +202,18 @@
     <string name="throttle_help_subtext" msgid="5217706521499010816">"Mais informações sobre a política de utilização de dados da rede móvel do seu operador."</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Transmissão Celular SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Transmissão Celular SMS"</string>
-    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Definições da Transmissão Celular SMS activada"</string>
-    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Transmissão Celular SMS desactivada"</string>
-    <string name="cb_sms_settings" msgid="651715019785107312">"Definições da Transmissão Celular SMS"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Definições da transmissão celular SMS ativada"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Transmissão Celular SMS desativada"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"Definições da transmissão celular SMS"</string>
     <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Difusão de Emergência"</string>
     <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Difusão de Emergência activada"</string>
-    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Difusão de Emergência desactivada"</string>
+    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Difusão de Emergência desativada"</string>
     <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativo"</string>
     <string name="administrative_enable" msgid="1750086122962032235">"Modo Administrativo ativado"</string>
     <string name="administrative_disable" msgid="8433273857248698539">"Modo administrativo desativado"</string>
     <string name="enable_disable_maintenance" msgid="1819693083025106678">"Manutenção"</string>
     <string name="maintenance_enable" msgid="8566636458770971189">"Manutenção activada"</string>
-    <string name="maintenance_disable" msgid="7340189100885066077">"Manutenção desactivada"</string>
+    <string name="maintenance_disable" msgid="7340189100885066077">"Manutenção desativada"</string>
     <string name="general_news_settings" msgid="4968779723948432978">"Notícias Gerais"</string>
     <string name="bf_news_settings" msgid="3935593091894685267">"Notícias de Negócios e Finanças"</string>
     <string name="sports_news_settings" msgid="7649399631270052835">"Notícias Desportivas"</string>
@@ -253,7 +253,7 @@
     <string name="list_language_dtitle" msgid="5442908726538951934">"Idiomas"</string>
     <string name="enable_disable_local_weather" msgid="986967454867219114">"Informação Meteorológica Local"</string>
     <string name="local_weather_enable" msgid="6199315114382448922">"Informação Meteorológica Local activada"</string>
-    <string name="local_weather_disable" msgid="2510158089142626480">"Informação meteorológica local desactivada"</string>
+    <string name="local_weather_disable" msgid="2510158089142626480">"Informação meteorológica local desativada"</string>
     <string name="enable_disable_atr" msgid="8339572391278872343">"Relatórios de Tráfego de Área"</string>
     <string name="atr_enable" msgid="5541757457789181799">"Relatórios de Tráfego de Área ativados"</string>
     <string name="atr_disable" msgid="7085558154727596455">"Relatórios de Tráfego de Área desativados"</string>
@@ -268,7 +268,7 @@
     <string name="lodgings_disable" msgid="3387879742320682391">"Alojamento desativado"</string>
     <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Lista de Retalho"</string>
     <string name="retail_directory_enable" msgid="3280626290436111496">"Lista de Retalho activada"</string>
-    <string name="retail_directory_disable" msgid="6479739816662879027">"Lista de Retalho desactivada"</string>
+    <string name="retail_directory_disable" msgid="6479739816662879027">"Lista de Retalho desativada"</string>
     <string name="enable_disable_advertisements" msgid="5999495926176182128">"Anúncios"</string>
     <string name="advertisements_enable" msgid="2050305021264683786">"Anúncios ativados"</string>
     <string name="advertisements_disable" msgid="8350985908788707935">"Anúncios desativados"</string>
@@ -307,23 +307,23 @@
     <item msgid="7494167883478914080">"0"</item>
     <item msgid="6043847456049107742">"1"</item>
   </string-array>
-    <string name="cdma_activate_device" msgid="3793805892364814518">"Activar dispositivo"</string>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"Ativar dispositivo"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Configurar serviço de dados"</string>
     <string name="fdn" msgid="7878832555095183202">"Números de marcação fixa (FDN)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Lista de números de marcação fixa (FDN)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Activação de FDN"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Os números de marcação fixa estão ativados"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"Os números de marcação fixa estão desativados"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Activar FDN"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"Desactivar FDN"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Ativar FDN"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Desativar FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Alterar PIN2"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"Desactivar FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activar FDN"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Desativar FDN"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Ativar FDN"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Gerir os números de marcação fixa"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Alterar o PIN de acesso aos números de marcação fixa"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Gerir a lista telefónica"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Privacidade de voz"</string>
-    <string name="voice_privacy_summary" msgid="3159383389833516214">"Activar modo de privacidade optimizado"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Ativar modo de privacidade optimizado"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Modo TTY"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"Definir modo TTY"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Nova tentativa automática"</string>
@@ -351,7 +351,7 @@
     <string name="simContacts_empty" msgid="5270660846489561932">"Sem contactos no cartão SIM."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Seleccione os contactos a importar"</string>
     <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar contactos do cartão SIM, primeiro desative o Modo de Avião."</string>
-    <string name="enable_pin" msgid="5422767284133234860">"Activar/desactivar o PIN do cartão SIM"</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Ativar/desativar o PIN do cartão SIM"</string>
     <string name="change_pin" msgid="9174186126330785343">"Alterar o PIN do cartão SIM"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"PIN do SIM:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"PIN antigo"</string>
@@ -360,8 +360,8 @@
     <string name="badPin" msgid="8955102849303984935">"O PIN antigo introduzido não está correto. Tente novamente."</string>
     <string name="mismatchPin" msgid="5923253370683071889">"Os PINs introduzidos não correspondem. Tente novamente."</string>
     <string name="invalidPin" msgid="5981171102258684792">"Introduza um PIN com 4 a 8 números."</string>
-    <string name="disable_sim_pin" msgid="3992926931620188855">"Desactivar o PIN do SIM"</string>
-    <string name="enable_sim_pin" msgid="5803702443844458831">"Activar o PIN do cartão SIM"</string>
+    <string name="disable_sim_pin" msgid="3992926931620188855">"Desativar o PIN do SIM"</string>
+    <string name="enable_sim_pin" msgid="5803702443844458831">"Ativar o PIN do cartão SIM"</string>
     <string name="enable_in_progress" msgid="3695303775100109650">"Queira aguardar..."</string>
     <string name="enable_pin_ok" msgid="9166061915030865848">"PIN do SIM ativado"</string>
     <string name="disable_pin_ok" msgid="5596999379593924850">"PIN do SIM desativado"</string>
@@ -446,7 +446,7 @@
     <string name="importingSimContacts" msgid="7374056215462575769">"A importar contactos do cartão SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar a partir dos contactos"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Aparelhos auxiliares de audição"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Activar compatibilidade com aparelho auxiliar de audição"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Ativar compatibilidade com aparelho auxiliar de audição"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY desativado"</item>
     <item msgid="3971695875449640648">"TTY total"</item>
@@ -460,10 +460,10 @@
     <item msgid="2883365539347850535">"Longo"</item>
   </string-array>
     <string name="network_message" msgid="4483886461245213802">"Mensagem de rede"</string>
-    <string name="ota_title_activate" msgid="8616918561356194398">"Activar o seu telefone"</string>
-    <string name="ota_touch_activate" msgid="6553212803262586244">"É necessário efectuar uma chamada especial para activar o seu serviço telefónico. \n\nDepois de premir “Activar”, ouça as instruções fornecidas para activar o telefone."</string>
+    <string name="ota_title_activate" msgid="8616918561356194398">"Ativar o seu telefone"</string>
+    <string name="ota_touch_activate" msgid="6553212803262586244">"É necessário efectuar uma chamada especial para ativar o seu serviço telefónico. \n\nDepois de premir “Ativar”, ouça as instruções fornecidas para activar o telefone."</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Ignorar activação?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Se ignorar a activação, não poderá fazer chamadas nem estabelecer ligação a redes móveis de dados (apesar de poder estabelecer ligação a redes Wi-Fi). Enquanto não activar o telefone, ser-lhe-á solicitada activação sempre que ligar o telefone."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Se ignorar a ativação, não poderá fazer chamadas nem estabelecer ligação a redes móveis de dados (apesar de poder estabelecer ligação a redes Wi-Fi). Enquanto não ativar o telefone, ser-lhe-á solicitada activação sempre que ligar o telefone."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Ignorar"</string>
     <string name="ota_activate" msgid="1368528132525626264">"Ativar"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"O telemóvel está ativado!"</string>
@@ -481,7 +481,7 @@
     <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entrou em Modo de Chamada de Retorno de Emergência"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de Chamada de Retorno de Emergência"</string>
-    <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Ligação de dados desactivada"</string>
+    <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Ligação de dados desativada"</string>
   <plurals name="phone_in_ecm_notification_time">
     <item quantity="one" msgid="4866221796252472622">"Sem ligação de dados durante <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
     <item quantity="other" msgid="3122217344579273583">"Sem ligação de dados durante <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Telefono-lhe mais tarde."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Pode telefonar-me mais tarde?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escrever a sua própria..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
@@ -616,7 +620,7 @@
     <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="dtmf_tone_enable_title" msgid="827601042915852989">"Sons dos toques no teclado de marcar"</string>
+    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Sons dos toques no teclado"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Preenchimento automático 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>
diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml
index 01e88c3..09057a4 100644
--- a/InCallUI/res/values-pt/strings.xml
+++ b/InCallUI/res/values-pt/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Eu te ligo mais tarde."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Não posso falar agora. Liga depois, por favor?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escreva sua resposta..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ro/strings.xml b/InCallUI/res/values-ro/strings.xml
index d2acb06..0fb3911 100644
--- a/InCallUI/res/values-ro/strings.xml
+++ b/InCallUI/res/values-ro/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Te sun mai târziu."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Nu pot acum. Vorbim mai târziu?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Scrieți propriul răspuns…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Răspunsuri rapide"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editaţi răspunsurile rapide"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-ru/strings.xml b/InCallUI/res/values-ru/strings.xml
index 6594d42..7897e54 100644
--- a/InCallUI/res/values-ru/strings.xml
+++ b/InCallUI/res/values-ru/strings.xml
@@ -587,6 +587,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я перезвоню вам позже."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не могу говорить. Позвоните позже."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Ваш ответ…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Быстрые ответы"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Быстрые ответы"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-sk/strings.xml b/InCallUI/res/values-sk/strings.xml
index 8cd330e..27a994f 100644
--- a/InCallUI/res/values-sk/strings.xml
+++ b/InCallUI/res/values-sk/strings.xml
@@ -512,7 +512,7 @@
     <string name="sip_accounts_title" msgid="1212889069281054570">"Účty"</string>
     <string name="sip_receive_calls" msgid="5635685570889971559">"Prijímať prichádzajúce hovory"</string>
     <string name="sip_receive_calls_summary" msgid="8403613238633679184">"Znižuje výdrž batérie"</string>
-    <string name="sip_call_options_title" msgid="27433718808839672">"Použiť internetový volanie"</string>
+    <string name="sip_call_options_title" msgid="27433718808839672">"Použiť internetové volanie"</string>
     <string name="sip_call_options_wifi_only_title" msgid="145572394529090811">"Použiť internetový hovor (iba s pripojením Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="6556668894178520760">"Pre všetky hovory, pokiaľ je k dispozícii dátová sieť"</string>
     <string name="sip_call_options_entry_2" msgid="6789764029719494361">"Iba pre internetové hovory"</string>
@@ -580,11 +580,15 @@
     <string name="sip_system_decide" msgid="368030746310423471">"Automatické"</string>
     <string name="sip_always_send_keepalive" msgid="8192080724632877132">"Vždy odoslať"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Hlasové volanie nie je podporované"</string>
-    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Nemôžem telefonovať, čo sa deje?"</string>
+    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Teraz nemôžem hovoriť, o čo ide?"</string>
     <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Zavolám späť."</string>
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Zavolám neskôr."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Teraz nemôžem, zavolajte inokedy."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napísať vlastnú..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Rýchle odpovede"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Upraviť rýchle odpovede"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
@@ -616,7 +620,7 @@
     <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="dtmf_tone_enable_title" msgid="827601042915852989">"Zvuky pri dotyku na číselnú klávesnicu"</string>
+    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Zvuky pri dotyku číselníku"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Automatické dokonč. číselnej klávesnice"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tón zvonenia a vibrovanie"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Spravovať konferenčný hovor"</string>
diff --git a/InCallUI/res/values-sl/strings.xml b/InCallUI/res/values-sl/strings.xml
index 8aec816..7079213 100644
--- a/InCallUI/res/values-sl/strings.xml
+++ b/InCallUI/res/values-sl/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Poklical bom pozneje."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Zdaj ne morem govoriti. Pozneje?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Napišite svoje besedilo …"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hitri odgovori"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Urejanje hitrih odgovorov"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-sr/strings.xml b/InCallUI/res/values-sr/strings.xml
index 1edd80c..67b4677 100644
--- a/InCallUI/res/values-sr/strings.xml
+++ b/InCallUI/res/values-sr/strings.xml
@@ -129,7 +129,7 @@
     <string name="vm_changed" msgid="380744030726254139">"Промењен је број говорне поште."</string>
     <string name="vm_change_failed" msgid="3352934863246208918">"Није могуће променити број говорне поште.\nКонтактирајте мобилног оператера ако се овај проблем настави."</string>
     <string name="fw_change_failed" msgid="5298103228470214665">"Није могуће променити број за преусмеравање.\nКонтактирајте мобилног оператера ако се овај проблем настави."</string>
-    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Није било могуће преузети и сачувати тренутна подешавања броја за прослеђивање.\nЖелите ли да ипак пређете на новог добављача?"</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Није могуће преузети и сачувати тренутна подешавања броја за прослеђивање.\nЖелите ли да ипак пређете на новог добављача?"</string>
     <string name="no_change" msgid="3186040086622435212">"Нису начињене промене."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Одаберите услугу говорне поште"</string>
     <string name="voicemail_default" msgid="5902099213882352338">" Мој мобилни оператер"</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Позваћу те касније."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"У гужви сам. Да се чујемо касније?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Напишите сами…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Брзи одговори"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Измена брзих одговора"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-sv/strings.xml b/InCallUI/res/values-sv/strings.xml
index 3539477..1910e1e 100644
--- a/InCallUI/res/values-sv/strings.xml
+++ b/InCallUI/res/values-sv/strings.xml
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Jag ringer dig senare."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Kan inte prata nu. Ring senare!"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Skriv ett eget svar ..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Snabbsvar"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Redigera snabbsvar"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml
index 51c8add..931c08d 100644
--- a/InCallUI/res/values-sw/strings.xml
+++ b/InCallUI/res/values-sw/strings.xml
@@ -48,7 +48,7 @@
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Kipaza sauti cha kichwani"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Viskizi vya maskio pasiwaya"</string>
     <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
-    <string name="wait_prompt_str" msgid="7601815427707856238">"Tuma toni zinazofuata? \n"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Ungependa kutuma toni zifuatazo? \n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"Inatuma toni\n"</string>
     <string name="send_button" msgid="4106860097497818751">"Tuma"</string>
     <string name="pause_prompt_yes" msgid="3564467212025151797">"Ndiyo"</string>
@@ -309,16 +309,16 @@
   </string-array>
     <string name="cdma_activate_device" msgid="3793805892364814518">"Wezesha kifaa"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Sanidi huduma ya data"</string>
-    <string name="fdn" msgid="7878832555095183202">"Nambari zilizopangiwa za Upigaji"</string>
+    <string name="fdn" msgid="7878832555095183202">"Nambari za kupiga zisizobadilishwa"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Orodha ya FDN"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Uwezeshaji wa FDN"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Nambari za upigaji simu zilizobanwa zimelemazwa"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"Nambari za upigaji simu zilizobanwa zimelemazwa"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Wezesha FDN"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Washa FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Lemaza FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Badilisha PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Lemaza FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Wezesha FDN"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Washa FDN"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Dhibiti nambari Za Upigaji simu Zilizobanwa"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Badilisha nenosiri la kufikia FDN"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Dhibiti orodha ya nambari ya simu"</string>
@@ -347,9 +347,9 @@
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN haikusasishwa kwa sababu uliweka PIN isiyo sahihi."</string>
     <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN haikusasishwa kwa sababu namba haiwezi kuzidisha herufi 20."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN haikusasishwa. PIN2 haikuwa sahihi, au namba ya simu ilikataliwa."</string>
-    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Inasoma kutoka kwa SIM kadi"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Hakuna anwani kwenye kadi yako ya SIM."</string>
-    <string name="simContacts_title" msgid="1861472842524839921">"Chagua anwani za kuagiza"</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Inasoma kutoka kwa SIM kadi…"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Hakuna anwani kwenye SIM kadi yako."</string>
+    <string name="simContacts_title" msgid="1861472842524839921">"Chagua anwani za kuingiza"</string>
     <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Ili kuleta anwani kutoka kwa SIM kadi, kwanza zima hali ya Ndege."</string>
     <string name="enable_pin" msgid="5422767284133234860">"Wezesha/zima nenosiri la SIM"</string>
     <string name="change_pin" msgid="9174186126330785343">"Badilisha nenosiri la SIM"</string>
@@ -581,10 +581,14 @@
     <string name="sip_always_send_keepalive" msgid="8192080724632877132">"Tuma kila wakati"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Upigaji simu za sauti hauhimiliwi"</string>
     <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Siwezi kuongea sasa. Kuna nini?"</string>
-    <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Nitakupigia mara moja."</string>
+    <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Nitakupigia sasa hivi."</string>
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Nitakupigia baadaye."</string>
-    <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Siwezi kuongea sasa. Nipigie baadaye?"</string>
+    <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Siwezi kuongea sasa. Nipigie baadaye"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Andika yako binafsi..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Majibu ya haraka"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hariri majibu ya haraka"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
@@ -615,9 +619,9 @@
     <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sauti"</string>
     <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 kuita"</string>
+    <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Tetema wakati wa kulia"</string>
     <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Toa sauti vitufe vya kupiga vinapoguswa"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Jaza nambari kiotomatiki"</string>
-    <string name="preference_category_ringtone" msgid="5197960752529332721">"Malio wa simu na Mtetemo"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Mlio wa simu na Mtetemo"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Dhibiti simu ya kongamano"</string>
 </resources>
diff --git a/InCallUI/res/values-th/strings.xml b/InCallUI/res/values-th/strings.xml
index 7f902f2..fc8e9bf 100644
--- a/InCallUI/res/values-th/strings.xml
+++ b/InCallUI/res/values-th/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"เดี๋ยวจะโทรหาทีหลัง"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"ตอนนี้คุยไม่ได้ โทรมาใหม่ได้ไหม"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"เขียนคำตอบของคุณเอง..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"คำตอบด่วน"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"แก้ไขคำตอบด่วน"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-tl/strings.xml b/InCallUI/res/values-tl/strings.xml
index fc74466..b03f75b 100644
--- a/InCallUI/res/values-tl/strings.xml
+++ b/InCallUI/res/values-tl/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Tawagan kita mamaya."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Di masagot ngayon. Tawag ka mamaya?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Sumulat ng sarili mong tugon…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Mga mabilisang tugon"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"I-edit ang mga mabilisang tugon"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-tr/strings.xml b/InCallUI/res/values-tr/strings.xml
index fc8b9d4..da790d2 100644
--- a/InCallUI/res/values-tr/strings.xml
+++ b/InCallUI/res/values-tr/strings.xml
@@ -580,11 +580,15 @@
     <string name="sip_system_decide" msgid="368030746310423471">"Otomatik"</string>
     <string name="sip_always_send_keepalive" msgid="8192080724632877132">"Her zaman gönder"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Sesli arama desteklenmiyor"</string>
-    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Şimdi konuşamam. Ne oldu?"</string>
+    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Şimdi konuşamam. Konu nedir?"</string>
     <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Seni hemen geri arayacağım."</string>
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Seni daha sonra ararım."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Şimdi konuşamam. Daha sonra arar mısın?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Kendi yanıtınızı oluşturun…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Hızlı yanıtlar"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hızlı yanıtları düzenle"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-uk/strings.xml b/InCallUI/res/values-uk/strings.xml
index 596df5d..9b00439 100644
--- a/InCallUI/res/values-uk/strings.xml
+++ b/InCallUI/res/values-uk/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Я передзвоню пізніше."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Не можу говорити. Передзвоніть."</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Напишіть власну відповідь..."</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Швидкі відповіді"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Редагувати швидкі відповіді"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-vi/strings.xml b/InCallUI/res/values-vi/strings.xml
index 656bf09..ce6b8af 100644
--- a/InCallUI/res/values-vi/strings.xml
+++ b/InCallUI/res/values-vi/strings.xml
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Tôi sẽ gọi lại sau."</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Giờ tôi ko thể nói chuyện. Gọi sau nhé?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Viết trả lời của riêng bạn…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Trả lời nhanh"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Chỉnh sửa trả lời nhanh"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml
index a12d1bd..674e7ad 100644
--- a/InCallUI/res/values-zh-rCN/strings.xml
+++ b/InCallUI/res/values-zh-rCN/strings.xml
@@ -92,21 +92,21 @@
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"转接所有来电"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"将所有来电转接到 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"未提供电话号码"</string>
-    <string name="sum_cfu_disabled" msgid="3698472522160364904">"已停用"</string>
+    <string name="sum_cfu_disabled" msgid="3698472522160364904">"未启用"</string>
     <string name="labelCFB" msgid="218938523102207587">"占线时转接"</string>
     <string name="messageCFB" msgid="3711089705936187129">"占线时的转接号码"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"转接到 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfb_disabled" msgid="227440009979537651">"已停用"</string>
+    <string name="sum_cfb_disabled" msgid="227440009979537651">"未启用"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"您的运营商不支持在手机占线时停用来电转接功能。"</string>
     <string name="labelCFNRy" msgid="3646316323834351390">"无人接听时转接"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"无人接听时的转接号码"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"转接到 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnry_disabled" msgid="8422350929957344729">"已停用"</string>
+    <string name="sum_cfnry_disabled" msgid="8422350929957344729">"未启用"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"您的运营商不支持在手机无人接听时停用来电转接功能。"</string>
     <string name="labelCFNRc" msgid="47183615370850000">"无法接通时转接"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"无法接通时的转接号码"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"转接到 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"已停用"</string>
+    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"未启用"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"您的运营商不支持在手机无法接通时停用来电转接功能。"</string>
     <string name="updating_title" msgid="6146755386174019046">"通话设置"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"通话设置出错"</string>
@@ -313,14 +313,14 @@
     <string name="manage_fdn_list" msgid="8777755791892122369">"固定拨号列表"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"激活固定拨号"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"已启用固定拨号"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"已停用固定拨号"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"未启用固定拨号"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"启用固定拨号"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"禁用固定拨号"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"停用固定拨号"</string>
     <string name="change_pin2" msgid="2153563695382176676">"更改 PIN2"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"禁用固定拨号"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"停用固定拨号"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"启用固定拨号"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"管理固定拨号"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"更改为访问固定拨号设置的 PIN"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"更改使用固定拨号所需的 PIN 码"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"管理手机号码列表"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"语音隐私权"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"启用增强型隐秘模式"</string>
@@ -364,7 +364,7 @@
     <string name="enable_sim_pin" msgid="5803702443844458831">"启用 SIM 卡 PIN"</string>
     <string name="enable_in_progress" msgid="3695303775100109650">"请稍候..."</string>
     <string name="enable_pin_ok" msgid="9166061915030865848">"SIM 卡 PIN 已启用。"</string>
-    <string name="disable_pin_ok" msgid="5596999379593924850">"SIM 卡 PIN 已停用。"</string>
+    <string name="disable_pin_ok" msgid="5596999379593924850">"未启用 SIM 卡 PIN 码。"</string>
     <string name="pin_failed" msgid="2298841192582192277">"键入的 PIN 有误。"</string>
     <string name="pin_changed" msgid="4365538014588501049">"已成功更改 SIM 卡 PIN。"</string>
     <string name="puk_requested" msgid="3898394204193202803">"密码不正确，SIM 已锁定！需要 PUK2。"</string>
@@ -448,8 +448,8 @@
     <string name="hac_mode_title" msgid="8740268574688743289">"助听器"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"启用助听器兼容模式"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY 已停用"</item>
-    <item msgid="3971695875449640648">"TTY 已满"</item>
+    <item msgid="512950011423868021">"未启用 TTY"</item>
+    <item msgid="3971695875449640648">"TTY 完整"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -507,15 +507,15 @@
     <string name="contactPhoto" msgid="4713193418046639466">"联系人照片"</string>
     <string name="goPrivate" msgid="865837794424530980">"私聊"</string>
     <string name="selectContact" msgid="781975788478987237">"选择联系人"</string>
-    <string name="sip_settings" msgid="6699045718560859691">"互联网通话设置"</string>
+    <string name="sip_settings" msgid="6699045718560859691">"互联网电话设置"</string>
     <string name="sip_accounts" msgid="2097054001288457163">"互联网电话 (SIP) 帐户"</string>
     <string name="sip_accounts_title" msgid="1212889069281054570">"帐户"</string>
     <string name="sip_receive_calls" msgid="5635685570889971559">"接听来电"</string>
     <string name="sip_receive_calls_summary" msgid="8403613238633679184">"会缩短电池待机时间"</string>
     <string name="sip_call_options_title" msgid="27433718808839672">"使用互联网电话"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="145572394529090811">"使用互联网通话（仅限 WLAN）"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="145572394529090811">"使用互联网电话（仅限 WLAN）"</string>
     <string name="sip_call_options_entry_1" msgid="6556668894178520760">"数据网络接通时适用于所有通话"</string>
-    <string name="sip_call_options_entry_2" msgid="6789764029719494361">"仅适用于互联网通话"</string>
+    <string name="sip_call_options_entry_2" msgid="6789764029719494361">"仅适用于互联网电话"</string>
     <string name="sip_call_options_entry_3" msgid="7474809001402649185">"每次呼叫时询问"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="7423523864471650069">"适用于所有通话"</string>
     <string name="pick_outgoing_call_phone_type" msgid="5622916534828338675">"拨打电话"</string>
@@ -585,6 +585,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我稍后会再打给你。"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"现在无法接听。能稍后再打给我吗？"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"自行撰写回复…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回复"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"修改快速回复"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-zh-rHK/strings.xml b/InCallUI/res/values-zh-rHK/strings.xml
index b353680..de26ecc 100644
--- a/InCallUI/res/values-zh-rHK/strings.xml
+++ b/InCallUI/res/values-zh-rHK/strings.xml
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我晚點打電話給你。"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"我現在不方便通話，晚點再打來好嗎？"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"自行撰寫回覆…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回應"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"編輯快速回應"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-zh-rTW/strings.xml b/InCallUI/res/values-zh-rTW/strings.xml
index 6940a3a..702d0ef 100644
--- a/InCallUI/res/values-zh-rTW/strings.xml
+++ b/InCallUI/res/values-zh-rTW/strings.xml
@@ -591,6 +591,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我晚點回電。"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"我現在不方便通話，晚點再打來好嗎？"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"自行撰寫回應…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回應"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"編輯快速回應"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values-zu/strings.xml b/InCallUI/res/values-zu/strings.xml
index e204e89..2959d4e 100644
--- a/InCallUI/res/values-zu/strings.xml
+++ b/InCallUI/res/values-zu/strings.xml
@@ -589,6 +589,10 @@
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Ngizokushayela ucingo emva kwesikhathi"</string>
     <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Angikwazi ukukhuluma okwamanje. Ngicela uphinde ungishayele ucingo kamuva?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Bhala okwakho…"</string>
+    <!-- no translation found for custom_message_cancel (7516406059429609296) -->
+    <skip />
+    <!-- no translation found for custom_message_send (5795754217085747742) -->
+    <skip />
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Izimpendulo ezisheshayo"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Hlela izimpendulo ezisheshayo"</string>
     <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
diff --git a/InCallUI/res/values/colors.xml b/InCallUI/res/values/colors.xml
index 4040008..6080e91 100644
--- a/InCallUI/res/values/colors.xml
+++ b/InCallUI/res/values/colors.xml
@@ -34,4 +34,19 @@
 
     <!-- Used with some smaller texts in manage conference screen. -->
     <color name="manage_conference_secondary_text_color">#888888</color>
+
+    <!-- Used when the End Call button is active -->
+    <drawable name="end_call_active_state">#f22121</drawable>
+
+    <!-- Used when the End Call button is pressed -->
+    <drawable name="end_call_pressed_state">#ff4e4e</drawable>
+
+    <!-- Used when the End Call button is disabled -->
+    <drawable name="end_call_disabled_state">#303030</drawable>
+
+    <!-- Dialpad background -->
+    <color name="dialpad_background">#000000</color>
+
+    <!-- Button background -->
+    <color name="button_background">#000000</color>
 </resources>
diff --git a/InCallUI/res/values/dimens.xml b/InCallUI/res/values/dimens.xml
index 1d94971..204657b 100644
--- a/InCallUI/res/values/dimens.xml
+++ b/InCallUI/res/values/dimens.xml
@@ -28,6 +28,8 @@
 
     <!-- Padding at the left and right edges of the "call banner". -->
     <dimen name="call_banner_side_padding">24dp</dimen>
+    <!-- Padding at the right edges of the secondary call banner. -->
+    <dimen name="secondary_call_banner_right_padding">100dp</dimen>
     <!-- Padding at the top and bottom edges of the "call banner". -->
     <dimen name="call_banner_top_bottom_padding">16dp</dimen>
 
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index e7049e5..7c588b3 100755
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -1280,6 +1280,10 @@
     <string name="respond_via_sms_canned_response_4">Can\'t talk now. Call me later?</string>
     <!-- "Respond via SMS" option that lets you compose a custom response. [CHAR LIMIT=30] -->
     <string name="respond_via_sms_custom_message">Write your own...</string>
+    <!-- "Custom Message" Cancel alert dialog button -->
+    <string name="custom_message_cancel">Cancel</string>
+    <!-- "Custom Message" Send alert dialog button -->
+    <string name="custom_message_send">Send</string>
 
     <!-- Title of settings screen for managing the "Respond via SMS" feature. [CHAR LIMIT=30] -->
     <string name="respond_via_sms_setting_title">Quick responses</string>
diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java
index 324d522..1b249f2 100644
--- a/InCallUI/src/com/android/incallui/AnswerFragment.java
+++ b/InCallUI/src/com/android/incallui/AnswerFragment.java
@@ -18,12 +18,18 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.content.DialogInterface;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
 import android.widget.ListView;
 
 import com.google.common.base.Preconditions;
@@ -45,6 +51,11 @@
      */
     private Dialog mCannedResponsePopup = null;
 
+    /**
+     * The popup showing a text field for users to type in their custom message.
+     */
+    private AlertDialog mCustomMessagePopup = null;
+
     private ArrayAdapter<String> mTextResponsesAdapter = null;
 
     private GlowPadWrapper mGlowpad;
@@ -106,12 +117,7 @@
     }
 
     @Override
-    public boolean isMessageDialogueShowing() {
-        return mCannedResponsePopup != null && mCannedResponsePopup.isShowing();
-    }
-
-    @Override
-    public void showMessageDialogue() {
+    public void showMessageDialog() {
         final ListView lv = new ListView(getActivity());
 
         Preconditions.checkNotNull(mTextResponsesAdapter);
@@ -124,22 +130,117 @@
         mCannedResponsePopup.show();
     }
 
+    private boolean isCannedResponsePopupShowing() {
+        if (mCannedResponsePopup != null) {
+            return mCannedResponsePopup.isShowing();
+        }
+        return false;
+    }
+
+    private boolean isCustomMessagePopupShowing() {
+        if (mCustomMessagePopup != null) {
+            return mCustomMessagePopup.isShowing();
+        }
+        return false;
+    }
+
     /**
-     * Dismiss currently visible popups.
+     * Dismiss the canned response list popup.
      *
      * This is safe to call even if the popup is already dismissed, and even if you never called
      * showRespondViaSmsPopup() in the first place.
      */
-    @Override
-    public void dismissPopup() {
+    private void dismissCannedResponsePopup() {
         if (mCannedResponsePopup != null) {
             mCannedResponsePopup.dismiss();  // safe even if already dismissed
             mCannedResponsePopup = null;
         }
     }
 
+    /**
+     * Dismiss the custom compose message popup.
+     */
+    private void dismissCustomMessagePopup() {
+       if (mCustomMessagePopup != null) {
+           mCustomMessagePopup.dismiss();
+           mCustomMessagePopup = null;
+       }
+    }
+
+    public void dismissPendingDialogues() {
+        if (isCannedResponsePopupShowing()) {
+            dismissCannedResponsePopup();
+        }
+
+        if (isCustomMessagePopupShowing()) {
+            dismissCustomMessagePopup();
+        }
+    }
+
+    public boolean hasPendingDialogs() {
+        return !(mCannedResponsePopup == null && mCustomMessagePopup == null);
+    }
+
+    /**
+     * Shows the custom message entry dialog.
+     */
+    public void showCustomMessageDialog() {
+        // Create an alert dialog containing an EditText
+        final EditText et = new EditText(getActivity());
+        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).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);
+                    }
+                })
+                .setNegativeButton(R.string.custom_message_cancel,
+                        new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        dismissCustomMessagePopup();
+                        getPresenter().onDismissDialog();
+                    }
+                })
+                .setTitle(R.string.respond_via_sms_custom_message);
+        mCustomMessagePopup = builder.create();
+
+        // Enable/disable the send button based on whether there is a message in the EditText
+        et.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                final Button sendButton = mCustomMessagePopup.getButton(
+                        DialogInterface.BUTTON_POSITIVE);
+                sendButton.setEnabled(s != null && s.toString().trim().length() != 0);
+            }
+        });
+
+        // Keyboard up, show the dialog
+        mCustomMessagePopup.getWindow().setSoftInputMode(
+                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+        mCustomMessagePopup.show();
+
+        // Send button starts out disabled
+        final Button sendButton = mCustomMessagePopup.getButton(DialogInterface.BUTTON_POSITIVE);
+        sendButton.setEnabled(false);
+    }
+
     @Override
-    public void configureMessageDialogue(ArrayList<String> textResponses) {
+    public void configureMessageDialog(ArrayList<String> textResponses) {
         final ArrayList<String> textResponsesForDisplay = new ArrayList<String>(textResponses);
 
         textResponsesForDisplay.add(getResources().getString(
@@ -178,12 +279,13 @@
             Log.d(this, "RespondViaSmsItemClickListener.onItemClick(" + position + ")...");
             final String message = (String) parent.getItemAtPosition(position);
             Log.v(this, "- message: '" + message + "'");
+            dismissCannedResponsePopup();
 
             // The "Custom" choice is a special case.
             // (For now, it's guaranteed to be the last item.)
             if (position == (parent.getCount() - 1)) {
-                // Take the user to the standard SMS compose UI.
-                getPresenter().rejectCallWithMessage(null);
+                // Show the custom message dialog
+                showCustomMessageDialog();
             } else {
                 getPresenter().rejectCallWithMessage(message);
             }
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index e820929..bfe8405 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -29,6 +29,7 @@
     private static final String TAG = AnswerPresenter.class.getSimpleName();
 
     private int mCallId = Call.INVALID_CALL_ID;
+    private Call mCall = null;
 
     @Override
     public void onUiReady(AnswerUi ui) {
@@ -64,6 +65,11 @@
     }
 
     @Override
+    public void onDisconnect(Call call) {
+        // no-op
+    }
+
+    @Override
     public void onIncomingCall(Call call) {
         // TODO: Ui is being destroyed when the fragment detaches.  Need clean up step to stop
         // getting updates here.
@@ -77,6 +83,7 @@
 
     private void processIncomingCall(Call call) {
         mCallId = call.getCallId();
+        mCall = call;
 
         // Listen for call updates for the current call.
         CallList.getInstance().addCallUpdateListener(mCallId, this);
@@ -88,7 +95,7 @@
 
         if (call.can(Call.Capabilities.RESPOND_VIA_TEXT) && textMsgs != null) {
             getUi().showTextButton(true);
-            getUi().configureMessageDialogue(textMsgs);
+            getUi().configureMessageDialog(textMsgs);
         } else {
             getUi().showTextButton(false);
         }
@@ -103,6 +110,9 @@
             CallList.getInstance().removeCallUpdateListener(mCallId, this);
 
             getUi().showAnswerUi(false);
+
+            // mCallId will hold the state of the call. We don't clear the mCall variable here as
+            // it may be useful for sending text messages after phone disconnects.
             mCallId = Call.INVALID_CALL_ID;
         }
     }
@@ -118,35 +128,33 @@
     }
 
     public void onDecline() {
-        if (mCallId == Call.INVALID_CALL_ID) {
-            return;
-        }
-
         Log.d(this, "onDecline " + mCallId);
 
-        CallCommandClient.getInstance().rejectCall(mCallId, false, null);
+        CallCommandClient.getInstance().rejectCall(mCall, false, null);
     }
 
     public void onText() {
         if (getUi() != null) {
-            getUi().showMessageDialogue();
+            getUi().showMessageDialog();
         }
     }
 
     public void rejectCallWithMessage(String message) {
         Log.d(this, "sendTextToDefaultActivity()...");
-        if (getUi() != null) {
-            getUi().dismissPopup();
-        }
-        CallCommandClient.getInstance().rejectCall(mCallId, true, message);
+
+        CallCommandClient.getInstance().rejectCall(mCall, true, message);
+
+        onDismissDialog();
+    }
+
+    public void onDismissDialog() {
+        InCallPresenter.getInstance().onDismissDialog();
     }
 
     interface AnswerUi extends Ui {
         public void showAnswerUi(boolean show);
         public void showTextButton(boolean show);
-        public boolean isMessageDialogueShowing();
-        public void showMessageDialogue();
-        public void dismissPopup();
-        public void configureMessageDialogue(ArrayList<String> textResponses);
+        public void showMessageDialog();
+        public void configureMessageDialog(ArrayList<String> textResponses);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 4c42a78..b0fdda1 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -22,8 +22,8 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.view.ViewStub;
 import android.widget.CompoundButton;
 import android.widget.ImageButton;
 import android.widget.PopupMenu;
@@ -54,7 +54,7 @@
     private View mEndCallButton;
     private View mExtraRowButton;
     private View mManageConferenceButton;
-    private View mCDMAMergeButton;
+    private View mGenericMergeButton;
 
     @Override
     CallButtonPresenter createPresenter() {
@@ -87,7 +87,13 @@
                 getPresenter().manageConferenceButtonClicked();
             }
         });
-        mCDMAMergeButton = parent.findViewById(R.id.cdmaMergeButton);
+        mGenericMergeButton = parent.findViewById(R.id.cdmaMergeButton);
+        mGenericMergeButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getPresenter().mergeClicked();
+            }
+        });
 
         mEndCallButton = parent.findViewById(R.id.endButton);
         mEndCallButton.setOnClickListener(new View.OnClickListener() {
@@ -97,11 +103,16 @@
             }
         });
 
+        // make the hit target smaller for the end button so that is creates a deadzone
+        // along the inside perimeter of the button.
+        mEndCallButton.setOnTouchListener(new SmallerHitTargetTouchListener());
+
         mMuteButton = (ToggleButton) parent.findViewById(R.id.muteButton);
-        mMuteButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+        mMuteButton.setOnClickListener(new OnClickListener() {
             @Override
-            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-                getPresenter().muteClicked(isChecked);
+            public void onClick(View v) {
+                final CompoundButton button = (CompoundButton) v;
+                getPresenter().muteClicked(button.isChecked());
             }
         });
 
@@ -142,6 +153,14 @@
     }
 
     @Override
+    public void onResume() {
+        if (getPresenter() != null) {
+            getPresenter().refreshMuteState();
+        }
+        super.onResume();
+    }
+
+    @Override
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
     }
 
@@ -170,12 +189,23 @@
     }
 
     @Override
-    public void setVisible(boolean on) {
-        if (on) {
-            getView().setVisibility(View.VISIBLE);
-        } else {
-            getView().setVisibility(View.INVISIBLE);
+    public void setEnabled(boolean isEnabled) {
+        View view = getView();
+        if (view.getVisibility() != View.VISIBLE) {
+            view.setVisibility(View.VISIBLE);
         }
+
+        // The main end-call button spanning across the screen.
+        mEndCallButton.setEnabled(isEnabled);
+
+        // The smaller buttons laid out horizontally just below the end-call button.
+        mMuteButton.setEnabled(isEnabled);
+        mAudioButton.setEnabled(isEnabled);
+        mHoldButton.setEnabled(isEnabled);
+        mShowDialpadButton.setEnabled(isEnabled);
+        mMergeButton.setEnabled(isEnabled);
+        mAddCallButton.setEnabled(isEnabled);
+        mSwapButton.setEnabled(isEnabled);
     }
 
     @Override
@@ -184,6 +214,11 @@
     }
 
     @Override
+    public void enableMute(boolean enabled) {
+        mMuteButton.setEnabled(enabled);
+    }
+
+    @Override
     public void setHold(boolean value) {
         mHoldButton.setChecked(value);
     }
@@ -194,6 +229,11 @@
     }
 
     @Override
+    public void enableHold(boolean enabled) {
+        mHoldButton.setEnabled(enabled);
+    }
+
+    @Override
     public void showMerge(boolean show) {
         mMergeButton.setVisibility(show ? View.VISIBLE : View.GONE);
     }
@@ -209,6 +249,11 @@
     }
 
     @Override
+    public void enableAddCall(boolean enabled) {
+        mAddCallButton.setEnabled(enabled);
+    }
+
+    @Override
     public void setAudio(int mode) {
         updateAudioButtons(getPresenter().getSupportedAudio());
         refreshAudioModePopup();
@@ -485,14 +530,14 @@
     public void showManageConferenceCallButton() {
         mExtraRowButton.setVisibility(View.VISIBLE);
         mManageConferenceButton.setVisibility(View.VISIBLE);
-        mCDMAMergeButton.setVisibility(View.GONE);
+        mGenericMergeButton.setVisibility(View.GONE);
     }
 
     @Override
-    public void showCDMAMergeButton() {
+    public void showGenericMergeButton() {
         mExtraRowButton.setVisibility(View.VISIBLE);
         mManageConferenceButton.setVisibility(View.GONE);
-        mCDMAMergeButton.setVisibility(View.VISIBLE);
+        mGenericMergeButton.setVisibility(View.VISIBLE);
     }
 
     @Override
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index ec8e844..3642630 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -19,21 +19,29 @@
 import com.android.incallui.AudioModeProvider.AudioModeListener;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
+import com.android.incallui.InCallPresenter.IncomingCallListener;
 import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.Call;
 import com.android.services.telephony.common.Call.Capabilities;
 
+import android.telephony.PhoneNumberUtils;
+
 /**
  * Logic for call buttons.
  */
 public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButtonUi>
-        implements InCallStateListener, AudioModeListener {
+        implements InCallStateListener, AudioModeListener, IncomingCallListener {
 
     private Call mCall;
     private ProximitySensor mProximitySensor;
     private boolean mAutomaticallyMuted = false;
     private boolean mPreviousMuteState = false;
 
+    private boolean mShowGenericMerge = false;
+    private boolean mShowManageConference = false;
+
+    private InCallState mPreviousState = null;
+
     public CallButtonPresenter() {
     }
 
@@ -46,6 +54,7 @@
 
         // register for call state changes last
         InCallPresenter.getInstance().addListener(this);
+        InCallPresenter.getInstance().addIncomingCallListener(this);
     }
 
     @Override
@@ -54,6 +63,7 @@
 
         InCallPresenter.getInstance().removeListener(this);
         AudioModeProvider.getInstance().removeListener(this);
+        InCallPresenter.getInstance().removeIncomingCallListener(this);
 
         mProximitySensor = null;
     }
@@ -64,11 +74,29 @@
             mCall = callList.getOutgoingCall();
         } else if (state == InCallState.INCALL) {
             mCall = callList.getActiveOrBackgroundCall();
+
+            // When connected to voice mail, automatically shows the dialpad.
+            // (On previous releases we showed it when in-call shows up, before waiting for
+            // OUTGOING.  We may want to do that once we start showing "Voice mail" label on
+            // the dialpad too.)
+            if (mPreviousState == InCallState.OUTGOING
+                    && mCall != null && PhoneNumberUtils.isVoiceMailNumber(mCall.getNumber())) {
+                getUi().displayDialpad(true);
+            }
+        } else if (state == InCallState.INCOMING) {
+            getUi().displayDialpad(false);
+            mCall = null;
         } else {
             mCall = null;
         }
-
         updateUi(state, mCall);
+
+        mPreviousState = state;
+    }
+
+    @Override
+    public void onIncomingCall(InCallState state, Call call) {
+        onStateChange(state, CallList.getInstance());
     }
 
     @Override
@@ -138,7 +166,6 @@
             return;
         }
 
-        // TODO(klp): hook up call id.
         CallCommandClient.getInstance().disconnectCall(mCall.getCallId());
     }
 
@@ -148,7 +175,6 @@
 
     public void muteClicked(boolean checked) {
         Log.d(this, "turning on mute: " + checked);
-
         CallCommandClient.getInstance().mute(checked);
     }
 
@@ -159,7 +185,6 @@
 
         Log.d(this, "holding: " + mCall.getCallId());
 
-        // TODO(klp): use appropriate hold callId.
         CallCommandClient.getInstance().hold(mCall.getCallId(), checked);
         getUi().setHold(checked);
     }
@@ -172,7 +197,8 @@
         // Automatically mute the current call
         mAutomaticallyMuted = true;
         mPreviousMuteState = AudioModeProvider.getInstance().getMute();
-        getUi().setMute(true);
+        // Simulate a click on the mute button
+        muteClicked(true);
 
         CallCommandClient.getInstance().addCall();
     }
@@ -185,6 +211,8 @@
         Log.v(this, "Show dialpad " + String.valueOf(checked));
         getUi().displayDialpad(checked);
         mProximitySensor.onDialpadVisible(checked);
+
+        updateExtraButtonRow();
     }
 
     private void updateUi(InCallState state, Call call) {
@@ -193,33 +221,73 @@
             return;
         }
 
-        final boolean isVisible = state.isConnectingOrConnected() &&
+        final boolean isEnabled = state.isConnectingOrConnected() &&
                 !state.isIncoming() && call != null;
 
-        ui.setVisible(isVisible);
+        ui.setEnabled(isEnabled);
 
         Log.d(this, "Updating call UI for call: ", call);
 
-        if (isVisible) {
-            Log.v(this, "Show hold ", call.can(Capabilities.HOLD));
+        if (isEnabled) {
+            Log.v(this, "Show hold ", call.can(Capabilities.SUPPORT_HOLD));
+            Log.v(this, "Enable hold", call.can(Capabilities.HOLD));
             Log.v(this, "Show merge ", call.can(Capabilities.MERGE_CALLS));
             Log.v(this, "Show swap ", call.can(Capabilities.SWAP_CALLS));
             Log.v(this, "Show add call ", call.can(Capabilities.ADD_CALL));
+            Log.v(this, "Show mute ", call.can(Capabilities.MUTE));
 
-            ui.setHold(call.getState() == Call.State.ONHOLD);
+            final boolean canMerge = call.can(Capabilities.MERGE_CALLS);
+            final boolean canAdd = call.can(Capabilities.ADD_CALL);
+            final boolean isGenericConference = call.can(Capabilities.GENERIC_CONFERENCE);
 
-            ui.showHold(call.can(Capabilities.HOLD));
-            ui.showMerge(call.can(Capabilities.MERGE_CALLS));
-            ui.showSwap(call.can(Capabilities.SWAP_CALLS));
-            ui.showAddCall(call.can(Capabilities.ADD_CALL));
 
-            // Restore the previous mute state
-            if (mAutomaticallyMuted &&
-                    AudioModeProvider.getInstance().getMute() != mPreviousMuteState) {
-                ui.setMute(mPreviousMuteState);
-                mAutomaticallyMuted = false;
+            final boolean showMerge = !isGenericConference && canMerge;
+
+            if (showMerge) {
+                ui.showMerge(true);
+                ui.showAddCall(false);
+            } else {
+                ui.showMerge(false);
+                ui.showAddCall(true);
+                ui.enableAddCall(canAdd);
             }
 
+            final boolean canHold = call.can(Capabilities.HOLD);
+            final boolean canSwap = call.can(Capabilities.SWAP_CALLS);
+            final boolean supportHold = call.can(Capabilities.SUPPORT_HOLD);
+
+            if (canHold) {
+                ui.showHold(true);
+                ui.setHold(call.getState() == Call.State.ONHOLD);
+                ui.enableHold(true);
+                ui.showSwap(false);
+            } else if (canSwap) {
+                ui.showHold(false);
+                ui.showSwap(true);
+            } else {
+                // Neither "Hold" nor "Swap" is available.  This can happen for two
+                // reasons:
+                //   (1) this is a transient state on a device that *can*
+                //       normally hold or swap, or
+                //   (2) this device just doesn't have the concept of hold/swap.
+                //
+                // In case (1), show the "Hold" button in a disabled state.  In case
+                // (2), remove the button entirely.  (This means that the button row
+                // will only have 4 buttons on some devices.)
+
+                if (supportHold) {
+                    ui.showHold(true);
+                    ui.enableHold(false);
+                    ui.setHold(call.getState() == Call.State.ONHOLD);
+                    ui.showSwap(false);
+                } else {
+                    ui.showHold(false);
+                    ui.showSwap(false);
+                }
+            }
+
+            ui.enableMute(call.can(Capabilities.MUTE));
+
             // Finally, update the "extra button row": It's displayed above the
             // "End" button, but only if necessary.  Also, it's never displayed
             // while the dialpad is visible (since it would overlap.)
@@ -228,42 +296,61 @@
             //
             // - "Manage conference" (used only on GSM devices)
             // - "Merge" button (used only on CDMA devices)
-            // TODO(klp) Add cdma merge button
-            final boolean showCdmaMerge = false;
-//                    (phoneType == PhoneConstants.PHONE_TYPE_CDMA) && inCallControlState.canMerge;
-            final boolean showExtraButtonRow =
-                    (showCdmaMerge || call.isConferenceCall()) && !getUi().isDialpadVisible();
-            if (showExtraButtonRow) {
-                // Need to set up mCdmaMergeButton and mManageConferenceButton if this is the first
-                // time they're visible.
-                // TODO(klp) add cdma merge button
-//                if (mCdmaMergeButton == null) {
-//                    setupExtraButtons();
-//                }
-//                mCdmaMergeButton.setVisibility(showCdmaMerge ? View.VISIBLE : View.GONE);
-                if (call.isConferenceCall()) {
-                    getUi().showManageConferenceCallButton();
-                }
-            } else {
-                getUi().hideExtraRow();
-            }
+
+            mShowGenericMerge = isGenericConference && canMerge;
+            mShowManageConference = (call.isConferenceCall() && !isGenericConference);
+
+            updateExtraButtonRow();
         }
     }
 
+    private void updateExtraButtonRow() {
+        final boolean showExtraButtonRow = (mShowGenericMerge || mShowManageConference) &&
+                !getUi().isDialpadVisible();
+
+        Log.d(this, "isGeneric: " + mShowGenericMerge);
+        Log.d(this, "mShowManageConference : " + mShowManageConference);
+        Log.d(this, "mShowGenericMerge: " + mShowGenericMerge);
+        if (showExtraButtonRow) {
+            if (mShowGenericMerge) {
+                getUi().showGenericMergeButton();
+            } else if (mShowManageConference) {
+                getUi().showManageConferenceCallButton();
+            }
+        } else {
+            getUi().hideExtraRow();
+        }
+    }
+
+    public void refreshMuteState() {
+        // Restore the previous mute state
+        if (mAutomaticallyMuted &&
+                AudioModeProvider.getInstance().getMute() != mPreviousMuteState) {
+            if (getUi() == null) {
+                return;
+            }
+            muteClicked(mPreviousMuteState);
+        }
+        mAutomaticallyMuted = false;
+    }
+
     public interface CallButtonUi extends Ui {
-        void setVisible(boolean on);
+        void setEnabled(boolean on);
         void setMute(boolean on);
+        void enableMute(boolean enabled);
         void setHold(boolean on);
         void showHold(boolean show);
+        void enableHold(boolean enabled);
         void showMerge(boolean show);
         void showSwap(boolean show);
         void showAddCall(boolean show);
+        void enableAddCall(boolean enabled);
         void displayDialpad(boolean on);
         boolean isDialpadVisible();
         void setAudio(int mode);
         void setSupportedAudio(int mask);
         void showManageConferenceCallButton();
-        void showCDMAMergeButton();
+        void showGenericMergeButton();
         void hideExtraRow();
         void displayManageConferencePanel(boolean on);
     }
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index b8df2cf..0d26b82 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -29,11 +29,14 @@
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.ViewStub;
+import android.view.accessibility.AccessibilityEvent;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.android.services.telephony.common.Call;
 
+import java.util.List;
+
 /**
  * Fragment for call card.
  */
@@ -45,6 +48,7 @@
     private TextView mNumberLabel;
     private TextView mPrimaryName;
     private TextView mCallStateLabel;
+    private TextView mCallTypeLabel;
     private ImageView mPhoto;
     private TextView mElapsedTime;
     private View mProviderInfo;
@@ -74,6 +78,12 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+    }
+
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
 
         final CallList calls = CallList.getInstance();
         final Call call = calls.getFirstCall();
@@ -100,6 +110,7 @@
         mSecondaryCallInfo = (ViewStub) view.findViewById(R.id.secondary_call_info);
         mPhoto = (ImageView) view.findViewById(R.id.photo);
         mCallStateLabel = (TextView) view.findViewById(R.id.callStateLabel);
+        mCallTypeLabel = (TextView) view.findViewById(R.id.callTypeLabel);
         mElapsedTime = (TextView) view.findViewById(R.id.elapsedTime);
         mProviderInfo = view.findViewById(R.id.providerInfo);
         mProviderLabel = (TextView) view.findViewById(R.id.providerLabel);
@@ -134,9 +145,9 @@
     }
 
     @Override
-    public void setPrimaryImage(Bitmap image) {
+    public void setPrimaryImage(Drawable image) {
         if (image != null) {
-            setDrawableToImageView(mPhoto, new BitmapDrawable(getResources(), image));
+            setDrawableToImageView(mPhoto, image);
         }
     }
 
@@ -165,49 +176,37 @@
     }
 
     @Override
-    public void setPrimaryGateway(String gatewayLabel, String gatewayNumber) {
-        if (!TextUtils.isEmpty(gatewayLabel) && !TextUtils.isEmpty(gatewayNumber)) {
-            mProviderLabel.setText(gatewayLabel);
-            mProviderNumber.setText(gatewayNumber);
-            mProviderInfo.setVisibility(View.VISIBLE);
-        } else {
-            mProviderInfo.setVisibility(View.GONE);
-        }
-    }
-
-    @Override
     public void setPrimary(String number, String name, boolean nameIsNumber, String label,
-            Drawable photo, boolean isConference, String gatewayLabel, String gatewayNumber) {
-        Log.d(this, "Setting primary call [" + gatewayLabel + "][" + gatewayNumber + "]");
+            Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall) {
+        Log.d(this, "Setting primary call");
 
         if (isConference) {
-            name = getView().getResources().getString(R.string.card_title_conf_call);
-            photo = getView().getResources().getDrawable(R.drawable.picture_conference);
+            name = getConferenceString(isGeneric);
+            photo = getConferencePhoto(isGeneric);
             nameIsNumber = false;
         }
 
         setPrimaryPhoneNumber(number);
 
-        // Set any gateway information
-        setPrimaryGateway(gatewayLabel, gatewayNumber);
-
         // set the name field.
         setPrimaryName(name, nameIsNumber);
 
         // Set the label (Mobile, Work, etc)
         setPrimaryLabel(label);
 
+        showInternetCallLabel(isSipCall);
+
         setDrawableToImageView(mPhoto, photo);
     }
 
     @Override
     public void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-            Drawable photo, boolean isConference) {
+            Drawable photo, boolean isConference, boolean isGeneric) {
 
         if (show) {
             if (isConference) {
-                name = getView().getResources().getString(R.string.card_title_conf_call);
-                photo = getView().getResources().getDrawable(R.drawable.picture_conference);
+                name = getConferenceString(isGeneric);
+                photo = getConferencePhoto(isGeneric);
                 nameIsNumber = false;
             }
 
@@ -227,41 +226,40 @@
     }
 
     @Override
-    public void setSecondaryImage(Bitmap bitmap) {
-        if (bitmap != null) {
-            setDrawableToImageView(mSecondaryPhoto, new BitmapDrawable(getResources(), bitmap));
+    public void setSecondaryImage(Drawable image) {
+        if (image != null) {
+            setDrawableToImageView(mSecondaryPhoto, image);
         }
     }
 
     @Override
-    public void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn) {
+    public void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn,
+            String gatewayLabel, String gatewayNumber) {
         String callStateLabel = null;
 
         // States other than disconnected not yet supported
         callStateLabel = getCallStateLabelFromState(state, cause);
 
-        Log.v(this, "setCallState ", callStateLabel);
-        Log.v(this, "DisconnectCause ", cause);
-        Log.v(this, "bluetooth on ", bluetoothOn);
+        Log.v(this, "setCallState " + callStateLabel);
+        Log.v(this, "DisconnectCause " + cause);
+        Log.v(this, "bluetooth on " + bluetoothOn);
+        Log.v(this, "gateway " + gatewayLabel + gatewayNumber);
 
+        // There are cases where we totally skip the animation, in which case remove the transition
+        // animation here and restore it afterwards.
+        final boolean skipAnimation = (Call.State.isDialing(state)
+                || state == Call.State.DISCONNECTED || state == Call.State.DISCONNECTING);
+        LayoutTransition transition = null;
+        if (skipAnimation) {
+            transition = mSupplementaryInfoContainer.getLayoutTransition();
+            mSupplementaryInfoContainer.setLayoutTransition(null);
+        }
+
+        // Update the call state label.
         if (!TextUtils.isEmpty(callStateLabel)) {
-            // There are cases where we totally skip the animation
-            final boolean skipAnimation = (state == Call.State.DIALING
-                    || state == Call.State.DISCONNECTED);
-
-            LayoutTransition transition = null;
-            if (skipAnimation) {
-                transition = mSupplementaryInfoContainer.getLayoutTransition();
-                mSupplementaryInfoContainer.setLayoutTransition(null);
-            }
-
             mCallStateLabel.setVisibility(View.VISIBLE);
             mCallStateLabel.setText(callStateLabel);
 
-            if (skipAnimation) {
-                mSupplementaryInfoContainer.setLayoutTransition(transition);
-            }
-
             if (Call.State.INCOMING == state) {
                 setBluetoothOn(bluetoothOn);
             }
@@ -276,6 +274,31 @@
                 mCallStateLabel.setGravity(Gravity.END);
             }
         }
+
+        // Provider info: (e.g. "Calling via <gatewayLabel>")
+        if (!TextUtils.isEmpty(gatewayLabel) && !TextUtils.isEmpty(gatewayNumber)) {
+            mProviderLabel.setText(gatewayLabel);
+            mProviderNumber.setText(gatewayNumber);
+            mProviderInfo.setVisibility(View.VISIBLE);
+        } else {
+            mProviderInfo.setVisibility(View.GONE);
+        }
+
+        // Restore the animation.
+        if (skipAnimation) {
+            mSupplementaryInfoContainer.setLayoutTransition(transition);
+        }
+    }
+
+    private void showInternetCallLabel(boolean show) {
+        if (show) {
+            final String label = getView().getContext().getString(
+                    R.string.incall_call_type_label_sip);
+            mCallTypeLabel.setVisibility(View.VISIBLE);
+            mCallTypeLabel.setText(label);
+        } else {
+            mCallTypeLabel.setVisibility(View.GONE);
+        }
     }
 
     @Override
@@ -302,15 +325,27 @@
             AnimationUtils.Fade.show(view);
         } else {
             AnimationUtils.startCrossFade(view, current, photo);
-            mPhoto.setVisibility(View.VISIBLE);
+            view.setVisibility(View.VISIBLE);
         }
     }
 
+    private String getConferenceString(boolean isGeneric) {
+        Log.v(this, "isGenericString: " + isGeneric);
+        final int resId = isGeneric ? R.string.card_title_in_call : R.string.card_title_conf_call;
+        return getView().getResources().getString(resId);
+    }
+
+    private Drawable getConferencePhoto(boolean isGeneric) {
+        Log.v(this, "isGenericPhoto: " + isGeneric);
+        final int resId = isGeneric ? R.drawable.picture_dialing : R.drawable.picture_conference;
+        return getView().getResources().getDrawable(resId);
+    }
+
     private void setBluetoothOn(boolean onOff) {
         // Also, display a special icon (alongside the "Incoming call"
         // label) if there's an incoming call and audio will be routed
         // to bluetooth when you answer it.
-        final int bluetoothIconId = R.drawable.ic_incoming_call_bluetooth;
+        final int bluetoothIconId = R.drawable.ic_in_call_bt_dk;
 
         if (onOff) {
             mCallStateLabel.setCompoundDrawablesWithIntrinsicBounds(bluetoothIconId, 0, 0, 0);
@@ -338,22 +373,21 @@
 
         } else if (Call.State.ONHOLD == state) {
             callStateLabel = context.getString(R.string.card_title_on_hold);
-
         } else if (Call.State.DIALING == state) {
             callStateLabel = context.getString(R.string.card_title_dialing);
-
+        } else if (Call.State.REDIALING == state) {
+            callStateLabel = context.getString(R.string.card_title_redialing);
         } else if (Call.State.INCOMING == state || Call.State.CALL_WAITING == state) {
             callStateLabel = context.getString(R.string.card_title_incoming_call);
 
-        // TODO(klp): Add a disconnecting state
-        //} else if (Call.State.DISCONNECTING) {
-                // While in the DISCONNECTING state we display a "Hanging up"
-                // message in order to make the UI feel more responsive.  (In
-                // GSM it's normal to see a delay of a couple of seconds while
-                // negotiating the disconnect with the network, so the "Hanging
-                // up" state at least lets the user know that we're doing
-                // something.  This state is currently not used with CDMA.)
-                //callStateLabel = context.getString(R.string.card_title_hanging_up);
+        } else if (Call.State.DISCONNECTING == state) {
+            // While in the DISCONNECTING state we display a "Hanging up"
+            // message in order to make the UI feel more responsive.  (In
+            // GSM it's normal to see a delay of a couple of seconds while
+            // negotiating the disconnect with the network, so the "Hanging
+            // up" state at least lets the user know that we're doing
+            // something.  This state is currently not used with CDMA.)
+            callStateLabel = context.getString(R.string.card_title_hanging_up);
 
         } else if (Call.State.DISCONNECTED == state) {
             callStateLabel = getCallFailedString(cause);
@@ -461,6 +495,33 @@
                     getPresenter().secondaryPhotoClicked();
                 }
             });
+            mSecondaryPhotoOverlay.setOnTouchListener(new SmallerHitTargetTouchListener());
+        }
+    }
+
+    public void dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+        if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
+            dispatchPopulateAccessibilityEvent(event, mPrimaryName);
+            dispatchPopulateAccessibilityEvent(event, mPhoneNumber);
+            return;
+        }
+        dispatchPopulateAccessibilityEvent(event, mCallStateLabel);
+        dispatchPopulateAccessibilityEvent(event, mPrimaryName);
+        dispatchPopulateAccessibilityEvent(event, mPhoneNumber);
+        dispatchPopulateAccessibilityEvent(event, mCallTypeLabel);
+        dispatchPopulateAccessibilityEvent(event, mSecondaryCallName);
+
+        return;
+    }
+
+    private void dispatchPopulateAccessibilityEvent(AccessibilityEvent event, View view) {
+        if (view == null) return;
+        final List<CharSequence> eventText = event.getText();
+        int size = eventText.size();
+        view.dispatchPopulateAccessibilityEvent(event);
+        // if no text added write null to keep relative position
+        if (size == eventText.size()) {
+            eventText.add(null);
         }
     }
 }
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index d44a661..949d718 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -30,8 +30,10 @@
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
+import com.android.incallui.InCallPresenter.IncomingCallListener;
 import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.Call;
+import com.android.services.telephony.common.Call.Capabilities;
 import com.android.services.telephony.common.CallIdentification;
 import com.google.common.base.Preconditions;
 
@@ -41,7 +43,7 @@
  * This class listens for changes to InCallState and passes it along to the fragment.
  */
 public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
-        implements InCallStateListener, AudioModeListener {
+        implements InCallStateListener, AudioModeListener, IncomingCallListener {
 
     private static final String TAG = CallCardPresenter.class.getSimpleName();
     private static final long CALL_TIME_UPDATE_INTERVAL = 1000; // in milliseconds
@@ -73,15 +75,13 @@
 
             final CallIdentification identification = call.getIdentification();
 
-            // TODO(klp): Logic to determine which ui field get what data resides in
-            // contactInfoCache.
-            // It needs to be moved so it can be re-used.
-            mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext, identification,
-                    call.getState() == Call.State.INCOMING);
-
             // start processing lookups right away.
-            startContactInfoSearch(identification, true, false,
-                    call.getState() == Call.State.INCOMING);
+            if (!call.isConferenceCall()) {
+                startContactInfoSearch(identification, true,
+                        call.getState() == Call.State.INCOMING);
+            } else {
+                updateContactEntry(null, true, true);
+            }
         }
     }
 
@@ -93,11 +93,12 @@
 
         // Contact search may have completed before ui is ready.
         if (mPrimaryContactInfo != null) {
-            updatePrimaryDisplayInfo(mPrimaryContactInfo, false);
+            updatePrimaryDisplayInfo(mPrimaryContactInfo, isConference(mPrimary));
         }
 
         // Register for call state changes last
         InCallPresenter.getInstance().addListener(this);
+        InCallPresenter.getInstance().addIncomingCallListener(this);
     }
 
     @Override
@@ -106,6 +107,7 @@
 
         // stop getting call state changes
         InCallPresenter.getInstance().removeListener(this);
+        InCallPresenter.getInstance().removeIncomingCallListener(this);
 
         AudioModeProvider.getInstance().removeListener(this);
 
@@ -115,6 +117,12 @@
     }
 
     @Override
+    public void onIncomingCall(InCallState state, Call call) {
+        // same logic should happen as with onStateChange()
+        onStateChange(state, CallList.getInstance());
+    }
+
+    @Override
     public void onStateChange(InCallState state, CallList callList) {
         Log.d(this, "onStateChange() " + state);
         final CallCardUi ui = getUi();
@@ -141,35 +149,31 @@
         Log.d(this, "Primary call: " + primary);
         Log.d(this, "Secondary call: " + secondary);
 
-        if (primary != null) {
-            if (mPrimary == null || mPrimary.getCallId() != primary.getCallId()) {
-                // primary call has changed
-                mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
-                        primary.getIdentification(), primary.getState() == Call.State.INCOMING);
-                updatePrimaryDisplayInfo(mPrimaryContactInfo, isConference(primary));
-                startContactInfoSearch(primary.getIdentification(), true,
-                        primary.isConferenceCall(), primary.getState() == Call.State.INCOMING);
-            }
+        final boolean primaryChanged = !areCallsSame(mPrimary, primary);
+        final boolean secondaryChanged = !areCallsSame(mSecondary, secondary);
+        mSecondary = secondary;
+        mPrimary = primary;
+
+        if (primaryChanged && mPrimary != null) {
+            // primary call has changed
+            mPrimaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
+                    mPrimary.getIdentification(), mPrimary.getState() == Call.State.INCOMING);
+            updatePrimaryDisplayInfo(mPrimaryContactInfo, isConference(mPrimary));
+            maybeStartSearch(mPrimary, true);
         }
 
-        if (secondary == null) {
+        if (mSecondary == null) {
             // Secondary call may have ended.  Update the ui.
             mSecondaryContactInfo = null;
             updateSecondaryDisplayInfo(false);
-        } else {
-            if (mSecondary == null || mSecondary.getCallId() != secondary.getCallId()) {
-                // secondary call has changed
-                mSecondaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
-                        secondary.getIdentification(), secondary.getState() == Call.State.INCOMING);
-                updateSecondaryDisplayInfo(secondary.isConferenceCall());
-                startContactInfoSearch(secondary.getIdentification(), false,
-                        secondary.isConferenceCall(), secondary.getState() == Call.State.INCOMING);
-            }
+        } else if (secondaryChanged) {
+            // secondary call has changed
+            mSecondaryContactInfo = ContactInfoCache.buildCacheEntryFromCall(mContext,
+                    mSecondary.getIdentification(), mSecondary.getState() == Call.State.INCOMING);
+            updateSecondaryDisplayInfo(mSecondary.isConferenceCall());
+            maybeStartSearch(mSecondary, false);
         }
 
-        mPrimary = primary;
-        mSecondary = secondary;
-
         // Start/Stop the call time update timer
         if (mPrimary != null && mPrimary.getState() == Call.State.ACTIVE) {
             Log.d(this, "Starting the calltime timer");
@@ -184,9 +188,10 @@
         if (mPrimary != null) {
             final boolean bluetoothOn =
                     (AudioModeProvider.getInstance().getAudioMode() == AudioMode.BLUETOOTH);
-            ui.setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn);
+            ui.setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn,
+                    getGatewayLabel(), getGatewayNumber());
         } else {
-            ui.setCallState(Call.State.IDLE, Call.DisconnectCause.UNKNOWN, false);
+            ui.setCallState(Call.State.IDLE, Call.DisconnectCause.UNKNOWN, false, null, null);
         }
     }
 
@@ -195,7 +200,8 @@
         if (mPrimary != null && getUi() != null) {
             final boolean bluetoothOn = (AudioMode.BLUETOOTH == mode);
 
-            getUi().setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn);
+            getUi().setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn,
+                    getGatewayLabel(), getGatewayNumber());
         }
     }
 
@@ -222,39 +228,66 @@
         }
     }
 
+    private boolean areCallsSame(Call call1, Call call2) {
+        if (call1 == null && call2 == null) {
+            return true;
+        } else if (call1 == null || call2 == null) {
+            return false;
+        }
+
+        // otherwise compare call Ids
+        return call1.getCallId() == call2.getCallId();
+    }
+
+    private void maybeStartSearch(Call call, boolean isPrimary) {
+        // no need to start search for conference calls which show generic info.
+        if (call != null && !call.isConferenceCall()) {
+            startContactInfoSearch(call.getIdentification(), isPrimary,
+                    call.getState() == Call.State.INCOMING);
+        }
+    }
+
     /**
      * Starts a query for more contact data for the save primary and secondary calls.
      */
     private void startContactInfoSearch(final CallIdentification identification,
-            final boolean isPrimary, final boolean isConference, boolean isIncoming) {
-
+            final boolean isPrimary, boolean isIncoming) {
         final ContactInfoCache cache = ContactInfoCache.getInstance(mContext);
 
         cache.findInfo(identification, isIncoming, new ContactInfoCacheCallback() {
                 @Override
                 public void onContactInfoComplete(int callId, ContactCacheEntry entry) {
-                    updateContactEntry(entry, isPrimary, isConference);
+                    updateContactEntry(entry, isPrimary, false);
                     if (entry.name != null) {
                         Log.d(TAG, "Contact found: " + entry);
                     }
+                    if (entry.personUri != null) {
+                        CallerInfoUtils.sendViewNotification(mContext, entry.personUri);
+                    }
                 }
 
                 @Override
-                public void onImageLoadComplete(int callId, Bitmap photo) {
-                    if (mPrimary != null && callId == mPrimary.getCallId()) {
-                        getUi().setPrimaryImage(photo);
-                    } else if (mSecondary != null && callId == mSecondary.getCallId()) {
-                        getUi().setSecondaryImage(photo);
+                public void onImageLoadComplete(int callId, ContactCacheEntry entry) {
+                    if (getUi() == null) {
+                        return;
+                    }
+                    if (entry.photo != null) {
+                        if (mPrimary != null && callId == mPrimary.getCallId()) {
+                            getUi().setPrimaryImage(entry.photo);
+                        } else if (mSecondary != null && callId == mSecondary.getCallId()) {
+                            getUi().setSecondaryImage(entry.photo);
+                        }
                     }
                 }
             });
     }
 
-    private boolean isConference(Call call) {
-        if (call == null) {
-            return false;
-        }
-        return call.isConferenceCall();
+    private static boolean isConference(Call call) {
+        return call != null && call.isConferenceCall();
+    }
+
+    private static boolean isGenericConference(Call call) {
+        return call != null && call.can(Capabilities.GENERIC_CONFERENCE);
     }
 
     private void updateContactEntry(ContactCacheEntry entry, boolean isPrimary,
@@ -288,6 +321,10 @@
         // to let user know quickly what call has disconnected. Disconnected
         // calls are very short lived.
         if (!skipDisconnected) {
+            retval = callList.getDisconnectingCall();
+            if (retval != null && retval != ignore) {
+                return retval;
+            }
             retval = callList.getDisconnectedCall();
             if (retval != null && retval != ignore) {
                 return retval;
@@ -316,19 +353,15 @@
             return;
         }
 
+        final boolean isGenericConf = isGenericConference(mPrimary);
         if (entry != null) {
             final String name = getNameForCall(entry);
             final String number = getNumberForCall(entry);
             final boolean nameIsNumber = name != null && name.equals(entry.number);
-            final String gatewayLabel = getGatewayLabel();
-            final String gatewayNumber = getGatewayNumber();
-
             ui.setPrimary(number, name, nameIsNumber, entry.label,
-                    entry.photo, isConference, gatewayLabel,
-                    gatewayNumber);
+                    entry.photo, isConference, isGenericConf, entry.isSipCall);
         } else {
-            // reset to nothing (like at end of call)
-            ui.setPrimary(null, null, false, null, null, false, null, null);
+            ui.setPrimary(null, null, false, null, null, isConference, isGenericConf, false);
         }
 
     }
@@ -340,6 +373,7 @@
             return;
         }
 
+        final boolean isGenericConf = isGenericConference(mSecondary);
         if (mSecondaryContactInfo != null) {
             Log.d(TAG, "updateSecondaryDisplayInfo() " + mSecondaryContactInfo);
             final String nameForCall = getNameForCall(mSecondaryContactInfo);
@@ -347,10 +381,10 @@
             final boolean nameIsNumber = nameForCall != null && nameForCall.equals(
                     mSecondaryContactInfo.number);
             ui.setSecondary(true, nameForCall, nameIsNumber, mSecondaryContactInfo.label,
-                    mSecondaryContactInfo.photo, isConference);
+                    mSecondaryContactInfo.photo, isConference, isGenericConf);
         } else {
             // reset to nothing so that it starts off blank next time we use it.
-            ui.setSecondary(false, null, false, null, null, false);
+            ui.setSecondary(false, null, false, null, null, isConference, isGenericConf);
         }
     }
 
@@ -390,7 +424,7 @@
         if (mPrimary == null) {
             return false;
         }
-        return (mPrimary.getState() == Call.State.DIALING &&
+        return (Call.State.isDialing(mPrimary.getState()) &&
                 !TextUtils.isEmpty(mPrimary.getGatewayNumber()) &&
                 !TextUtils.isEmpty(mPrimary.getGatewayPackage()));
     }
@@ -424,16 +458,16 @@
     public interface CallCardUi extends Ui {
         void setVisible(boolean on);
         void setPrimary(String number, String name, boolean nameIsNumber, String label,
-                Drawable photo, boolean isConference, String gatewayLabel, String gatewayNumber);
+                Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall);
         void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-                Drawable photo, boolean isConference);
-        void setSecondaryImage(Bitmap bitmap);
-        void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn);
+                Drawable photo, boolean isConference, boolean isGeneric);
+        void setSecondaryImage(Drawable image);
+        void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn,
+                String gatewayLabel, String gatewayNumber);
         void setPrimaryCallElapsedTime(boolean show, String duration);
         void setPrimaryName(String name, boolean nameIsNumber);
-        void setPrimaryImage(Bitmap bitmap);
+        void setPrimaryImage(Drawable image);
         void setPrimaryPhoneNumber(String phoneNumber);
         void setPrimaryLabel(String label);
-        void setPrimaryGateway(String label, String number);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/CallCommandClient.java b/InCallUI/src/com/android/incallui/CallCommandClient.java
index cb49dca..52d2100 100644
--- a/InCallUI/src/com/android/incallui/CallCommandClient.java
+++ b/InCallUI/src/com/android/incallui/CallCommandClient.java
@@ -18,8 +18,10 @@
 
 import android.os.RemoteException;
 
+
 import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.ICallCommandService;
+import com.android.services.telephony.common.Call;
 
 /**
  * Main interface for phone related commands.
@@ -57,14 +59,15 @@
         }
     }
 
-    public void rejectCall(int callId, boolean rejectWithMessage, String message) {
-        Log.i(this, "rejectCall: " + callId + ", with rejectMessage? " + rejectWithMessage);
+    public void rejectCall(Call call, boolean rejectWithMessage, String message) {
+        Log.i(this, "rejectCall: " + call.getCallId() +
+                ", with rejectMessage? " + rejectWithMessage);
         if (mCommandService == null) {
             Log.e(this, "Cannot reject call; CallCommandService == null");
             return;
         }
         try {
-            mCommandService.rejectCall(callId, rejectWithMessage, message);
+            mCommandService.rejectCall(call, rejectWithMessage, message);
         } catch (RemoteException e) {
             Log.e(this, "Error rejecting call.", e);
         }
@@ -227,4 +230,17 @@
         }
     }
 
+    public void setSystemBarNavigationEnabled(boolean enable) {
+        if (mCommandService == null) {
+            Log.e(this, "Cannot setSystemBarNavigationEnabled(); CallCommandService == null");
+            return;
+        }
+        try {
+            Log.v(this, "setSystemBarNavigationEnabled() enabled = " + enable);
+            mCommandService.setSystemBarNavigationEnabled(enable);
+        } catch (RemoteException e) {
+            Log.d(this, "Error on setSystemBarNavigationEnabled().");
+        }
+    }
+
 }
diff --git a/InCallUI/src/com/android/incallui/CallHandlerService.java b/InCallUI/src/com/android/incallui/CallHandlerService.java
index d50635d..06b10ab 100644
--- a/InCallUI/src/com/android/incallui/CallHandlerService.java
+++ b/InCallUI/src/com/android/incallui/CallHandlerService.java
@@ -174,8 +174,9 @@
         }
 
         @Override
-        public void bringToForeground() {
-            mMainHandler.sendMessage(mMainHandler.obtainMessage(ON_BRING_TO_FOREGROUND));
+        public void bringToForeground(boolean showDialpad) {
+            mMainHandler.sendMessage(mMainHandler.obtainMessage(ON_BRING_TO_FOREGROUND,
+                    showDialpad ? 1 : 0, 0));
         }
 
         @Override
@@ -290,9 +291,9 @@
                 mAudioModeProvider.onSupportedAudioModeChange(msg.arg1);
                 break;
             case ON_BRING_TO_FOREGROUND:
-                Log.i(TAG, "ON_BRING_TO_FOREGROUND");
+                Log.i(TAG, "ON_BRING_TO_FOREGROUND" + msg.arg1);
                 if (mInCallPresenter != null) {
-                    mInCallPresenter.bringToForeground();
+                    mInCallPresenter.bringToForeground(msg.arg1 != 0);
                 }
                 break;
             case ON_START:
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index 42f4eb9..ba123b0 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -83,10 +83,15 @@
     public void onDisconnect(Call call) {
         Log.d(this, "onDisconnect: ", call);
 
-        updateCallInMap(call);
+        boolean updated = updateCallInMap(call);
 
-        notifyCallUpdateListeners(call);
-        notifyListenersOfChange();
+        if (updated) {
+            // notify those listening for changes on this specific change
+            notifyCallUpdateListeners(call);
+
+            // notify those listening for all disconnects
+            notifyListenersOfDisconnect(call);
+        }
     }
 
     /**
@@ -187,7 +192,11 @@
     }
 
     public Call getOutgoingCall() {
-        return getFirstCallWithState(Call.State.DIALING);
+        Call call = getFirstCallWithState(Call.State.DIALING);
+        if (call == null) {
+            call = getFirstCallWithState(Call.State.REDIALING);
+        }
+        return call;
     }
 
     public Call getActiveCall() {
@@ -202,6 +211,10 @@
         return getFirstCallWithState(Call.State.DISCONNECTED);
     }
 
+    public Call getDisconnectingCall() {
+        return getFirstCallWithState(Call.State.DISCONNECTING);
+    }
+
     public Call getSecondBackgroundCall() {
         return getCallWithState(Call.State.ONHOLD, 1);
     }
@@ -223,19 +236,27 @@
         return call;
     }
 
-
     public Call getFirstCall() {
-        // TODO: should we switch to a simple list and pull the first one?
         Call result = getIncomingCall();
         if (result == null) {
-            result = getFirstCallWithState(Call.State.DIALING);
+            result = getOutgoingCall();
         }
         if (result == null) {
             result = getFirstCallWithState(Call.State.ACTIVE);
         }
+        if (result == null) {
+            result = getDisconnectingCall();
+        }
+        if (result == null) {
+            result = getDisconnectedCall();
+        }
         return result;
     }
 
+    public Call getCall(int callId) {
+        return mCallMap.get(callId);
+    }
+
     public boolean existsLiveCall() {
         for (Call call : mCallMap.values()) {
             if (!isCallDead(call)) {
@@ -258,7 +279,7 @@
 
     /**
      * Returns the [position]th call found in the call map with the specified state.
-     * TODO(klp): Improve this logic to sort by call time.
+     * TODO: Improve this logic to sort by call time.
      */
     public Call getCallWithState(int state, int positionToFind) {
         Call retval = null;
@@ -306,13 +327,24 @@
         }
     }
 
-    private void updateCallInMap(Call call) {
+    private void notifyListenersOfDisconnect(Call call) {
+        for (Listener listener : mListeners) {
+            listener.onDisconnect(call);
+        }
+    }
+
+    /**
+     * Updates the call entry in the local map.
+     * @return false if no call previously existed and no call was added, otherwise true.
+     */
+    private boolean updateCallInMap(Call call) {
         Preconditions.checkNotNull(call);
 
+        boolean updated = false;
+
         final Integer id = new Integer(call.getCallId());
 
         if (call.getState() == Call.State.DISCONNECTED) {
-
             // update existing (but do not add!!) disconnected calls
             if (mCallMap.containsKey(id)) {
 
@@ -324,12 +356,17 @@
                 mHandler.sendMessageDelayed(msg, getDelayForDisconnect(call));
 
                 mCallMap.put(id, call);
+                updated = true;
             }
         } else if (!isCallDead(call)) {
             mCallMap.put(id, call);
+            updated = true;
         } else if (mCallMap.containsKey(id)) {
             mCallMap.remove(id);
+            updated = true;
         }
+
+        return updated;
     }
 
     private int getDelayForDisconnect(Call call) {
@@ -409,8 +446,28 @@
      * to the call list.
      */
     public interface Listener {
-        public void onCallListChange(CallList callList);
+        /**
+         * Called when a new incoming call comes in.
+         * This is the only method that gets called for incoming calls. Listeners
+         * that want to perform an action on incoming call should respond in this method
+         * because {@link #onCallListChange} does not automatically get called for
+         * incoming calls.
+         */
         public void onIncomingCall(Call call);
+
+        /**
+         * Called anytime there are changes to the call list.  The change can be switching call
+         * states, updating information, etc. This method will NOT be called for new incoming
+         * calls and for calls that switch to disconnected state. Listeners must add actions
+         * to those method implementations if they want to deal with those actions.
+         */
+        public void onCallListChange(CallList callList);
+
+        /**
+         * Called when a call switches to the disconnected state.  This is the only method
+         * that will get called upon disconnection.
+         */
+        public void onDisconnect(Call call);
     }
 
     public interface CallUpdateListener {
diff --git a/InCallUI/src/com/android/incallui/CallerInfoUtils.java b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
index e282d50..3d2c5c4 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoUtils.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
@@ -1,6 +1,8 @@
 package com.android.incallui;
 
 import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
 import android.text.TextUtils;
 
 import com.android.services.telephony.common.Call;
@@ -9,7 +11,7 @@
 import java.util.Arrays;
 
 /**
- * TODO: Insert description here. (generated by yorkelee)
+ * Utility methods for contact and caller info related functionality
  */
 public class CallerInfoUtils {
 
@@ -18,6 +20,12 @@
     /** Define for not a special CNAP string */
     private static final int CNAP_SPECIAL_CASE_NO = -1;
 
+    private static final String VIEW_NOTIFICATION_ACTION =
+            "com.android.contacts.VIEW_NOTIFICATION";
+    private static final String VIEW_NOTIFICATION_PACKAGE = "com.android.contacts";
+    private static final String VIEW_NOTIFICATION_CLASS =
+            "com.android.contacts.ViewNotificationService";
+
     public CallerInfoUtils() {
     }
 
@@ -153,7 +161,7 @@
             return "";
         }
 
-        // Todo (klp): Figure out an equivalent for VDBG
+        // Todo: Figure out an equivalent for VDBG
         if (false) {
             // When VDBG is true we emit PII.
             return number;
@@ -172,4 +180,14 @@
         }
         return builder.toString();
     }
+
+    /**
+     * Send a notification that that we are viewing a particular contact, so that the high-res
+     * photo is downloaded by the sync adapter.
+     */
+    public static void sendViewNotification(Context context, Uri contactUri) {
+        final Intent intent = new Intent(VIEW_NOTIFICATION_ACTION, contactUri);
+        intent.setClassName(VIEW_NOTIFICATION_PACKAGE, VIEW_NOTIFICATION_CLASS);
+        context.startService(intent);
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
index 041614d..1ba88cb 100644
--- a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
+++ b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
@@ -21,6 +21,7 @@
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
+import com.android.services.telephony.common.Call;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSortedSet;
@@ -57,11 +58,15 @@
     public void onStateChange(InCallState state, CallList callList) {
         if (getUi().isFragmentVisible()) {
             Log.v(this, "onStateChange" + state);
-            if (state == InCallState.INCALL && callList.getActiveOrBackgroundCall() != null &&
-                    callList.getActiveOrBackgroundCall().isConferenceCall()) {
-                Log.v(this, "Number of existing calls is " +
-                        String.valueOf(callList.getActiveCall().getChildCallIds().size()));
-                update(callList);
+            if (state == InCallState.INCALL) {
+                final Call call = callList.getActiveOrBackgroundCall();
+                if (call != null && call.isConferenceCall()) {
+                    Log.v(this, "Number of existing calls is " +
+                            String.valueOf(call.getChildCallIds().size()));
+                    update(callList);
+                } else {
+                    getUi().setVisible(false);
+                }
             } else {
                 getUi().setVisible(false);
             }
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 9ad7c54..4b482cb 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -25,6 +25,7 @@
 import android.os.Looper;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
 import com.android.incallui.service.PhoneNumberService;
@@ -34,11 +35,13 @@
 import com.android.services.telephony.common.MoreStrings;
 import com.google.android.collect.Lists;
 import com.google.android.collect.Maps;
+import com.google.android.collect.Sets;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Class responsible for querying Contact Information for Call objects. Can perform asynchronous
@@ -54,8 +57,7 @@
     private final Context mContext;
     private final PhoneNumberService mPhoneNumberService;
     private final HashMap<Integer, ContactCacheEntry> mInfoMap = Maps.newHashMap();
-    private final HashMap<Integer, List<ContactInfoCacheCallback>> mCallBacks =
-        Maps.newHashMap();
+    private final HashMap<Integer, Set<ContactInfoCacheCallback>> mCallBacks = Maps.newHashMap();
 
     private static ContactInfoCache sCache = null;
 
@@ -115,7 +117,7 @@
 
         final int callId = identification.getCallId();
         final ContactCacheEntry cacheEntry = mInfoMap.get(callId);
-        List<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
+        Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
 
         // If we have a previously obtained intermediate result return that now
         if (cacheEntry != null) {
@@ -135,7 +137,7 @@
         }
         Log.d(TAG, "Contact lookup. In memory cache miss; searching provider.");
         // New lookup
-        callBacks = Lists.newArrayList();
+        callBacks = Sets.newHashSet();
         callBacks.add(callback);
         mCallBacks.put(callId, callBacks);
 
@@ -232,6 +234,12 @@
                 entry.location = oldEntry.location;
             }
 
+            // If no image and it's a business, switch to using the default business avatar.
+            if (info.getImageUrl() == null && info.isBusiness()) {
+                Log.d(TAG, "Business has no image. Using default.");
+                entry.photo = mContext.getResources().getDrawable(R.drawable.business_unknown);
+            }
+
             // Add the contact info to the cache.
             mInfoMap.put(mCallId, entry);
             sendInfoNotifications(mCallId, entry);
@@ -239,7 +247,8 @@
             // If there's an associated image, fetch that
             if (info.getImageUrl() != null) {
                 Log.d(TAG, "Contact lookup. Remote contact found, loading image.");
-                mPhoneNumberService.fetchImage(info.getImageUrl(), this);
+                mPhoneNumberService.fetchImage(info.getNormalizedNumber(),
+                        info.getImageUrl(), this);
             } else {
                 // Otherwise, we're done, so clear callbacks
                 Log.d(TAG, "Contact lookup. Remote contact found, no image.");
@@ -263,8 +272,6 @@
         Log.d(this, "Image load complete with context: ", mContext);
         // TODO: may be nice to update the image view again once the newer one
         // is available on contacts database.
-        // TODO (klp): What is this, and why does it need the write_contacts permission?
-        // CallerInfoUtils.sendViewNotificationAsync(mContext, mLoadingPersonUri);
 
         final int callId = (Integer) cookie;
         final ContactCacheEntry entry = mInfoMap.get(callId);
@@ -276,7 +283,7 @@
         }
         Log.d(this, "setting photo for entry: ", entry);
 
-        // TODO (klp): Handle conference calls
+        // Conference call icons are being handled in CallCardPresenter.
         if (photo != null) {
             Log.v(this, "direct drawable: ", photo);
             entry.photo = photo;
@@ -329,12 +336,6 @@
                 photo = context.getResources().getDrawable(R.drawable.picture_unknown);
             } else {
                 cce.personUri = personUri;
-
-                // If the image load is too slow, we show a default avatar icon afterward.
-                // If it is fast enough, this message will be canceled on onImageLoadComplete().
-                // TODO (klp): Figure out if this handler is still needed.
-                // mHandler.removeMessages(MESSAGE_SHOW_UNKNOWN_PHOTO);
-                // mHandler.sendEmptyMessageDelayed(MESSAGE_SHOW_UNKNOWN_PHOTO, MESSAGE_DELAY);
             }
         }
 
@@ -352,6 +353,7 @@
         String displayNumber = null;
         String displayLocation = null;
         String label = null;
+        boolean isSipCall = false;
 
             // It appears that there is a small change in behaviour with the
             // PhoneUtils' startGetCallerInfo whereby if we query with an
@@ -376,8 +378,12 @@
             // Then we could remove this hack, and instead ask the CallerInfo
             // for a "user visible" form of the SIP address.
             String number = info.phoneNumber;
-            if (number != null && number.startsWith("sip:")) {
-                number = number.substring(4);
+
+            if (!TextUtils.isEmpty(number)) {
+                isSipCall = PhoneNumberUtils.isUriNumber(number);
+                if (number.startsWith("sip:")) {
+                    number = number.substring(4);
+                }
             }
 
             if (TextUtils.isEmpty(info.name)) {
@@ -402,7 +408,8 @@
                     displayName = info.cnapName;
                     info.name = info.cnapName;
                     displayNumber = number;
-                    Log.d(TAG, "  ==> cnapName available: displayName '" + displayName + "', displayNumber '" + displayNumber + "'");
+                    Log.d(TAG, "  ==> cnapName available: displayName '" + displayName +
+                            "', displayNumber '" + displayNumber + "'");
                 } else {
                     // No name; all we have is a number. This is the typical
                     // case when an incoming call doesn't match any contact,
@@ -432,8 +439,8 @@
                     // AND a restricted presentation. However we leave it here in case of weird
                     // network behavior
                     displayName = getPresentationString(context, presentation);
-                    Log.d(TAG,
-                            "  ==> valid name, but presentation not allowed!" + " displayName = " + displayName);
+                    Log.d(TAG, "  ==> valid name, but presentation not allowed!" +
+                            " displayName = " + displayName);
                 } else {
                     displayName = info.name;
                     displayNumber = number;
@@ -447,13 +454,14 @@
         cce.number = displayNumber;
         cce.location = displayLocation;
         cce.label = label;
+        cce.isSipCall = isSipCall;
     }
 
     /**
      * Sends the updated information to call the callbacks for the entry.
      */
     private void sendInfoNotifications(int callId, ContactCacheEntry entry) {
-        final List<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);;
+        final Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
         if (callBacks != null) {
             for (ContactInfoCacheCallback callBack : callBacks) {
                 callBack.onContactInfoComplete(callId, entry);
@@ -462,21 +470,16 @@
     }
 
     private void sendImageNotifications(int callId, ContactCacheEntry entry) {
-        final List<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);;
-        if (callBacks != null) {
+        final Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
+        if (callBacks != null && entry.photo != null) {
             for (ContactInfoCacheCallback callBack : callBacks) {
-                if (entry.photo == null) {
-                    callBack.onImageLoadComplete(callId, null);
-                } else {
-                    callBack.onImageLoadComplete(callId, ((BitmapDrawable) entry.photo)
-                            .getBitmap());
-                }
+                callBack.onImageLoadComplete(callId, entry);
             }
         }
     }
 
     private void clearCallbacks(int callId) {
-        mCallBacks.remove(callId);;
+        mCallBacks.remove(callId);
     }
 
     /**
@@ -497,7 +500,7 @@
      */
     public interface ContactInfoCacheCallback {
         public void onContactInfoComplete(int callId, ContactCacheEntry entry);
-        public void onImageLoadComplete(int callId, Bitmap photo);
+        public void onImageLoadComplete(int callId, ContactCacheEntry entry);
     }
 
     public static class ContactCacheEntry {
@@ -506,6 +509,7 @@
         public String location;
         public String label;
         public Drawable photo;
+        public boolean isSipCall;
         public Uri personUri; // Used for local photo load
 
         @Override
@@ -516,6 +520,7 @@
                     .add("location", MoreStrings.toSafeString(location))
                     .add("label", label)
                     .add("photo", photo)
+                    .add("isSipCall", isSipCall)
                     .toString();
         }
     }
diff --git a/InCallUI/src/com/android/incallui/DialpadFragment.java b/InCallUI/src/com/android/incallui/DialpadFragment.java
index 428750d..5087561 100644
--- a/InCallUI/src/com/android/incallui/DialpadFragment.java
+++ b/InCallUI/src/com/android/incallui/DialpadFragment.java
@@ -18,6 +18,8 @@
 
 import android.content.Context;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.method.DialerKeyListener;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -58,6 +60,198 @@
         mDisplayMap.put(R.id.star, '*');
     }
 
+    // KeyListener used with the "dialpad digits" EditText widget.
+    private DTMFKeyListener mDialerKeyListener;
+
+    /**
+     * Our own key listener, specialized for dealing with DTMF codes.
+     *   1. Ignore the backspace since it is irrelevant.
+     *   2. Allow ONLY valid DTMF characters to generate a tone and be
+     *      sent as a DTMF code.
+     *   3. All other remaining characters are handled by the superclass.
+     *
+     * This code is purely here to handle events from the hardware keyboard
+     * while the DTMF dialpad is up.
+     */
+    private class DTMFKeyListener extends DialerKeyListener {
+
+        private DTMFKeyListener() {
+            super();
+        }
+
+        /**
+         * Overriden to return correct DTMF-dialable characters.
+         */
+        @Override
+        protected char[] getAcceptedChars(){
+            return DTMF_CHARACTERS;
+        }
+
+        /** special key listener ignores backspace. */
+        @Override
+        public boolean backspace(View view, Editable content, int keyCode,
+                KeyEvent event) {
+            return false;
+        }
+
+        /**
+         * Return true if the keyCode is an accepted modifier key for the
+         * dialer (ALT or SHIFT).
+         */
+        private boolean isAcceptableModifierKey(int keyCode) {
+            switch (keyCode) {
+                case KeyEvent.KEYCODE_ALT_LEFT:
+                case KeyEvent.KEYCODE_ALT_RIGHT:
+                case KeyEvent.KEYCODE_SHIFT_LEFT:
+                case KeyEvent.KEYCODE_SHIFT_RIGHT:
+                    return true;
+                default:
+                    return false;
+            }
+        }
+
+        /**
+         * Overriden so that with each valid button press, we start sending
+         * a dtmf code and play a local dtmf tone.
+         */
+        @Override
+        public boolean onKeyDown(View view, Editable content,
+                                 int keyCode, KeyEvent event) {
+            // if (DBG) log("DTMFKeyListener.onKeyDown, keyCode " + keyCode + ", view " + view);
+
+            // find the character
+            char c = (char) lookup(event, content);
+
+            // if not a long press, and parent onKeyDown accepts the input
+            if (event.getRepeatCount() == 0 && super.onKeyDown(view, content, keyCode, event)) {
+
+                boolean keyOK = ok(getAcceptedChars(), c);
+
+                // if the character is a valid dtmf code, start playing the tone and send the
+                // code.
+                if (keyOK) {
+                    Log.d(this, "DTMFKeyListener reading '" + c + "' from input.");
+                    getPresenter().processDtmf(c);
+                } else {
+                    Log.d(this, "DTMFKeyListener rejecting '" + c + "' from input.");
+                }
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * Overriden so that with each valid button up, we stop sending
+         * a dtmf code and the dtmf tone.
+         */
+        @Override
+        public boolean onKeyUp(View view, Editable content,
+                                 int keyCode, KeyEvent event) {
+            // if (DBG) log("DTMFKeyListener.onKeyUp, keyCode " + keyCode + ", view " + view);
+
+            super.onKeyUp(view, content, keyCode, event);
+
+            // find the character
+            char c = (char) lookup(event, content);
+
+            boolean keyOK = ok(getAcceptedChars(), c);
+
+            if (keyOK) {
+                Log.d(this, "Stopping the tone for '" + c + "'");
+                getPresenter().stopTone();
+                return true;
+            }
+
+            return false;
+        }
+
+        /**
+         * Handle individual keydown events when we DO NOT have an Editable handy.
+         */
+        public boolean onKeyDown(KeyEvent event) {
+            char c = lookup(event);
+            Log.d(this, "DTMFKeyListener.onKeyDown: event '" + c + "'");
+
+            // if not a long press, and parent onKeyDown accepts the input
+            if (event.getRepeatCount() == 0 && c != 0) {
+                // if the character is a valid dtmf code, start playing the tone and send the
+                // code.
+                if (ok(getAcceptedChars(), c)) {
+                    Log.d(this, "DTMFKeyListener reading '" + c + "' from input.");
+                    getPresenter().processDtmf(c);
+                    return true;
+                } else {
+                    Log.d(this, "DTMFKeyListener rejecting '" + c + "' from input.");
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Handle individual keyup events.
+         *
+         * @param event is the event we are trying to stop.  If this is null,
+         * then we just force-stop the last tone without checking if the event
+         * is an acceptable dialer event.
+         */
+        public boolean onKeyUp(KeyEvent event) {
+            if (event == null) {
+                //the below piece of code sends stopDTMF event unnecessarily even when a null event
+                //is received, hence commenting it.
+                /*if (DBG) log("Stopping the last played tone.");
+                stopTone();*/
+                return true;
+            }
+
+            char c = lookup(event);
+            Log.d(this, "DTMFKeyListener.onKeyUp: event '" + c + "'");
+
+            // TODO: stopTone does not take in character input, we may want to
+            // consider checking for this ourselves.
+            if (ok(getAcceptedChars(), c)) {
+                Log.d(this, "Stopping the tone for '" + c + "'");
+                getPresenter().stopTone();
+                return true;
+            }
+
+            return false;
+        }
+
+        /**
+         * Find the Dialer Key mapped to this event.
+         *
+         * @return The char value of the input event, otherwise
+         * 0 if no matching character was found.
+         */
+        private char lookup(KeyEvent event) {
+            // This code is similar to {@link DialerKeyListener#lookup(KeyEvent, Spannable) lookup}
+            int meta = event.getMetaState();
+            int number = event.getNumber();
+
+            if (!((meta & (KeyEvent.META_ALT_ON | KeyEvent.META_SHIFT_ON)) == 0) || (number == 0)) {
+                int match = event.getMatch(getAcceptedChars(), meta);
+                number = (match != 0) ? match : number;
+            }
+
+            return (char) number;
+        }
+
+        /**
+         * Check to see if the keyEvent is dialable.
+         */
+        boolean isKeyEventAcceptable (KeyEvent event) {
+            return (ok(getAcceptedChars(), lookup(event)));
+        }
+
+        /**
+         * Overrides the characters used in {@link DialerKeyListener#CHARACTERS}
+         * These are the valid dtmf characters.
+         */
+        public final char[] DTMF_CHARACTERS = new char[] {
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '#', '*'
+        };
+    }
+
     @Override
     public void onClick(View v) {
         Log.d(this, "onClick");
@@ -180,6 +374,8 @@
                 com.android.incallui.R.layout.dtmf_twelve_key_dialer_view, container, false);
         mDtmfDialerField = (EditText) parent.findViewById(R.id.dtmfDialerField);
         if (mDtmfDialerField != null) {
+            mDialerKeyListener = new DTMFKeyListener();
+            mDtmfDialerField.setKeyListener(mDialerKeyListener);
             // remove the long-press context menus that support
             // the edit (copy / paste / select) functions.
             mDtmfDialerField.setLongClickable(false);
@@ -190,6 +386,12 @@
     }
 
     @Override
+    public void onDestroyView() {
+        mDialerKeyListener = null;
+        super.onDestroyView();
+    }
+
+    @Override
     public void setVisible(boolean on) {
         if (on) {
             getView().setVisibility(View.VISIBLE);
@@ -215,6 +417,30 @@
     }
 
     /**
+     * Called externally (from InCallScreen) to play a DTMF Tone.
+     */
+    /* package */ boolean onDialerKeyDown(KeyEvent event) {
+        Log.d(this, "Notifying dtmf key down.");
+        if (mDialerKeyListener != null) {
+            return mDialerKeyListener.onKeyDown(event);
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Called externally (from InCallScreen) to cancel the last DTMF Tone played.
+     */
+    public boolean onDialerKeyUp(KeyEvent event) {
+        Log.d(this, "Notifying dtmf key up.");
+        if (mDialerKeyListener != null) {
+            return mDialerKeyListener.onKeyUp(event);
+        } else {
+            return false;
+        }
+    }
+
+    /**
      * setup the keys on the dialer activity, using the keymaps.
      */
     private void setupKeypad(View parent) {
diff --git a/InCallUI/src/com/android/incallui/DialpadPresenter.java b/InCallUI/src/com/android/incallui/DialpadPresenter.java
index cee80d2..8640f8a 100644
--- a/InCallUI/src/com/android/incallui/DialpadPresenter.java
+++ b/InCallUI/src/com/android/incallui/DialpadPresenter.java
@@ -50,7 +50,6 @@
      * DTMF tone (or short tone if requested), and appending the digit to the
      * EditText field that displays the DTMF digits sent so far.
      */
-    // TODO(klp) Add timedShortTone==true handling for accessibility cases.
     public final void processDtmf(char c, boolean timedShortTone) {
         Log.d(this, "Processing dtmf key " + c);
         // if it is a valid key, then update the display and send the dtmf tone.
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 7d7ca4b..ac21d52 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -16,7 +16,14 @@
 
 package com.android.incallui;
 
+import com.android.services.telephony.common.Call;
+import com.android.services.telephony.common.Call.State;
+
 import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnCancelListener;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Bundle;
@@ -24,18 +31,28 @@
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
 import android.widget.Toast;
 
 /**
  * Phone app "in call" screen.
  */
 public class InCallActivity extends Activity {
+
+    public static final String SHOW_DIALPAD_EXTRA = "InCallActivity.show_dialpad";
+
+    private static final int INVALID_RES_ID = -1;
+
     private CallButtonFragment mCallButtonFragment;
     private CallCardFragment mCallCardFragment;
     private AnswerFragment mAnswerFragment;
     private DialpadFragment mDialpadFragment;
     private ConferenceManagerFragment mConferenceManagerFragment;
     private boolean mIsForegroundActivity;
+    private AlertDialog mDialog;
+
+    /** Use to pass 'showDialpad' from {@link #onNewIntent} to {@link #onResume} */
+    private boolean mShowDialpadRequested;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -73,11 +90,16 @@
 
     @Override
     protected void onResume() {
-        Log.d(this, "onResume()...");
+        Log.i(this, "onResume()...");
         super.onResume();
 
         mIsForegroundActivity = true;
         InCallPresenter.getInstance().onUiShowing(true);
+
+        if (mShowDialpadRequested) {
+            mCallButtonFragment.displayDialpad(true);
+            mShowDialpadRequested = false;
+        }
     }
 
     // onPause is guaranteed to be called when the InCallActivity goes
@@ -88,6 +110,9 @@
         super.onPause();
 
         mIsForegroundActivity = false;
+
+        mDialpadFragment.onDialerKeyUp(null);
+
         InCallPresenter.getInstance().onUiShowing(false);
     }
 
@@ -113,6 +138,9 @@
         return mIsForegroundActivity;
     }
 
+    private boolean hasPendingErrorDialog() {
+        return mDialog != null;
+    }
     /**
      * Dismisses the in-call screen.
      *
@@ -130,8 +158,12 @@
      */
     @Override
     public void finish() {
-        Log.d(this, "finish()...");
-        super.finish();
+        Log.i(this, "finish().  Dialog showing: " + (mDialog != null));
+
+        // skip finish if we are still showing a dialog.
+        if (!hasPendingErrorDialog() && !mAnswerFragment.hasPendingDialogs()) {
+            super.finish();
+        }
     }
 
     @Override
@@ -157,7 +189,6 @@
 
     @Override
     public void onBackPressed() {
-        // TODO(klp): implement fully
         Log.d(this, "onBackPressed()...");
 
         // BACK is also used to exit out of any "special modes" of the
@@ -166,6 +197,9 @@
         if (mDialpadFragment.isVisible()) {
             mCallButtonFragment.displayDialpad(false);  // do the "closing" animation
             return;
+        } else if (mConferenceManagerFragment.isVisible()) {
+            mConferenceManagerFragment.setVisible(false);
+            return;
         }
 
         // Nothing special to do.  Fall back to the default behavior.
@@ -173,10 +207,25 @@
     }
 
     @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        // push input to the dialer.
+        if ((mDialpadFragment.isVisible()) && (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
+            return true;
+        }
+        return super.onKeyUp(keyCode, event);
+    }
+
+    @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_CALL:
-                // TODO(klp): handle call key
+                boolean handled = InCallPresenter.getInstance().handleCallKey();
+                if (!handled) {
+                    Log.w(this, "InCallActivity should always handle KEYCODE_CALL in onKeyDown");
+                }
                 // Always consume CALL to be sure the PhoneWindow won't do anything with it
                 return true;
 
@@ -195,11 +244,12 @@
             case KeyEvent.KEYCODE_VOLUME_UP:
             case KeyEvent.KEYCODE_VOLUME_DOWN:
             case KeyEvent.KEYCODE_VOLUME_MUTE:
-                // Not sure if needed. If so, silence ringer.
+                // Ringer silencing handled by PhoneWindowManager.
                 break;
 
             case KeyEvent.KEYCODE_MUTE:
-                toast("mute");
+                // toggle mute
+                CallCommandClient.getInstance().mute(!AudioModeProvider.getInstance().getMute());
                 return true;
 
             // Various testing/debugging features, enabled ONLY when VERBOSE == true.
@@ -214,14 +264,37 @@
                 }
                 break;
             case KeyEvent.KEYCODE_EQUALS:
-                // TODO(klp): Dump phone state?
+                // TODO: Dump phone state?
                 break;
         }
 
-        // TODO(klp) Adds hardware keyboard support
+        if (event.getRepeatCount() == 0 && handleDialerKeyDown(keyCode, event)) {
+            return true;
+        }
+
         return super.onKeyDown(keyCode, event);
     }
 
+    private boolean handleDialerKeyDown(int keyCode, KeyEvent event) {
+        Log.v(this, "handleDialerKeyDown: keyCode " + keyCode + ", event " + event + "...");
+
+        // As soon as the user starts typing valid dialable keys on the
+        // keyboard (presumably to type DTMF tones) we start passing the
+        // key events to the DTMFDialer's onDialerKeyDown.
+        if (mDialpadFragment.isVisible()) {
+            return mDialpadFragment.onDialerKeyDown(event);
+
+            // TODO: If the dialpad isn't currently visible, maybe
+            // consider automatically bringing it up right now?
+            // (Just to make sure the user sees the digits widget...)
+            // But this probably isn't too critical since it's awkward to
+            // use the hard keyboard while in-call in the first place,
+            // especially now that the in-call UI is portrait-only...
+        }
+
+        return false;
+    }
+
     @Override
     public void onConfigurationChanged(Configuration config) {
         InCallPresenter.getInstance().getProximitySensor().onConfigurationChanged(config);
@@ -236,40 +309,35 @@
             // But we do check here for one extra that can come along with the
             // ACTION_MAIN intent:
 
-            // TODO(klp): Enable this for klp
-            /*
             if (intent.hasExtra(SHOW_DIALPAD_EXTRA)) {
                 // SHOW_DIALPAD_EXTRA can be used here to specify whether the DTMF
                 // dialpad should be initially visible.  If the extra isn't
                 // present at all, we just leave the dialpad in its previous state.
 
-                boolean showDialpad = intent.getBooleanExtra(SHOW_DIALPAD_EXTRA, false);
-                if (VDBG) log("- internalResolveIntent: SHOW_DIALPAD_EXTRA: " + showDialpad);
+                final boolean showDialpad = intent.getBooleanExtra(SHOW_DIALPAD_EXTRA, false);
+                Log.d(this, "- internalResolveIntent: SHOW_DIALPAD_EXTRA: " + showDialpad);
 
-                // If SHOW_DIALPAD_EXTRA is specified, that overrides whatever
-                // the previous state of inCallUiState.showDialpad was.
-                mApp.inCallUiState.showDialpad = showDialpad;
-
-                final boolean hasActiveCall = mCM.hasActiveFgCall();
-                final boolean hasHoldingCall = mCM.hasActiveBgCall();
-
-                // There's only one line in use, AND it's on hold, at which we're sure the user
-                // wants to use the dialpad toward the exact line, so un-hold the holding line.
-                if (showDialpad && !hasActiveCall && hasHoldingCall) {
-                    PhoneUtils.switchHoldingAndActive(mCM.getFirstActiveBgCall());
-                }
+                relaunchedFromDialer(showDialpad);
             }
-            */
-            // ...and in onResume() we'll update the onscreen dialpad state to
-            // match the InCallUiState.
 
             return;
         }
     }
 
+    private void relaunchedFromDialer(boolean showDialpad) {
+        mShowDialpadRequested = showDialpad;
+
+        if (mShowDialpadRequested) {
+            // 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();
+            if (call != null && call.getState() == State.ONHOLD) {
+                CallCommandClient.getInstance().hold(call.getCallId(), false);
+            }
+        }
+    }
+
     private void initializeInCall() {
-        // TODO(klp): Make sure that this doesn't need to move back to onResume() since they are
-        // statically added fragments.
         if (mCallButtonFragment == null) {
             mCallButtonFragment = (CallButtonFragment) getFragmentManager()
                     .findFragmentById(R.id.callButtonFragment);
@@ -305,6 +373,14 @@
         toast.show();
     }
 
+    /**
+     * Simulates a user click to hide the dialpad. This will update the UI to show the call card,
+     * update the checked state of the dialpad button, and update the proximity sensor state.
+     */
+    public void hideDialpadForDisconnect() {
+        mCallButtonFragment.displayDialpad(false);
+    }
+
     public void displayDialpad(boolean showDialpad) {
         if (showDialpad) {
             mDialpadFragment.setVisible(true);
@@ -329,4 +405,81 @@
         final PostCharDialogFragment fragment = new PostCharDialogFragment(callId,  chars);
         fragment.show(getFragmentManager(), "postCharWait");
     }
+
+    @Override
+    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+        if (mCallCardFragment != null) {
+            mCallCardFragment.dispatchPopulateAccessibilityEvent(event);
+        }
+        return super.dispatchPopulateAccessibilityEvent(event);
+    }
+
+    public void maybeShowErrorDialogOnDisconnect(Call.DisconnectCause cause) {
+        Log.d(this, "maybeShowErrorDialogOnDisconnect");
+
+        if (!isFinishing()) {
+            final int resId = getResIdForDisconnectCause(cause);
+            if (resId != INVALID_RES_ID) {
+                showErrorDialog(resId);
+            }
+        }
+    }
+
+    public void dismissPendingDialogs() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+            mDialog = null;
+        }
+        mAnswerFragment.dismissPendingDialogues();
+    }
+
+    /**
+     * Utility function to bring up a generic "error" dialog.
+     */
+    private void showErrorDialog(int resId) {
+        final CharSequence msg = getResources().getText(resId);
+        Log.i(this, "Show Dialog: " + msg);
+
+        dismissPendingDialogs();
+
+        mDialog = new AlertDialog.Builder(this)
+            .setMessage(msg)
+            .setPositiveButton(R.string.ok, new OnClickListener() {
+                @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);
+        mDialog.show();
+    }
+
+    private int getResIdForDisconnectCause(Call.DisconnectCause cause) {
+        int resId = INVALID_RES_ID;
+
+        if (cause == Call.DisconnectCause.CALL_BARRED) {
+            resId = R.string.callFailed_cb_enabled;
+        } else if (cause == Call.DisconnectCause.FDN_BLOCKED) {
+            resId = R.string.callFailed_fdn_only;
+        } else if (cause == Call.DisconnectCause.CS_RESTRICTED) {
+            resId = R.string.callFailed_dsac_restricted;
+        } else if (cause == Call.DisconnectCause.CS_RESTRICTED_EMERGENCY) {
+            resId = R.string.callFailed_dsac_restricted_emergency;
+        } else if (cause == Call.DisconnectCause.CS_RESTRICTED_NORMAL) {
+            resId = R.string.callFailed_dsac_restricted_normal;
+        }
+
+        return resId;
+    }
+
+    private void onDialogDismissed() {
+        mDialog = null;
+        InCallPresenter.getInstance().onDismissDialog();
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/InCallApp.java b/InCallUI/src/com/android/incallui/InCallApp.java
index 02f07b8..dcc7848 100644
--- a/InCallUI/src/com/android/incallui/InCallApp.java
+++ b/InCallUI/src/com/android/incallui/InCallApp.java
@@ -44,7 +44,6 @@
 
     @Override
     public void onConfigurationChanged(Configuration newConfig) {
-        // TODO(klp): See what configuration changes we need for klp
         super.onConfigurationChanged(newConfig);
     }
 
@@ -58,7 +57,7 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             final String action = intent.getAction();
-            Log.v(this, "Broadcast from Notification: ", action);
+            Log.i(this, "Broadcast from Notification: " + action);
 
             if (action.equals(ACTION_HANG_UP_ONGOING_CALL)) {
                 // TODO: Commands of this nature should exist in the CallList or a
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 0f8d407..1b9f60c 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 
 import com.android.services.telephony.common.Call;
+import com.android.services.telephony.common.Call.Capabilities;
 import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
@@ -35,7 +36,7 @@
  * are disconnected.
  * Creates and manages the in-call state and provides a listener pattern for the presenters
  * that want to listen in on the in-call state changes.
- * TODO(klp): This class has become more of a state machine at this point.  Consider renaming.
+ * TODO: This class has become more of a state machine at this point.  Consider renaming.
  */
 public class InCallPresenter implements CallList.Listener {
 
@@ -50,9 +51,17 @@
     private Context mContext;
     private CallList mCallList;
     private InCallActivity mInCallActivity;
-    private boolean mServiceConnected = false;
     private InCallState mInCallState = InCallState.NO_CALLS;
     private ProximitySensor mProximitySensor;
+    private boolean mServiceConnected = false;
+
+    /**
+     * Is true when the activity has been previously started. Some code needs to know not just if
+     * the activity is currently up, but if it had been previously shown in foreground for this
+     * in-call session (e.g., StatusBarNotifier). This gets reset when the session ends in the
+     * tear-down method.
+     */
+    private boolean mIsActivityPreviouslyStarted = false;
 
     public static synchronized InCallPresenter getInstance() {
         if (sInCallPresenter == null) {
@@ -78,7 +87,6 @@
 
         mStatusBarNotifier = new StatusBarNotifier(context, mContactInfoCache, mCallList);
         addListener(mStatusBarNotifier);
-        addIncomingCallListener(mStatusBarNotifier);
 
         mAudioModeProvider = audioModeProvider;
 
@@ -111,6 +119,15 @@
         attemptCleanup();
     }
 
+    private void attemptFinishActivity() {
+        final boolean doFinish = (mInCallActivity != null && isActivityStarted());
+        Log.i(this, "Hide in call UI: " + doFinish);
+
+        if (doFinish) {
+            mInCallActivity.finish();
+        }
+    }
+
     /**
      * Called when the UI begins or ends. Starts the callstate callbacks if the UI just began.
      * Attempts to tear down everything if the UI just ended. See #tearDown for more insight on
@@ -132,6 +149,24 @@
             }
 
             mInCallActivity = inCallActivity;
+
+            // By the time the UI finally comes up, the call may already be disconnected.
+            // If that's the case, we may need to show an error dialog.
+            if (mCallList != null && mCallList.getDisconnectedCall() != null) {
+                maybeShowErrorDialogOnDisconnect(mCallList.getDisconnectedCall());
+            }
+
+            // When the UI comes up, we need to first check the in-call state.
+            // If we are showing NO_CALLS, that means that a call probably connected and
+            // then immediately disconnected before the UI was able to come up.
+            // If we dont have any calls, start tearing down the UI instead.
+            // NOTE: This code relies on {@link #mInCallActivity} being set so we run it after
+            // it has been set.
+            if (mInCallState == InCallState.NO_CALLS) {
+                Log.i(this, "UI Intialized, but no calls left.  shut down.");
+                attemptFinishActivity();
+                return;
+            }
         } else {
             Log.i(this, "UI Destroyed)");
             updateListeners = true;
@@ -166,6 +201,12 @@
         InCallState newState = getPotentialStateFromCallList(callList);
         newState = startOrFinishUi(newState);
 
+        // Renable notification shade and soft navigation buttons, if we are no longer in the
+        // incoming call screen
+        if (!newState.isIncoming()) {
+            CallCommandClient.getInstance().setSystemBarNavigationEnabled(true);
+        }
+
         // Set the new state before announcing it to the world
         Log.i(this, "Phone switching state: " + mInCallState + " -> " + newState);
         mInCallState = newState;
@@ -189,9 +230,27 @@
         Log.i(this, "Phone switching state: " + mInCallState + " -> " + newState);
         mInCallState = newState;
 
-        for (IncomingCallListener listener : mIncomingCallListeners) {
-            listener.onIncomingCall(call);
+        // Disable notification shade and soft navigation buttons
+        if (newState.isIncoming()) {
+            CallCommandClient.getInstance().setSystemBarNavigationEnabled(false);
         }
+
+        for (IncomingCallListener listener : mIncomingCallListeners) {
+            listener.onIncomingCall(mInCallState, call);
+        }
+    }
+
+    /**
+     * Called when a call becomes disconnected. Called everytime an existing call
+     * changes from being connected (incoming/outgoing/active) to disconnected.
+     */
+    @Override
+    public void onDisconnect(Call call) {
+        hideDialpadForDisconnect();
+        maybeShowErrorDialogOnDisconnect(call);
+
+        // We need to do the run the same code as onCallListChange.
+        onCallListChange(CallList.getInstance());
     }
 
     /**
@@ -206,7 +265,8 @@
             newState = InCallState.OUTGOING;
         } else if (callList.getActiveCall() != null ||
                 callList.getBackgroundCall() != null ||
-                callList.getDisconnectedCall() != null) {
+                callList.getDisconnectedCall() != null ||
+                callList.getDisconnectingCall() != null) {
             newState = InCallState.INCALL;
         }
 
@@ -218,6 +278,11 @@
         mIncomingCallListeners.add(listener);
     }
 
+    public void removeIncomingCallListener(IncomingCallListener listener) {
+        Preconditions.checkNotNull(listener);
+        mIncomingCallListeners.remove(listener);
+    }
+
     public void addListener(InCallStateListener listener) {
         Preconditions.checkNotNull(listener);
         mListeners.add(listener);
@@ -244,6 +309,12 @@
      * Hangs up any active or outgoing calls.
      */
     public void hangUpOngoingCall() {
+        // By the time we receive this intent, we could be shut down and call list
+        // could be null.  Bail in those cases.
+        if (mCallList == null) {
+            return;
+        }
+
         Call call = mCallList.getOutgoingCall();
         if (call == null) {
             call = mCallList.getActiveOrBackgroundCall();
@@ -272,8 +343,12 @@
                 !mInCallActivity.isFinishing());
     }
 
+    public boolean isActivityPreviouslyStarted() {
+        return mIsActivityPreviouslyStarted;
+    }
+
     /**
-     * Called when the activity goes out of the foreground.
+     * Called when the activity goes in/out of the foreground.
      */
     public void onUiShowing(boolean showing) {
         // We need to update the notification bar when we leave the UI because that
@@ -285,20 +360,23 @@
         if (mProximitySensor != null) {
             mProximitySensor.onInCallShowing(showing);
         }
+
+        if (showing) {
+            mIsActivityPreviouslyStarted = true;
+        }
     }
 
     /**
      * Brings the app into the foreground if possible.
      */
-    public void bringToForeground() {
+    public void bringToForeground(boolean showDialpad) {
         // Before we bring the incall UI to the foreground, we check to see if:
-        // 1. there is an activity
-        // 2. the activity is not already in the foreground
+        // 1. We've already started the activity once for this session
+        // 2. If it exists, the activity is not already in the foreground
         // 3. We are in a state where we want to show the incall ui
-        if (isActivityStarted() &&
-                !isShowingInCallUi() &&
+        if (mIsActivityPreviouslyStarted && !isShowingInCallUi() &&
                 mInCallState != InCallState.NO_CALLS) {
-            showInCall();
+            showInCall(showDialpad);
         }
     }
 
@@ -307,13 +385,124 @@
     }
 
     /**
+     * Handles the green CALL key while in-call.
+     * @return true if we consumed the event.
+     */
+    public boolean handleCallKey() {
+        Log.v(this, "handleCallKey");
+
+        // The green CALL button means either "Answer", "Unhold", or
+        // "Swap calls", or can be a no-op, depending on the current state
+        // of the Phone.
+
+        /**
+         * INCOMING CALL
+         */
+        final CallList calls = CallList.getInstance();
+        final Call incomingCall = calls.getIncomingCall();
+        Log.v(this, "incomingCall: " + incomingCall);
+
+        // (1) Attempt to answer a call
+        if (incomingCall != null) {
+            CallCommandClient.getInstance().answerCall(incomingCall.getCallId());
+            return true;
+        }
+
+        /**
+         * ACTIVE CALL
+         */
+        final Call activeCall = calls.getActiveCall();
+        if (activeCall != null) {
+            // TODO: This logic is repeated from CallButtonPresenter.java. We should
+            // consolidate this logic.
+            final boolean isGeneric = activeCall.can(Capabilities.GENERIC_CONFERENCE);
+            final boolean canMerge = activeCall.can(Capabilities.MERGE_CALLS);
+            final boolean canSwap = activeCall.can(Capabilities.SWAP_CALLS);
+
+            Log.v(this, "activeCall: " + activeCall + ", isGeneric: " + isGeneric + ", canMerge: " +
+                    canMerge + ", canSwap: " + canSwap);
+
+            // (2) Attempt actions on Generic conference calls
+            if (activeCall.isConferenceCall() && isGeneric) {
+                if (canMerge) {
+                    CallCommandClient.getInstance().merge();
+                    return true;
+                } else if (canSwap) {
+                    CallCommandClient.getInstance().swap();
+                    return true;
+                }
+            }
+
+            // (3) Swap calls
+            if (canSwap) {
+                CallCommandClient.getInstance().swap();
+                return true;
+            }
+        }
+
+        /**
+         * BACKGROUND CALL
+         */
+        final Call heldCall = calls.getBackgroundCall();
+        if (heldCall != null) {
+            // We have a hold call so presumeable it will always support HOLD...but
+            // there is no harm in double checking.
+            final boolean canHold = heldCall.can(Capabilities.HOLD);
+
+            Log.v(this, "heldCall: " + heldCall + ", canHold: " + canHold);
+
+            // (4) unhold call
+            if (heldCall.getState() == Call.State.ONHOLD && canHold) {
+                CallCommandClient.getInstance().hold(heldCall.getCallId(), false);
+                return true;
+            }
+        }
+
+        // Always consume hard keys
+        return true;
+    }
+
+    /**
+     * A dialog could have prevented in-call screen from being previously finished.
+     * This function checks to see if there should be any UI left and if not attempts
+     * to tear down the UI.
+     */
+    public void onDismissDialog() {
+        Log.i(this, "Dialog dismissed");
+        if (mInCallState == InCallState.NO_CALLS) {
+            attemptFinishActivity();
+            attemptCleanup();
+        }
+    }
+
+    /**
+     * For some disconnected causes, we show a dialog.  This calls into the activity to show
+     * the dialog if appropriate for the call.
+     */
+    private void maybeShowErrorDialogOnDisconnect(Call call) {
+        // For newly disconnected calls, we may want to show a dialog on specific error conditions
+        if (isActivityStarted() && call.getState() == Call.State.DISCONNECTED) {
+            mInCallActivity.maybeShowErrorDialogOnDisconnect(call.getDisconnectCause());
+        }
+    }
+
+    /**
+     * Hides the dialpad.  Called when a call is disconnected (Requires hiding dialpad).
+     */
+    private void hideDialpadForDisconnect() {
+        if (isActivityStarted()) {
+            mInCallActivity.hideDialpadForDisconnect();
+        }
+    }
+
+    /**
      * When the state of in-call changes, this is the first method to get called. It determines if
      * the UI needs to be started or finished depending on the new state and does it.
      */
     private InCallState startOrFinishUi(InCallState newState) {
         Log.d(this, "startOrFinishUi: " + mInCallState + " -> " + newState);
 
-        // TODO(klp): Consider a proper state machine implementation
+        // TODO: Consider a proper state machine implementation
 
         // If the state isn't changing, we have already done any starting/stopping of
         // activities in a previous pass...so lets cut out early
@@ -370,68 +559,105 @@
 
         if (showCallUi) {
             Log.i(this, "Start in call UI");
-            showInCall();
+            showInCall(false);
         } else if (startStartupSequence) {
             Log.i(this, "Start Full Screen in call UI");
-            mStatusBarNotifier.updateNotificationAndLaunchIncomingCallUi(newState, mCallList);
-        } else if (newState == InCallState.NO_CALLS) {
-            Log.i(this, "Hide in call UI");
 
-            // The new state is the no calls state.  Tear everything down.
-            if (mInCallActivity != null) {
-                if (isActivityStarted()) {
-                    mInCallActivity.finish();
-                }
+            // We're about the bring up the in-call UI for an incoming call. If we still have
+            // dialogs up, we need to clear them out before showing incoming screen.
+            if (isActivityStarted()) {
+                mInCallActivity.dismissPendingDialogs();
             }
+            startUi(newState);
+        } else if (newState == InCallState.NO_CALLS) {
+            // The new state is the no calls state.  Tear everything down.
+            attemptFinishActivity();
         }
 
         return newState;
     }
 
+    private void startUi(InCallState inCallState) {
+        final Call incomingCall = mCallList.getIncomingCall();
+        final boolean isCallWaiting = (incomingCall != null &&
+                incomingCall.getState() == Call.State.CALL_WAITING);
+
+        // If the screen is off, we need to make sure it gets turned on for incoming calls.
+        // This normally works just fine thanks to FLAG_TURN_SCREEN_ON but that only works
+        // when the activity is first created. Therefore, to ensure the screen is turned on
+        // for the call waiting case, we finish() the current activity and start a new one.
+        // There should be no jank from this since the screen is already off and will remain so
+        // until our new activity is up.
+        if (mProximitySensor.isScreenReallyOff() && isCallWaiting) {
+            if (isActivityStarted()) {
+                mInCallActivity.finish();
+            }
+            mInCallActivity = null;
+        }
+
+        mStatusBarNotifier.updateNotificationAndLaunchIncomingCallUi(inCallState, mCallList);
+    }
+
     /**
      * Checks to see if both the UI is gone and the service is disconnected. If so, tear it all
      * down.
      */
     private void attemptCleanup() {
-        boolean shouldCleanup = (mInCallActivity == null && !mServiceConnected);
+        boolean shouldCleanup = (mInCallActivity == null && !mServiceConnected &&
+                mInCallState == InCallState.NO_CALLS);
         Log.i(this, "attemptCleanup? " + shouldCleanup);
 
         if (shouldCleanup) {
+            mIsActivityPreviouslyStarted = false;
 
             // blow away stale contact info so that we get fresh data on
             // the next set of calls
-            mContactInfoCache.clearCache();
+            if (mContactInfoCache != null) {
+                mContactInfoCache.clearCache();
+            }
             mContactInfoCache = null;
 
+            if (mProximitySensor != null) {
+                removeListener(mProximitySensor);
+                mProximitySensor.tearDown();
+            }
             mProximitySensor = null;
 
             mAudioModeProvider = null;
 
-            removeListener(mStatusBarNotifier);
+            if (mStatusBarNotifier != null) {
+                removeListener(mStatusBarNotifier);
+            }
             mStatusBarNotifier = null;
 
-            mCallList.removeListener(this);
+            if (mCallList != null) {
+                mCallList.removeListener(this);
+            }
             mCallList = null;
 
             mContext = null;
             mInCallActivity = null;
 
             mListeners.clear();
+            mIncomingCallListeners.clear();
 
             Log.d(this, "Finished InCallPresenter.CleanUp");
         }
     }
 
-    private void showInCall() {
-        mContext.startActivity(getInCallIntent());
+    private void showInCall(boolean showDialpad) {
+        mContext.startActivity(getInCallIntent(showDialpad));
     }
 
-    private Intent getInCallIntent() {
+    public Intent getInCallIntent(boolean showDialpad) {
         final Intent intent = new Intent(Intent.ACTION_MAIN, null);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                 | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
                 | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
         intent.setClass(mContext, InCallActivity.class);
+        if (showDialpad) {
+            intent.putExtra(InCallActivity.SHOW_DIALPAD_EXTRA, true);
+        }
 
         return intent;
     }
@@ -473,11 +699,11 @@
      * Interface implemented by classes that need to know about the InCall State.
      */
     public interface InCallStateListener {
-        // TODO(klp): Enhance state to contain the call objects instead of passing CallList
+        // TODO: Enhance state to contain the call objects instead of passing CallList
         public void onStateChange(InCallState state, CallList callList);
     }
 
     public interface IncomingCallListener {
-        public void onIncomingCall(Call call);
+        public void onIncomingCall(InCallState state, Call call);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/Log.java b/InCallUI/src/com/android/incallui/Log.java
index c859e5c..35cb370 100644
--- a/InCallUI/src/com/android/incallui/Log.java
+++ b/InCallUI/src/com/android/incallui/Log.java
@@ -24,7 +24,8 @@
     // Generic tag for all In Call logging
     private static final String TAG = "InCall";
 
-    public static final boolean DEBUG = android.util.Log.isLoggable(TAG, android.util.Log.DEBUG);
+    public static final boolean DEBUG = android.util.Log.isLoggable(TAG, android.util.Log.DEBUG)
+            || (System.getProperty("ro.build.type", "").equals("userdebug"));
     public static final boolean VERBOSE = android.util.Log.isLoggable(TAG,
             android.util.Log.VERBOSE);
     public static final String TAG_DELIMETER = " - ";
diff --git a/InCallUI/src/com/android/incallui/ProximitySensor.java b/InCallUI/src/com/android/incallui/ProximitySensor.java
index 0dc54dc..5776b56 100644
--- a/InCallUI/src/com/android/incallui/ProximitySensor.java
+++ b/InCallUI/src/com/android/incallui/ProximitySensor.java
@@ -68,6 +68,16 @@
         mAudioModeProvider.addListener(this);
     }
 
+    public void tearDown() {
+        mAudioModeProvider.removeListener(this);
+
+        mAccelerometerListener.enable(false);
+
+        if (mProximityWakeLock.isHeld()) {
+            mProximityWakeLock.release();
+        }
+    }
+
     /**
      * Called to identify when the device is laid down flat.
      */
@@ -144,11 +154,20 @@
     }
 
     /**
+     * TODO: There is no way to determine if a screen is off due to proximity or if it is
+     * legitimately off, but if ever we can do that in the future, it would be useful here.
+     * Until then, this function will simply return true of the screen is off.
+     */
+    public boolean isScreenReallyOff() {
+        return !mPowerManager.isScreenOn();
+    }
+
+    /**
      * @return true if this device supports the "proximity sensor
      * auto-lock" feature while in-call (see updateProximitySensorMode()).
      */
     private boolean proximitySensorModeEnabled() {
-        // TODO(klp): Do we disable notification's expanded view when app is in foreground and
+        // TODO: Do we disable notification's expanded view when app is in foreground and
         // proximity sensor is on? Is it even possible to do this any more?
         return (mProximityWakeLock != null);
     }
@@ -206,8 +225,9 @@
                         .add("keybrd", mIsHardKeyboardOpen ? 1 : 0)
                         .add("dpad", mDialpadVisible ? 1 : 0)
                         .add("offhook", mIsPhoneOffhook ? 1 : 0)
-                        .add("aud", audioMode)
-                        .add("hor", horizontal ? 1 : 0).toString());
+                        .add("hor", horizontal ? 1 : 0)
+                        .add("ui", mUiShowing ? 1 : 0)
+                        .add("aud", AudioMode.toString(audioMode)).toString());
 
                 if (mIsPhoneOffhook && !screenOnImmediately) {
                     final String logStr = "turning on proximity sensor: ";
diff --git a/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java b/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java
new file mode 100644
index 0000000..83feaf5
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/SmallerHitTargetTouchListener.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.incallui;
+
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * OnTouchListener used to shrink the "hit target" of some onscreen buttons.
+ *
+ * We do this for a few specific buttons which are vulnerable to
+ * "false touches" because either (1) they're near the edge of the
+ * screen and might be unintentionally touched while holding the
+ * device in your hand, (2) they're in the upper corners and might
+ * be touched by the user's ear before the prox sensor has a chance to
+ * kick in, or (3) they are close to other buttons.
+ */
+public class SmallerHitTargetTouchListener implements View.OnTouchListener {
+    private static final String TAG = "SmallerHitTargetTouchListener";
+
+    /**
+     * Edge dimensions where a touch does not register an action (in DIP).
+     */
+    private static final int HIT_TARGET_EDGE_IGNORE_DP_X = 30;
+    private static final int HIT_TARGET_EDGE_IGNORE_DP_Y = 10;
+    private static final int HIT_TARGET_MIN_SIZE_DP_X = HIT_TARGET_EDGE_IGNORE_DP_X * 3;
+    private static final int HIT_TARGET_MIN_SIZE_DP_Y = HIT_TARGET_EDGE_IGNORE_DP_Y * 3;
+
+    // True if the most recent DOWN event was a "hit".
+    boolean mDownEventHit;
+
+    /**
+     * Called when a touch event is dispatched to a view. This allows listeners to
+     * get a chance to respond before the target view.
+     *
+     * @return True if the listener has consumed the event, false otherwise.
+     *         (In other words, we return true when the touch is *outside*
+     *         the "smaller hit target", which will prevent the actual
+     *         button from handling these events.)
+     */
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        // if (DBG) log("SmallerHitTargetTouchListener: " + v + ", event " + event);
+
+        if (event.getAction() == MotionEvent.ACTION_DOWN) {
+            // Note that event.getX() and event.getY() are already
+            // translated into the View's coordinates.  (In other words,
+            // "0,0" is a touch on the upper-left-most corner of the view.)
+            final int touchX = (int) event.getX();
+            final int touchY = (int) event.getY();
+
+            final int viewWidth = v.getWidth();
+            final int viewHeight = v.getHeight();
+
+            final float pixelDensity = v.getResources().getDisplayMetrics().density;
+            final int targetMinSizeX = (int) (HIT_TARGET_MIN_SIZE_DP_X * pixelDensity);
+            final int targetMinSizeY = (int) (HIT_TARGET_MIN_SIZE_DP_Y * pixelDensity);
+
+            int edgeIgnoreX = (int) (HIT_TARGET_EDGE_IGNORE_DP_X * pixelDensity);
+            int edgeIgnoreY = (int) (HIT_TARGET_EDGE_IGNORE_DP_Y * pixelDensity);
+
+            // If we are dealing with smaller buttons where the dead zone defined by
+            // HIT_TARGET_EDGE_IGNORE_DP_[X|Y] is too large.
+            if (viewWidth < targetMinSizeX || viewHeight < targetMinSizeY) {
+                // This really should not happen given our two use cases (as of this writing)
+                // in the call edge button and secondary calling card. However, we leave
+                // this is as a precautionary measure.
+                Log.w(TAG, "onTouch: view is too small for SmallerHitTargetTouchListener");
+                edgeIgnoreX = 0;
+                edgeIgnoreY = 0;
+            }
+
+            final int minTouchX = edgeIgnoreX;
+            final int maxTouchX = viewWidth - edgeIgnoreX;
+            final int minTouchY = edgeIgnoreY;
+            final int maxTouchY = viewHeight - edgeIgnoreY;
+
+            if (touchX < minTouchX || touchX > maxTouchX ||
+                    touchY < minTouchY || touchY > maxTouchY) {
+                // Missed!
+                // if (DBG) log("  -> MISSED!");
+                mDownEventHit = false;
+                return true;  // Consume this event; don't let the button see it
+            } else {
+                // Hit!
+                // if (DBG) log("  -> HIT!");
+                mDownEventHit = true;
+                return false;  // Let this event through to the actual button
+            }
+        } else {
+            // This is a MOVE, UP or CANCEL event.
+            //
+            // We only do the "smaller hit target" check on DOWN events.
+            // For the subsequent MOVE/UP/CANCEL events, we let them
+            // through to the actual button IFF the previous DOWN event
+            // got through to the actual button (i.e. it was a "hit".)
+            return !mDownEventHit;
+        }
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 97d0e8c..1690c54 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -36,11 +36,12 @@
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.services.telephony.common.Call;
 
+import java.util.HashMap;
+
 /**
  * This class adds Notifications to the status bar for the in-call experience.
  */
-public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
-        InCallPresenter.IncomingCallListener {
+public class StatusBarNotifier implements InCallPresenter.InCallStateListener {
     // notification types
     private static final int IN_CALL_NOTIFICATION = 1;
 
@@ -49,7 +50,7 @@
     private final CallList mCallList;
     private final NotificationManager mNotificationManager;
     private boolean mIsShowingNotification = false;
-    private InCallState mInCallState = InCallState.NO_CALLS;
+    private int mCallState = Call.State.INVALID;
     private int mSavedIcon = 0;
     private int mSavedContent = 0;
     private Bitmap mSavedLargeIcon;
@@ -72,47 +73,10 @@
     @Override
     public void onStateChange(InCallState state, CallList callList) {
         Log.d(this, "onStateChange");
+
         updateNotification(state, callList);
     }
 
-    @Override
-    public void onIncomingCall(final Call call) {
-        final ContactCacheEntry entry = ContactInfoCache.buildCacheEntryFromCall(mContext,
-                call.getIdentification(), true);
-
-        // Initial update with no contact information.
-        buildAndSendNotification(InCallState.INCOMING, call, entry, false);
-
-        // TODO(klp): InCallPresenter already calls updateNofication() when it wants to start
-        // the notification. We shouldn't do this twice.
-        // TODO(klp): This search doesn't happen for outgoing calls any more.  It works because
-        // the call card makes a requests that are cached...but eventually this startup process
-        // needs to incorporate call searches for all new calls, not just incoming.
-
-        // we make a call to the contact info cache to query for supplemental data to what the
-        // call provides.  This includes the contact name and photo.
-        // This callback will always get called immediately and synchronously with whatever data
-        // it has available, and may make a subsequent call later (same thread) if it had to
-        // call into the contacts provider for more data.
-        mContactInfoCache.findInfo(call.getIdentification(), true, new ContactInfoCacheCallback() {
-            private ContactCacheEntry mEntry;
-
-            @Override
-            public void onContactInfoComplete(int callId, ContactCacheEntry entry) {
-                mEntry = entry;
-                buildAndSendNotification(InCallState.INCOMING, call, entry, false);
-            }
-
-            @Override
-            public void onImageLoadComplete(int callId, Bitmap photo) {
-                if (mEntry != null) {
-                    mEntry.photo = new BitmapDrawable(mContext.getResources(), photo);
-                    buildAndSendNotification(InCallState.INCOMING, call, mEntry, false);
-                }
-            }
-        });
-    }
-
     /**
      * Updates the phone app's status bar notification based on the
      * current telephony state, or cancels the notification if the phone
@@ -165,7 +129,6 @@
         updateInCallNotification(true, state, callList);
     }
 
-
     /**
      * Take down the in-call notification.
      * @see updateInCallNotification()
@@ -202,22 +165,51 @@
             return;
         }
 
-        // Contact info should have already been done on incoming calls.
-        // TODO(klp): This also needs to be done for outgoing calls.
-        ContactCacheEntry entry = mContactInfoCache.getInfo(call.getCallId());
-        if (entry == null) {
-            entry = ContactInfoCache.buildCacheEntryFromCall(mContext, call.getIdentification(),
-                    state == InCallState.INCOMING);
-        }
-        buildAndSendNotification(state, call, entry, allowFullScreenIntent);
+        // we make a call to the contact info cache to query for supplemental data to what the
+        // call provides.  This includes the contact name and photo.
+        // This callback will always get called immediately and synchronously with whatever data
+        // it has available, and may make a subsequent call later (same thread) if it had to
+        // call into the contacts provider for more data.
+        mContactInfoCache.findInfo(call.getIdentification(), call.getState() == Call.State.INCOMING,
+                new ContactInfoCacheCallback() {
+                    private boolean mAllowFullScreenIntent = allowFullScreenIntent;
+
+                    @Override
+                    public void onContactInfoComplete(int callId, ContactCacheEntry entry) {
+                        Call call = CallList.getInstance().getCall(callId);
+                        if (call != null) {
+                            buildAndSendNotification(call, entry, mAllowFullScreenIntent);
+                        }
+
+                        // Full screen intents are what bring up the in call screen. We only want
+                        // to do this the first time we are called back.
+                        mAllowFullScreenIntent = false;
+                    }
+
+                    @Override
+                    public void onImageLoadComplete(int callId, ContactCacheEntry entry) {
+                        Call call = CallList.getInstance().getCall(callId);
+                        if (call != null) {
+                            buildAndSendNotification(call, entry, mAllowFullScreenIntent);
+                        }
+                    } });
     }
 
     /**
      * Sets up the main Ui for the notification
      */
-    private void buildAndSendNotification(InCallState state, Call call,
-            ContactCacheEntry contactInfo, boolean allowFullScreenIntent) {
+    private void buildAndSendNotification(Call originalCall, ContactCacheEntry contactInfo,
+            boolean allowFullScreenIntent) {
 
+        // This can get called to update an existing notification after contact information has come
+        // back. However, it can happen much later. Before we continue, we need to make sure that
+        // the call being passed in is still the one we want to show in the notification.
+        final Call call = getCallToShow(CallList.getInstance());
+        if (call == null || call.getCallId() != originalCall.getCallId()) {
+            return;
+        }
+
+        final int state = call.getState();
         final boolean isConference = call.isConferenceCall();
         final int iconResId = getIconToDisplay(call);
         final Bitmap largeIcon = getLargeIconToDisplay(contactInfo, isConference);
@@ -250,15 +242,17 @@
         builder.setContentTitle(contentTitle);
         builder.setLargeIcon(largeIcon);
 
-        if (call.getState() == Call.State.ACTIVE) {
+        if (state == Call.State.ACTIVE) {
             builder.setUsesChronometer(true);
             builder.setWhen(call.getConnectTime());
         } else {
             builder.setUsesChronometer(false);
         }
 
-        // Add special Content for calls that are ongoing
-        if (InCallState.INCALL == state || InCallState.OUTGOING == state) {
+        // Add hang up option for any active calls (active | onhold), outgoing calls (dialing).
+        if (state == Call.State.ACTIVE ||
+                state == Call.State.ONHOLD ||
+                Call.State.isDialing(state)) {
             addHangupAction(builder);
         }
 
@@ -277,7 +271,7 @@
      * we do not issue a new notification for the exact same data.
      */
     private boolean checkForChangeAndSaveData(int icon, int content, Bitmap largeIcon,
-            String contentTitle, InCallState state, boolean showFullScreenIntent) {
+            String contentTitle, int state, boolean showFullScreenIntent) {
 
         // The two are different:
         // if new title is not null, it should be different from saved version OR
@@ -288,7 +282,7 @@
 
         // any change means we are definitely updating
         boolean retval = (mSavedIcon != icon) || (mSavedContent != content) ||
-                (mInCallState != state) || (mSavedLargeIcon != largeIcon) ||
+                (mCallState != state) || (mSavedLargeIcon != largeIcon) ||
                 contentTitleChanged;
 
         // A full screen intent means that we have been asked to interrupt an activity,
@@ -306,7 +300,7 @@
 
         mSavedIcon = icon;
         mSavedContent = content;
-        mInCallState = state;
+        mCallState = state;
         mSavedLargeIcon = largeIcon;
         mSavedContentTitle = contentTitle;
 
@@ -335,15 +329,24 @@
      * Gets a large icon from the contact info object to display in the notification.
      */
     private Bitmap getLargeIconToDisplay(ContactCacheEntry contactInfo, boolean isConference) {
+        Bitmap largeIcon = null;
         if (isConference) {
-            return BitmapFactory.decodeResource(mContext.getResources(),
+            largeIcon = BitmapFactory.decodeResource(mContext.getResources(),
                     R.drawable.picture_conference);
         }
         if (contactInfo.photo != null && (contactInfo.photo instanceof BitmapDrawable)) {
-            return ((BitmapDrawable) contactInfo.photo).getBitmap();
+            largeIcon = ((BitmapDrawable) contactInfo.photo).getBitmap();
         }
 
-        return null;
+        if (largeIcon != null) {
+            final int height = (int) mContext.getResources().getDimension(
+                    android.R.dimen.notification_large_icon_height);
+            final int width = (int) mContext.getResources().getDimension(
+                    android.R.dimen.notification_large_icon_width);
+            largeIcon = Bitmap.createScaledBitmap(largeIcon, width, height, false);
+        }
+
+        return largeIcon;
     }
 
     /**
@@ -376,7 +379,7 @@
         } else if (call.getState() == Call.State.ONHOLD) {
             resId = R.string.notification_on_hold;
 
-        } else if (call.getState() == Call.State.DIALING) {
+        } else if (Call.State.isDialing(call.getState())) {
             resId = R.string.notification_dialing;
         }
 
@@ -463,6 +466,14 @@
      * Returns true if notification should not be shown in the current state.
      */
     private boolean shouldSuppressNotification(InCallState state, Call call) {
+
+        // We can still be in the INCALL state when a call is disconnected (in order to show
+        // the "Call ended" screen.  So check that we have an active connection too.
+        if (call == null) {
+            Log.v(this, "suppressing: no call");
+            return true;
+        }
+
         // Suppress the in-call notification if the InCallScreen is the
         // foreground activity, since it's already obvious that you're on a
         // call.  (The status bar icon is needed only if you navigate *away*
@@ -475,13 +486,6 @@
             shouldSuppress = true;
         }
 
-        // We can still be in the INCALL state when a call is disconnected (in order to show
-        // the "Call ended" screen.  So check that we have an active connection too.
-        if (call == null) {
-            Log.v(this, "suppressing: no call");
-            shouldSuppress = true;
-        }
-
         // If there's an incoming ringing call: always show the
         // notification, since the in-call notification is what actually
         // launches the incoming call UI in the first place (see
@@ -500,7 +504,8 @@
         // comes up the user will see it flash on and off on an outgoing call.
         // This code ensures that we do not show the notification for outgoing calls before
         // the activity has started.
-        if (state == InCallState.OUTGOING && !InCallPresenter.getInstance().isActivityStarted()) {
+        if (state == InCallState.OUTGOING &&
+                !InCallPresenter.getInstance().isActivityPreviouslyStarted()) {
             Log.v(this, "suppressing: activity not started.");
             shouldSuppress = true;
         }
@@ -510,11 +515,7 @@
 
     private PendingIntent createLaunchPendingIntent() {
 
-        final Intent intent = new Intent(Intent.ACTION_MAIN, null);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
-                | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
-        intent.setClass(mContext, InCallActivity.class);
+        final Intent intent = InCallPresenter.getInstance().getInCallIntent(/*showdialpad=*/false);
 
         // PendingIntent that can be used to launch the InCallActivity.  The
         // system fires off this intent if the user pulls down the windowshade
diff --git a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
index 279593d..24303cd 100644
--- a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
+++ b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
@@ -34,10 +34,11 @@
     /**
      * Get an image asynchronously.
      *
+     * @param number The phone number for the image.
      * @param url The url to fetch the image from.
      * @param listener The listener to notify when the image lookup is complete.
      */
-    public void fetchImage(String url, ImageLookupListener listener);
+    public void fetchImage(String number, String url, ImageLookupListener listener);
 
     public interface NumberLookupListener {
 
@@ -66,5 +67,6 @@
         public String getPhoneLabel();
         public String getNormalizedNumber();
         public String getImageUrl();
+        public boolean isBusiness();
     }
 }
diff --git a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
index 3fc978a..a346ba5 100644
--- a/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
+++ b/InCallUI/src/com/android/incallui/widget/multiwaveview/GlowPadView.java
@@ -48,7 +48,7 @@
 /**
  * This is a copy of com.android.internal.widget.multiwaveview.GlowPadView with minor changes
  * to remove dependencies on private api's.
- * 
+ *
  * Incoporated the scaling functionality.
  *
  * A re-usable widget containing a center, outer ring and wave animation.
@@ -1114,9 +1114,9 @@
         final float placementWidth = getRingWidth();
         final float placementHeight = getRingHeight();
         float newWaveCenterX = mHorizontalInset
-                + Math.max(width, mMaxTargetWidth + placementWidth) / 2;
+                + (mMaxTargetWidth + placementWidth) / 2;
         float newWaveCenterY = mVerticalInset
-                + Math.max(height, + mMaxTargetHeight + placementHeight) / 2;
+                + (mMaxTargetHeight + placementHeight) / 2;
 
         if (mInitialLayout) {
             stopAndHideWaveAnimation();
