Support for multiple VideoCall.Listeners for a VideoCall.

The current code assumes that only a single instance of VideoCall will be
provided to the default system InCall UI.  Ideally multiple
InCallService implementations should be able to use the VideoCall APIs.
Note: it only really makes sense for a single InCallService to get/set
the video surfaces.

- Fixed bug in ParcelableCall which would cause a new instance of
VideoCallImpl to be created every time a call is updated from Telecom.
Added a flag to ParcelableCall to indicate whether the parcel includes a
change to the video provider information, which is used when unparceling
to determine whether to set/create the video call impl.
- Renamed "setVideoCallback" to "addVideocallback".
- Modified Connection.VideoProvider code to keep a list of Video callbacks
and fire off all of them when Video Provider changes occur.

Bug: 20092420
Change-Id: Ic16b6afe1b7532cc64d006c133adbae57946d97d
This commit is contained in:
Tyler Gunn
2015-04-15 14:23:42 -07:00
parent 2bbd2b6830
commit 75958420f2
8 changed files with 121 additions and 32 deletions

View File

@@ -166,7 +166,7 @@ public class VideoCallImpl extends VideoCall {
mVideoProvider.asBinder().linkToDeath(mDeathRecipient, 0);
mBinder = new VideoCallListenerBinder();
mVideoProvider.setVideoCallback(mBinder);
mVideoProvider.addVideoCallback(mBinder);
}
/** {@inheritDoc} */
@@ -174,6 +174,15 @@ public class VideoCallImpl extends VideoCall {
mVideoCallListener = videoCallListener;
}
/** {@inheritDoc} */
public void removeVideoCallListener() {
mVideoCallListener = null;
try {
mVideoProvider.removeVideoCallback(mBinder);
} catch (RemoteException e) {
}
}
/** {@inheritDoc} */
public void setCamera(String cameraId) {
try {