From 6c480f796e82794001109e5d46260770af63a7ee Mon Sep 17 00:00:00 2001 From: linyuh Date: Mon, 2 Apr 2018 17:15:36 -0700 Subject: Support placing Duo calls in the new UI's bottom sheet. Bug: 70988685 Test: DuoCallModuleTest, PlaceDuoCallEndToEndTest, Manual testing PiperOrigin-RevId: 191372706 Change-Id: I439be71c361eaca722820b81278e5f95322e100c --- .../dialer/historyitemactions/DuoCallModule.java | 80 ++++++++++++++++++++++ .../dialer/historyitemactions/IntentModule.java | 2 +- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 java/com/android/dialer/historyitemactions/DuoCallModule.java (limited to 'java/com/android/dialer/historyitemactions') diff --git a/java/com/android/dialer/historyitemactions/DuoCallModule.java b/java/com/android/dialer/historyitemactions/DuoCallModule.java new file mode 100644 index 000000000..b0d6a11fc --- /dev/null +++ b/java/com/android/dialer/historyitemactions/DuoCallModule.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2018 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.dialer.historyitemactions; + +import android.Manifest.permission; +import android.content.Context; +import android.support.annotation.RequiresPermission; +import com.android.dialer.callintent.CallInitiationType; +import com.android.dialer.callintent.CallIntentBuilder; +import com.android.dialer.duo.Duo; +import com.android.dialer.duo.DuoComponent; +import com.android.dialer.duo.PlaceDuoCallNotifier; +import com.android.dialer.precall.PreCall; + +/** {@link HistoryItemActionModule} for making a Duo call. */ +public class DuoCallModule implements HistoryItemActionModule { + + private final Context context; + private final String phoneNumber; + private final CallInitiationType.Type callInitiationType; + + /** + * Creates a module for making a Duo call. + * + * @param phoneNumber The number to start a Duo call. It can be of any format. + */ + public DuoCallModule( + Context context, String phoneNumber, CallInitiationType.Type callInitiationType) { + this.context = context; + this.phoneNumber = phoneNumber; + this.callInitiationType = callInitiationType; + } + + @Override + public int getStringId() { + return R.string.video_call; + } + + @Override + public int getDrawableId() { + return R.drawable.quantum_ic_videocam_vd_white_24; + } + + @Override + @RequiresPermission(permission.READ_PHONE_STATE) + public boolean onClick() { + if (canPlaceDuoCall(context, phoneNumber)) { + PlaceDuoCallNotifier.notify(context, phoneNumber); + } else { + // If a Duo call can't be placed, fall back to an IMS video call. + PreCall.start( + context, new CallIntentBuilder(phoneNumber, callInitiationType).setIsVideoCall(true)); + } + + return true; // Close the bottom sheet. + } + + private boolean canPlaceDuoCall(Context context, String phoneNumber) { + Duo duo = DuoComponent.get(context).getDuo(); + + return duo.isInstalled(context) + && duo.isEnabled(context) + && duo.isActivated(context) + && duo.isReachable(context, phoneNumber); + } +} diff --git a/java/com/android/dialer/historyitemactions/IntentModule.java b/java/com/android/dialer/historyitemactions/IntentModule.java index efb10e8bb..a5236c57a 100644 --- a/java/com/android/dialer/historyitemactions/IntentModule.java +++ b/java/com/android/dialer/historyitemactions/IntentModule.java @@ -77,7 +77,7 @@ public class IntentModule implements HistoryItemActionModule { R.drawable.quantum_ic_call_white_24); } - public static IntentModule newVideoCallModule( + public static IntentModule newCarrierVideoCallModule( Context context, String number, @Nullable PhoneAccountHandle phoneAccountHandle, -- cgit v1.2.3