diff options
Diffstat (limited to 'java/com/android/incallui/answer')
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(); |