summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQi Wang <wangqi@google.com>2016-02-29 11:45:01 -0800
committerQi Wang <wangqi@google.com>2016-02-29 18:47:47 -0800
commite1c196e04154815e2fb55801af73beb9fb2aa324 (patch)
treed7df7c75b0304c55fad2c04478c594ecb65989ab
parent9cff658da23dc80786650fb0203ae4566839f18d (diff)
Accessibility: announce the active call after switching calls.
Bug: 24200862 Change-Id: I102a9c8406984a9dd4cfd8b91ec77254aa984dd5
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java17
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java10
-rw-r--r--res/values/strings.xml3
3 files changed, 23 insertions, 7 deletions
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 9ba4a2b70..785d3d3aa 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -1124,10 +1124,19 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
public void dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_ANNOUNCEMENT) {
- dispatchPopulateAccessibilityEvent(event, mCallStateLabel);
- dispatchPopulateAccessibilityEvent(event, mPrimaryName);
- dispatchPopulateAccessibilityEvent(event, mCallTypeLabel);
- dispatchPopulateAccessibilityEvent(event, mPhoneNumber);
+ // Indicate this call is in active if no label is provided. The label is empty when
+ // the call is in active, not in other status such as onhold or dialing etc.
+ if (!mCallStateLabel.isShown() || TextUtils.isEmpty(mCallStateLabel.getText())) {
+ event.getText().add(
+ TextUtils.expandTemplate(
+ getResources().getText(R.string.accessibility_call_is_active),
+ mPrimaryName.getText()));
+ } else {
+ dispatchPopulateAccessibilityEvent(event, mCallStateLabel);
+ dispatchPopulateAccessibilityEvent(event, mPrimaryName);
+ dispatchPopulateAccessibilityEvent(event, mCallTypeLabel);
+ dispatchPopulateAccessibilityEvent(event, mPhoneNumber);
+ }
return;
}
dispatchPopulateAccessibilityEvent(event, mCallStateLabel);
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index dd255e09e..bf7b4769b 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -337,7 +337,7 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
getUi().setEndCallButtonEnabled(shouldShowEndCallButton(mPrimary, callState),
callState != Call.State.INCOMING /* animate */);
- maybeSendAccessibilityEvent(oldState, newState);
+ maybeSendAccessibilityEvent(oldState, newState, primaryChanged);
}
@Override
@@ -1062,7 +1062,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
return true;
}
- private void maybeSendAccessibilityEvent(InCallState oldState, InCallState newState) {
+ private void maybeSendAccessibilityEvent(InCallState oldState, InCallState newState,
+ boolean primaryChanged) {
if (mContext == null) {
return;
}
@@ -1071,8 +1072,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
if (!am.isEnabled()) {
return;
}
+ // Announce the current call if it's new incoming/outgoing call or primary call is changed
+ // due to switching calls between two ongoing calls (one is on hold).
if ((oldState != InCallState.OUTGOING && newState == InCallState.OUTGOING)
- || (oldState != InCallState.INCOMING && newState == InCallState.INCOMING)) {
+ || (oldState != InCallState.INCOMING && newState == InCallState.INCOMING)
+ || primaryChanged) {
if (getUi() != null) {
getUi().sendAccessibilityAnnouncement();
}
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 734dde899..830af65b8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1025,4 +1025,7 @@
<!-- Label under the name of a blocked number in the call log. [CHAR LIMIT=15] -->
<string name="blocked_number_call_log_label">Blocked</string>
+
+ <!-- Accessibility announcement to indicate which call is active -->
+ <string name="accessibility_call_is_active"><xliff:g id="nameOrNumber">^1</xliff:g> is active</string>
</resources>