summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/videotech
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/videotech')
-rw-r--r--java/com/android/incallui/videotech/VideoTech.java5
-rw-r--r--java/com/android/incallui/videotech/empty/EmptyVideoTech.java6
-rw-r--r--java/com/android/incallui/videotech/ims/ImsVideoTech.java10
-rw-r--r--java/com/android/incallui/videotech/lightbringer/LightbringerTech.java28
4 files changed, 34 insertions, 15 deletions
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 7da74c057..34c3e2ca9 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -17,6 +17,7 @@
package com.android.incallui.videotech;
import android.content.Context;
+import android.support.annotation.Nullable;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
import com.android.incallui.videotech.utils.SessionModificationState;
@@ -41,6 +42,8 @@ public interface VideoTech {
void onCallStateChanged(Context context, int newState);
+ void onRemovedFromCallList();
+
@SessionModificationState
int getSessionModificationState();
@@ -62,7 +65,7 @@ public interface VideoTech {
void unpause();
- void setCamera(String cameraId);
+ void setCamera(@Nullable String cameraId);
void setDeviceOrientation(int rotation);
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index d0a111d62..85eb64ee4 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -17,6 +17,7 @@
package com.android.incallui.videotech.empty;
import android.content.Context;
+import android.support.annotation.Nullable;
import com.android.dialer.common.Assert;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
@@ -56,6 +57,9 @@ public class EmptyVideoTech implements VideoTech {
public void onCallStateChanged(Context context, int newState) {}
@Override
+ public void onRemovedFromCallList() {}
+
+ @Override
public int getSessionModificationState() {
return SessionModificationState.NO_REQUEST;
}
@@ -90,7 +94,7 @@ public class EmptyVideoTech implements VideoTech {
public void unpause() {}
@Override
- public void setCamera(String cameraId) {}
+ public void setCamera(@Nullable String cameraId) {}
@Override
public void setDeviceOrientation(int rotation) {}
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 01e4bb84c..a6cef7b81 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -18,6 +18,7 @@ package com.android.incallui.videotech.ims;
import android.content.Context;
import android.os.Build;
+import android.support.annotation.Nullable;
import android.telecom.Call;
import android.telecom.Call.Details;
import android.telecom.VideoProfile;
@@ -120,6 +121,9 @@ public class ImsVideoTech implements VideoTech {
}
@Override
+ public void onRemovedFromCallList() {}
+
+ @Override
public int getSessionModificationState() {
return sessionModificationState;
}
@@ -183,8 +187,6 @@ public class ImsVideoTech implements VideoTech {
public void stopTransmission() {
LogUtil.enterBlock("ImsVideoTech.stopTransmission");
- setCamera(null);
-
int unpausedVideoState = getUnpausedVideoState(call.getDetails().getVideoState());
call.getVideoCall()
.sendSessionModifyRequest(
@@ -235,7 +237,7 @@ public class ImsVideoTech implements VideoTech {
}
@Override
- public void setCamera(String cameraId) {
+ public void setCamera(@Nullable String cameraId) {
call.getVideoCall().setCamera(cameraId);
call.getVideoCall().requestCameraCapabilities();
}
@@ -248,7 +250,7 @@ public class ImsVideoTech implements VideoTech {
private boolean canPause() {
return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO)
&& call.getState() == Call.STATE_ACTIVE
- && isTransmitting();
+ && isTransmittingOrReceiving();
}
static int getUnpausedVideoState(int videoState) {
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index e49d0b84d..55ee2db21 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -17,9 +17,13 @@
package com.android.incallui.videotech.lightbringer;
import android.content.Context;
+import android.os.Build;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.telecom.Call;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
import com.android.dialer.common.Assert;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerListener;
import com.android.incallui.video.protocol.VideoCallScreen;
@@ -30,15 +34,18 @@ import com.android.incallui.videotech.utils.SessionModificationState;
public class LightbringerTech implements VideoTech, LightbringerListener {
private final Lightbringer lightbringer;
private final VideoTechListener listener;
+ private final Call call;
private final String callingNumber;
private int callState = Call.STATE_NEW;
public LightbringerTech(
@NonNull Lightbringer lightbringer,
@NonNull VideoTechListener listener,
+ @NonNull Call call,
@NonNull String callingNumber) {
this.lightbringer = Assert.isNotNull(lightbringer);
this.listener = Assert.isNotNull(listener);
+ this.call = Assert.isNotNull(call);
this.callingNumber = Assert.isNotNull(callingNumber);
lightbringer.registerListener(this);
@@ -46,7 +53,11 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
@Override
public boolean isAvailable(Context context) {
- return callState == Call.STATE_ACTIVE && lightbringer.isReachable(context, callingNumber);
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
+ && ConfigProviderBindings.get(context).getBoolean("enable_lightbringer_video_upgrade", true)
+ && callState == Call.STATE_ACTIVE
+ && lightbringer.supportsUpgrade(context, callingNumber)
+ && TelecomManagerCompat.supportsHandover();
}
@Override
@@ -80,13 +91,16 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
}
@Override
+ public void onRemovedFromCallList() {}
+
+ @Override
public int getSessionModificationState() {
return SessionModificationState.NO_REQUEST;
}
@Override
public void upgradeToVideo() {
- // TODO: upgrade to a video call
+ lightbringer.requestUpgrade(call);
}
@Override
@@ -120,17 +134,13 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
}
@Override
- public void pause() {
- throw Assert.createUnsupportedOperationFailException();
- }
+ public void pause() {}
@Override
- public void unpause() {
- throw Assert.createUnsupportedOperationFailException();
- }
+ public void unpause() {}
@Override
- public void setCamera(String cameraId) {
+ public void setCamera(@Nullable String cameraId) {
throw Assert.createUnsupportedOperationFailException();
}