summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/answer
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/answer')
-rw-r--r--java/com/android/incallui/answer/bindings/AnswerBindings.java6
-rw-r--r--java/com/android/incallui/answer/impl/AnswerFragment.java48
-rw-r--r--java/com/android/incallui/answer/impl/res/values/strings.xml2
-rw-r--r--java/com/android/incallui/answer/protocol/AnswerScreen.java2
-rw-r--r--java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java2
5 files changed, 50 insertions, 10 deletions
diff --git a/java/com/android/incallui/answer/bindings/AnswerBindings.java b/java/com/android/incallui/answer/bindings/AnswerBindings.java
index 9f4199b7b..c370d7473 100644
--- a/java/com/android/incallui/answer/bindings/AnswerBindings.java
+++ b/java/com/android/incallui/answer/bindings/AnswerBindings.java
@@ -29,7 +29,8 @@ public class AnswerBindings {
boolean isVideoUpgradeRequest,
boolean isSelfManagedCamera,
boolean allowAnswerAndRelease,
- boolean hasCallOnHold) {
+ boolean hasCallOnHold,
+ boolean allowSpeakEasy) {
return AnswerFragment.newInstance(
callId,
isRttCall,
@@ -37,6 +38,7 @@ public class AnswerBindings {
isVideoUpgradeRequest,
isSelfManagedCamera,
allowAnswerAndRelease,
- hasCallOnHold);
+ hasCallOnHold,
+ allowSpeakEasy);
}
}
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 4729b41ba..05fd4f6b2 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -118,6 +118,8 @@ public class AnswerFragment extends Fragment
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
static final String ARG_IS_SELF_MANAGED_CAMERA = "is_self_managed_camera";
+ static final String ARG_ALLOW_SPEAK_EASY = "allow_speak_easy";
+
private static final String STATE_HAS_ANIMATED_ENTRY = "hasAnimated";
private static final int HINT_SECONDARY_SHOW_DURATION_MILLIS = 5000;
@@ -192,6 +194,17 @@ public class AnswerFragment extends Fragment
public void performAction(AnswerFragment fragment) {
fragment.performAnswerAndRelease();
}
+ },
+
+ SPEAKEASY(
+ R.drawable.quantum_ic_rtt_vd_theme_24,
+ R.string.speakeasy_secondary_button_hint,
+ R.string.speakeasy_secondary_button_hint,
+ R.string.speakeasy_secondary_button_hint) {
+ @Override
+ public void performAction(AnswerFragment fragment) {
+ fragment.performSpeakEasy();
+ }
};
@DrawableRes public final int icon;
@@ -218,6 +231,12 @@ public class AnswerFragment extends Fragment
}
}
+ private void performSpeakEasy() {
+ restoreAnswerAndReleaseButtonAnimation();
+ answerScreenDelegate.onSpeakEasyCall();
+ buttonAcceptClicked = true;
+ }
+
private void performAnswerAndRelease() {
restoreAnswerAndReleaseButtonAnimation();
answerScreenDelegate.onAnswerAndReleaseCall();
@@ -351,7 +370,8 @@ public class AnswerFragment extends Fragment
boolean isVideoUpgradeRequest,
boolean isSelfManagedCamera,
boolean allowAnswerAndRelease,
- boolean hasCallOnHold) {
+ boolean hasCallOnHold,
+ boolean allowSpeakEasy) {
Bundle bundle = new Bundle();
bundle.putString(ARG_CALL_ID, Assert.isNotNull(callId));
bundle.putBoolean(ARG_IS_RTT_CALL, isRttCall);
@@ -360,6 +380,7 @@ public class AnswerFragment extends Fragment
bundle.putBoolean(ARG_IS_SELF_MANAGED_CAMERA, isSelfManagedCamera);
bundle.putBoolean(ARG_ALLOW_ANSWER_AND_RELEASE, allowAnswerAndRelease);
bundle.putBoolean(ARG_HAS_CALL_ON_HOLD, hasCallOnHold);
+ bundle.putBoolean(ARG_ALLOW_SPEAK_EASY, allowSpeakEasy);
AnswerFragment instance = new AnswerFragment();
instance.setArguments(bundle);
@@ -427,13 +448,7 @@ public class AnswerFragment extends Fragment
answerAndReleaseBehavior = SecondaryBehavior.ANSWER_AND_RELEASE;
answerAndReleaseBehavior.applyToView(answerAndReleaseButton);
- answerAndReleaseButton.setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- performAnswerAndReleaseButtonAction();
- }
- });
+
answerAndReleaseButton.setClickable(AccessibilityUtil.isAccessibilityEnabled(getContext()));
answerAndReleaseButton.setFocusable(AccessibilityUtil.isAccessibilityEnabled(getContext()));
answerAndReleaseButton.setAccessibilityDelegate(accessibilityDelegate);
@@ -441,10 +456,22 @@ public class AnswerFragment extends Fragment
if (allowAnswerAndRelease()) {
answerAndReleaseButton.setVisibility(View.VISIBLE);
answerScreenDelegate.onAnswerAndReleaseButtonEnabled();
+ } else if (allowSpeakEasy()) {
+ answerAndReleaseBehavior = SecondaryBehavior.SPEAKEASY;
+ answerAndReleaseBehavior.applyToView(answerAndReleaseButton);
+ answerAndReleaseButton.setVisibility(View.VISIBLE);
+ answerScreenDelegate.onAnswerAndReleaseButtonEnabled();
} else {
answerAndReleaseButton.setVisibility(View.INVISIBLE);
answerScreenDelegate.onAnswerAndReleaseButtonDisabled();
}
+ answerAndReleaseButton.setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ performAnswerAndReleaseButtonAction();
+ }
+ });
}
@Override
@@ -452,6 +479,11 @@ public class AnswerFragment extends Fragment
return getArguments().getBoolean(ARG_ALLOW_ANSWER_AND_RELEASE);
}
+ @Override
+ public boolean allowSpeakEasy() {
+ return getArguments().getBoolean(ARG_ALLOW_SPEAK_EASY);
+ }
+
private boolean hasCallOnHold() {
return getArguments().getBoolean(ARG_HAS_CALL_ON_HOLD);
}
diff --git a/java/com/android/incallui/answer/impl/res/values/strings.xml b/java/com/android/incallui/answer/impl/res/values/strings.xml
index 2bc9ca09f..61400bdc8 100644
--- a/java/com/android/incallui/answer/impl/res/values/strings.xml
+++ b/java/com/android/incallui/answer/impl/res/values/strings.xml
@@ -40,4 +40,6 @@
<string description="The message announced to accessibility assistance on incoming call."
name="a11y_incoming_call_swipe_gesture_prompt">Two finger swipe up to answer. Two finger swipe down to decline.</string>
<string name="call_incoming_important">Important</string>
+
+ <string name="speakeasy_secondary_button_hint" translatable="false">Answer as RTT</string>
</resources>
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreen.java b/java/com/android/incallui/answer/protocol/AnswerScreen.java
index f030ce984..38e4dc58f 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreen.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreen.java
@@ -32,6 +32,8 @@ public interface AnswerScreen {
boolean allowAnswerAndRelease();
+ boolean allowSpeakEasy();
+
boolean isActionTimeout();
void setTextResponses(List<String> textResponses);
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
index 5710922e0..172d9646a 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
@@ -30,6 +30,8 @@ public interface AnswerScreenDelegate {
void onReject();
+ void onSpeakEasyCall();
+
void onAnswerAndReleaseCall();
void onAnswerAndReleaseButtonEnabled();