Add methods to set a CallVideoProvider on a Call.
Bug: 15893156
Change-Id: I6ae151bc37d8c0be2e4c9823e9444717b6cdc0de
diff --git a/telecomm/java/android/telecomm/CallServiceAdapter.java b/telecomm/java/android/telecomm/CallServiceAdapter.java
index 31e37c4..8412e80 100644
--- a/telecomm/java/android/telecomm/CallServiceAdapter.java
+++ b/telecomm/java/android/telecomm/CallServiceAdapter.java
@@ -23,6 +23,7 @@
import com.android.internal.telecomm.ICallService;
import com.android.internal.telecomm.ICallServiceAdapter;
+import com.android.internal.telecomm.ICallVideoProvider;
import com.android.internal.telecomm.RemoteServiceCallback;
import java.util.ArrayList;
@@ -338,4 +339,19 @@
}
}
}
+
+ /**
+ * Sets the call video provider for a call.
+ *
+ * @param callId The unique ID of the call to set with the given call video provider.
+ * @param callVideoProvider The call video provider instance to set on the call.
+ */
+ public void setCallVideoProvider(String callId, CallVideoProvider callVideoProvider) {
+ for (ICallServiceAdapter adapter : mAdapters) {
+ try {
+ adapter.setCallVideoProvider(callId, callVideoProvider.getInterface());
+ } catch (RemoteException e) {
+ }
+ }
+ }
}
diff --git a/telecomm/java/android/telecomm/CallVideoProvider.java b/telecomm/java/android/telecomm/CallVideoProvider.java
index 6126fca..4f593b9 100644
--- a/telecomm/java/android/telecomm/CallVideoProvider.java
+++ b/telecomm/java/android/telecomm/CallVideoProvider.java
@@ -25,7 +25,6 @@
import com.android.internal.telecomm.ICallVideoProvider;
-/** @hide */
public abstract class CallVideoProvider {
private static final int MSG_SET_CAMERA = 1;
@@ -61,6 +60,14 @@
}
/**
+ * Returns binder object which can be used across IPC methods.
+ * @hide
+ */
+ public final ICallVideoProvider getInterface() {
+ return mBinder;
+ }
+
+ /**
* Sets the camera to be used for video recording in a video call.
*
* @param cameraId The id of the camera.
diff --git a/telecomm/java/android/telecomm/Connection.java b/telecomm/java/android/telecomm/Connection.java
index e4992d0..cf4e29a 100644
--- a/telecomm/java/android/telecomm/Connection.java
+++ b/telecomm/java/android/telecomm/Connection.java
@@ -18,6 +18,7 @@
import android.net.Uri;
import android.os.Bundle;
+import android.telecomm.CallVideoProvider;
import java.util.ArrayList;
import java.util.Collections;
@@ -40,6 +41,7 @@
void onDestroyed(Connection c);
void onConferenceCapableChanged(Connection c, boolean isConferenceCapable);
void onParentConnectionChanged(Connection c, Connection parent);
+ void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
}
public static class ListenerBase implements Listener {
@@ -78,6 +80,10 @@
/** ${inheritDoc} */
@Override
public void onParentConnectionChanged(Connection c, Connection parent) {}
+
+ /** {@inheritDoc} */
+ @Override
+ public void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider) {}
}
public final class State {
@@ -415,6 +421,16 @@
}
/**
+ * Sets the call video provider.
+ * @param callVideoProvider The call video provider.
+ */
+ public final void setCallVideoProvider(CallVideoProvider callVideoProvider) {
+ for (Listener l : mListeners) {
+ l.onSetCallVideoProvider(this, callVideoProvider);
+ }
+ }
+
+ /**
* Sets state to disconnected. This will first notify listeners with an
* {@link Listener#onStateChanged(Connection, int)} event, then will fire an
* {@link Listener#onDisconnected(Connection, int, String)} event with additional
diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java
index 23b99fa..4d525f20 100644
--- a/telecomm/java/android/telecomm/ConnectionService.java
+++ b/telecomm/java/android/telecomm/ConnectionService.java
@@ -155,6 +155,12 @@
String parentId = parent == null ? null : mIdByConnection.get(parent);
getAdapter().setIsConferenced(id, parentId);
}
+
+ @Override
+ public void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider) {
+ String id = mIdByConnection.get(c);
+ getAdapter().setCallVideoProvider(id, callVideoProvider);
+ }
};
@Override
diff --git a/telecomm/java/android/telecomm/RemoteConnectionService.java b/telecomm/java/android/telecomm/RemoteConnectionService.java
index 7658a76..64e5871 100644
--- a/telecomm/java/android/telecomm/RemoteConnectionService.java
+++ b/telecomm/java/android/telecomm/RemoteConnectionService.java
@@ -26,6 +26,7 @@
import com.android.internal.telecomm.ICallService;
import com.android.internal.telecomm.ICallServiceAdapter;
+import com.android.internal.telecomm.ICallVideoProvider;
import com.android.internal.telecomm.RemoteServiceCallback;
import java.util.ArrayList;
@@ -105,6 +106,12 @@
}
/** ${inheritDoc} */
+ public void setCallVideoProvider(
+ String connectionId, ICallVideoProvider callVideoProvider) {
+ // not supported for remote connections.
+ }
+
+ /** ${inheritDoc} */
@Override
public void setDialing(String connectionId) {
if (isCurrentConnection(connectionId)) {