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.java4
-rw-r--r--java/com/android/incallui/videotech/empty/EmptyVideoTech.java4
-rw-r--r--java/com/android/incallui/videotech/ims/ImsVideoTech.java6
-rw-r--r--java/com/android/incallui/videotech/lightbringer/LightbringerTech.java146
4 files changed, 153 insertions, 7 deletions
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 5ecdc1d56..39998ad4c 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -24,7 +24,7 @@ import com.android.incallui.videotech.utils.SessionModificationState;
/** Video calling interface. */
public interface VideoTech {
- boolean isAvailable();
+ boolean isAvailable(Context context);
boolean isTransmittingOrReceiving();
@@ -39,7 +39,7 @@ public interface VideoTech {
VideoCallScreenDelegate createVideoCallScreenDelegate(
Context context, VideoCallScreen videoCallScreen);
- void onCallStateChanged(int newState);
+ void onCallStateChanged(Context context, int newState);
@SessionModificationState
int getSessionModificationState();
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index 58c680935..d0a111d62 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -27,7 +27,7 @@ import com.android.incallui.videotech.utils.SessionModificationState;
public class EmptyVideoTech implements VideoTech {
@Override
- public boolean isAvailable() {
+ public boolean isAvailable(Context context) {
return false;
}
@@ -53,7 +53,7 @@ public class EmptyVideoTech implements VideoTech {
}
@Override
- public void onCallStateChanged(int newState) {}
+ public void onCallStateChanged(Context context, int newState) {}
@Override
public int getSessionModificationState() {
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 8c2ca151a..66a7af58a 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -43,7 +43,7 @@ public class ImsVideoTech implements VideoTech {
}
@Override
- public boolean isAvailable() {
+ public boolean isAvailable(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
@@ -81,8 +81,8 @@ public class ImsVideoTech implements VideoTech {
}
@Override
- public void onCallStateChanged(int newState) {
- if (!isAvailable()) {
+ public void onCallStateChanged(Context context, int newState) {
+ if (!isAvailable(context)) {
return;
}
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
new file mode 100644
index 000000000..e49d0b84d
--- /dev/null
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2017 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.incallui.videotech.lightbringer;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.telecom.Call;
+import com.android.dialer.common.Assert;
+import com.android.dialer.lightbringer.Lightbringer;
+import com.android.dialer.lightbringer.LightbringerListener;
+import com.android.incallui.video.protocol.VideoCallScreen;
+import com.android.incallui.video.protocol.VideoCallScreenDelegate;
+import com.android.incallui.videotech.VideoTech;
+import com.android.incallui.videotech.utils.SessionModificationState;
+
+public class LightbringerTech implements VideoTech, LightbringerListener {
+ private final Lightbringer lightbringer;
+ private final VideoTechListener listener;
+ private final String callingNumber;
+ private int callState = Call.STATE_NEW;
+
+ public LightbringerTech(
+ @NonNull Lightbringer lightbringer,
+ @NonNull VideoTechListener listener,
+ @NonNull String callingNumber) {
+ this.lightbringer = Assert.isNotNull(lightbringer);
+ this.listener = Assert.isNotNull(listener);
+ this.callingNumber = Assert.isNotNull(callingNumber);
+
+ lightbringer.registerListener(this);
+ }
+
+ @Override
+ public boolean isAvailable(Context context) {
+ return callState == Call.STATE_ACTIVE && lightbringer.isReachable(context, callingNumber);
+ }
+
+ @Override
+ public boolean isTransmittingOrReceiving() {
+ return false;
+ }
+
+ @Override
+ public boolean isSelfManagedCamera() {
+ return false;
+ }
+
+ @Override
+ public boolean shouldUseSurfaceView() {
+ return false;
+ }
+
+ @Override
+ public VideoCallScreenDelegate createVideoCallScreenDelegate(
+ Context context, VideoCallScreen videoCallScreen) {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void onCallStateChanged(Context context, int newState) {
+ if (newState == Call.STATE_DISCONNECTING) {
+ lightbringer.unregisterListener(this);
+ }
+
+ callState = newState;
+ }
+
+ @Override
+ public int getSessionModificationState() {
+ return SessionModificationState.NO_REQUEST;
+ }
+
+ @Override
+ public void upgradeToVideo() {
+ // TODO: upgrade to a video call
+ }
+
+ @Override
+ public void acceptVideoRequest() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void acceptVideoRequestAsAudio() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void declineVideoRequest() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public boolean isTransmitting() {
+ return false;
+ }
+
+ @Override
+ public void stopTransmission() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void resumeTransmission() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void pause() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void unpause() {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void setCamera(String cameraId) {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void setDeviceOrientation(int rotation) {
+ throw Assert.createUnsupportedOperationFailException();
+ }
+
+ @Override
+ public void onLightbringerStateChanged() {
+ listener.onVideoTechStateChanged();
+ }
+}