Merge "Remove unneeded dialpad strings from InCallUI" into lmp-dev
diff --git a/InCallUI/res/values-el/strings.xml b/InCallUI/res/values-el/strings.xml
index 53c200e..af6c211 100644
--- a/InCallUI/res/values-el/strings.xml
+++ b/InCallUI/res/values-el/strings.xml
@@ -168,10 +168,8 @@
     <string name="description_target_decline" msgid="4789834364389731957">"Απόρριψη"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"Απάντηση ως βιντεοκλήση"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"Απάντηση ως φωνητική κλήση"</string>
-    <!-- no translation found for description_target_accept_upgrade_to_video_request (2894072808324604062) -->
-    <skip />
-    <!-- no translation found for description_target_decline_upgrade_to_video_request (4093888612888538776) -->
-    <skip />
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"Αποδοχή αιτήματος βίντεο"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"Απόρριψη αιτήματος βίντεο"</string>
     <string name="description_direction_up" msgid="4441409581444516690">"Κύλιση προς τα επάνω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
     <string name="description_direction_left" msgid="7129873384376533287">"Κύλιση προς τα αριστερά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
     <string name="description_direction_right" msgid="2122584234531957308">"Κύλιση προς τα δεξιά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
diff --git a/InCallUI/res/values-my-rMM/strings.xml b/InCallUI/res/values-my-rMM/strings.xml
index 0336562..f6e978c 100644
--- a/InCallUI/res/values-my-rMM/strings.xml
+++ b/InCallUI/res/values-my-rMM/strings.xml
@@ -51,7 +51,7 @@
     <string name="wait_prompt_str" msgid="7601815427707856238">"အောက်ပါ တီးလုံးများကို ပို့မလား?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"အသံ ပို့နေစဉ်\n"</string>
     <string name="send_button" msgid="4106860097497818751">"ပို့ခြင်း"</string>
-    <string name="pause_prompt_yes" msgid="3564467212025151797">"ဟုတ်သည်"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"ဟုတ်ကဲ့"</string>
     <string name="pause_prompt_no" msgid="6686238803236884877">"မဟုတ်ပါ"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"wildစာလုံးကို အစားထိုးရန်မှာ"</string>
     <string name="caller_manage_header" msgid="3231519674734638786">"ကွန်းဖရင့် ခေါ်ဆိုမှု <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
@@ -168,10 +168,8 @@
     <string name="description_target_decline" msgid="4789834364389731957">"လက်မခံပါ"</string>
     <string name="description_target_answer_video_call" msgid="3495965588512395026">"ဗွီဒီယို ခေါ်ဆိုမှုအဖြစ် ဖြေကြားရန်"</string>
     <string name="description_target_answer_audio_call" msgid="8396296303320994450">"အသံ ခေါ်ဆိုမှုအဖြစ် ဖြေကြားရန်"</string>
-    <!-- no translation found for description_target_accept_upgrade_to_video_request (2894072808324604062) -->
-    <skip />
-    <!-- no translation found for description_target_decline_upgrade_to_video_request (4093888612888538776) -->
-    <skip />
+    <string name="description_target_accept_upgrade_to_video_request" msgid="2894072808324604062">"ဗီဒီယို တောင်းဆိုမှုကို လက်ခံရန်"</string>
+    <string name="description_target_decline_upgrade_to_video_request" msgid="4093888612888538776">"ဗီဒီယို တောင်းဆိုမှုကို ငြင်းပယ်ရန်"</string>
     <string name="description_direction_up" msgid="4441409581444516690">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> အတွက် အပေါ်ကို ပွတ်ဆွဲပါ"</string>
     <string name="description_direction_left" msgid="7129873384376533287">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> အတွက် ဖယ်ဘက်ကို ပွတ်ဆွဲပါ"</string>
     <string name="description_direction_right" msgid="2122584234531957308">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> အတွက် ညာဖက်ကို ပွတ်ဆွဲပါ"</string>
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index d92dbbb..06b7605 100644
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -486,12 +486,30 @@
     -->
     <string name="description_delete_button">backspace</string>
 
-    <!-- Content description of the speakerphone enabled notification icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
-    <string name="accessibility_speakerphone_enabled">Speakerphone enabled.</string>
+    <!-- String used by AccessibilityService to announce that the speakerphone has been selected for audio output [CHAR LIMIT=NONE]-->
+    <string name="accessibility_speakerphone_selected">Speakerphone selected</string>
 
-    <!-- Content description of the call muted notification icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+    <!-- String used by AccessibilityService to announce that the phone's earpiece has been selected for audio output [CHAR LIMIT=NONE]-->
+    <string name="accessibility_earpiece_selected">Earpiece selected</string>
+
+    <!-- String used by AccessibilityService to announce that the wired headset has been selected for audio output [CHAR LIMIT=NONE]-->
+    <string name="accessibility_wired_headset_selected">Wired headset selected</string>
+
+    <!-- String used by AccessibilityService to announce that the bluetooth headset has been selected for audio output [CHAR LIMIT=NONE]-->
+    <string name="accessibility_bluetooth_headset_selected">Bluetooth headset selected</string>
+
+    <!-- String used by AccessibilityService to announce that the call has been muted [CHAR LIMIT=NONE]-->
     <string name="accessibility_call_muted">Call muted.</string>
 
+    <!-- String used by AccessibilityService to announce that the call has been unmuted [CHAR LIMIT=NONE]-->
+    <string name="accessibility_call_unmuted">Call unmuted.</string>
+
+    <!-- String used by AccessibilityService to announce that the call has been put on hold [CHAR LIMIT=NONE]-->
+    <string name="accessibility_call_put_on_hold">Call put on hold.</string>
+
+    <!-- String used by AccessibilityService to announce that the call has been removed from hold [CHAR LIMIT=NONE]-->
+    <string name="accessibility_call_removed_from_hold">Call removed from hold.</string>
+
     <!-- Description of the answer target in the Slide unlock screen of Phone. [CHAR LIMIT=NONE] -->
     <string name="description_target_answer">Answer</string>
     <!-- Description of the send_sms target in the Slide unlock screen of Phone. [CHAR LIMIT=NONE] -->
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 075ec98..6bd3d0b 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -201,6 +201,7 @@
     }
 
     private void updateFromTelecommCall() {
+        Log.d(this, "updateFromTelecommCall: " + mTelecommCall);
         setState(translateState(mTelecommCall.getState()));
         setDisconnectCause(mTelecommCall.getDetails().getDisconnectCauseCode());
 
@@ -380,7 +381,7 @@
     public String toString() {
         return String.format(Locale.US, "[%s, %s, %s, children:%s, parent:%s, videoState:%d]",
                 mId,
-                State.toString(mState),
+                State.toString(getState()),
                 PhoneCapabilities.toString(mTelecommCall.getDetails().getCallCapabilities()),
                 mChildCallIds,
                 getParentId(),
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 9b141da..09a3bc2 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -16,9 +16,9 @@
 
 package com.android.incallui;
 
+import android.content.Context;
 import android.graphics.drawable.LayerDrawable;
 import android.os.Bundle;
-
 import android.telecomm.AudioState;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
@@ -26,6 +26,8 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
 import android.widget.CompoundButton;
 import android.widget.ImageButton;
 import android.widget.PopupMenu;
@@ -60,6 +62,8 @@
     private View mManageConferenceButton;
     private View mGenericMergeButton;
 
+    private int mPrevAudioMode = 0;
+
     // Constants for Drawable.setAlpha()
     private static final int HIDDEN = 0;
     private static final int VISIBLE = 255;
@@ -224,7 +228,11 @@
 
     @Override
     public void setMute(boolean value) {
-        mMuteButton.setSelected(value);
+        if (mMuteButton.isSelected() != value) {
+            mMuteButton.setSelected(value);
+            maybeSendAccessibilityEvent(mMuteButton, value ? R.string.accessibility_call_muted
+                    : R.string.accessibility_call_unmuted);
+        }
     }
 
     @Override
@@ -249,7 +257,12 @@
 
     @Override
     public void setHold(boolean value) {
-        mHoldButton.setSelected(value);
+        if (mHoldButton.isSelected() != value) {
+            mHoldButton.setSelected(value);
+            maybeSendAccessibilityEvent(mHoldButton,
+                    value ? R.string.accessibility_call_put_on_hold :
+                            R.string.accessibility_call_removed_from_hold);
+        }
     }
 
     @Override
@@ -372,6 +385,30 @@
     public void setAudio(int mode) {
         updateAudioButtons(getPresenter().getSupportedAudio());
         refreshAudioModePopup();
+
+        if (mPrevAudioMode != mode) {
+            if (mPrevAudioMode != 0) {
+                int stringId = 0;
+                switch (mode) {
+                    case AudioState.ROUTE_EARPIECE:
+                        stringId = R.string.accessibility_earpiece_selected;
+                        break;
+                    case AudioState.ROUTE_BLUETOOTH:
+                        stringId = R.string.accessibility_bluetooth_headset_selected;
+                        break;
+                    case AudioState.ROUTE_WIRED_HEADSET:
+                        stringId = R.string.accessibility_wired_headset_selected;
+                        break;
+                    case AudioState.ROUTE_SPEAKER:
+                        stringId = R.string.accessibility_speakerphone_selected;
+                        break;
+                }
+                if (stringId != 0) {
+                    maybeSendAccessibilityEvent(mAudioButton, stringId);
+                }
+            }
+            mPrevAudioMode = mode;
+        }
     }
 
     @Override
@@ -651,4 +688,19 @@
     public void hideExtraRow() {
        mExtraRowButton.setVisibility(View.GONE);
     }
+
+    private void maybeSendAccessibilityEvent(View view, int stringId) {
+        final Context context = getActivity();
+        AccessibilityManager manager =
+                (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
+        if (manager != null && manager.isEnabled()) {
+            AccessibilityEvent e = AccessibilityEvent.obtain();
+            e.setSource(view);
+            e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+            e.setClassName(getClass().getName());
+            e.setPackageName(context.getPackageName());
+            e.getText().add(context.getResources().getString(stringId));
+            manager.sendAccessibilityEvent(e);
+        }
+    }
 }
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index a3fa58d..0908b56 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -136,8 +136,8 @@
      * Called when a single call has changed.
      */
     public void onUpdate(Call call) {
-        Log.d(this, "onUpdate - ", call);
         onUpdateCall(call);
+        Log.d(this, "onUpdate - ", call);
         notifyGenericListeners();
     }