diff options
18 files changed, 726 insertions, 765 deletions
@@ -349,8 +349,8 @@ LOCAL_SRC_FILES += \ media/java/android/media/tv/ITvInputServiceCallback.aidl \ media/java/android/media/tv/ITvInputSession.aidl \ media/java/android/media/tv/ITvInputSessionCallback.aidl \ - telecomm/java/com/android/internal/telecomm/ICallVideoProvider.aidl \ - telecomm/java/com/android/internal/telecomm/ICallVideoClient.aidl \ + telecomm/java/com/android/internal/telecomm/IVideoCallCallback.aidl \ + telecomm/java/com/android/internal/telecomm/IVideoCallProvider.aidl \ telecomm/java/com/android/internal/telecomm/IConnectionService.aidl \ telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl \ telecomm/java/com/android/internal/telecomm/IInCallAdapter.aidl \ diff --git a/api/current.txt b/api/current.txt index b2e4969..915ae49 100644 --- a/api/current.txt +++ b/api/current.txt @@ -28465,13 +28465,13 @@ package android.telecomm { method public void answer(int); method public void conference(); method public void disconnect(); - method public android.telecomm.RemoteCallVideoProvider getCallVideoProvider(); method public java.util.List<java.lang.String> getCannedTextResponses(); method public java.util.List<android.telecomm.Call> getChildren(); method public android.telecomm.Call.Details getDetails(); method public android.telecomm.Call getParent(); method public java.lang.String getRemainingPostDialSequence(); method public int getState(); + method public android.telecomm.InCallService.VideoCall getVideoCall(); method public void hold(); method public void phoneAccountClicked(); method public void phoneAccountSelected(android.telecomm.PhoneAccountHandle); @@ -28510,7 +28510,6 @@ package android.telecomm { public static abstract class Call.Listener { ctor public Call.Listener(); method public void onCallDestroyed(android.telecomm.Call); - method public void onCallVideoProviderChanged(android.telecomm.Call, android.telecomm.RemoteCallVideoProvider); method public void onCannedTextResponsesLoaded(android.telecomm.Call, java.util.List<java.lang.String>); method public void onChildrenChanged(android.telecomm.Call, java.util.List<android.telecomm.Call>); method public void onDetailsChanged(android.telecomm.Call, android.telecomm.Call.Details); @@ -28519,6 +28518,7 @@ package android.telecomm { method public void onPostDialWait(android.telecomm.Call, java.lang.String); method public void onStartActivity(android.telecomm.Call, android.app.PendingIntent); method public void onStateChanged(android.telecomm.Call, int); + method public void onVideoCallChanged(android.telecomm.Call, android.telecomm.InCallService.VideoCall); } public final class CallAudioState implements android.os.Parcelable { @@ -28582,45 +28582,12 @@ package android.telecomm { enum_constant public static final android.telecomm.CallState RINGING; } - public abstract class CallVideoClient { - ctor public CallVideoClient(); - method public abstract void onHandleCallSessionEvent(int); - method public abstract void onHandleCameraCapabilitiesChange(android.telecomm.CallCameraCapabilities); - method public abstract void onReceiveSessionModifyRequest(android.telecomm.VideoCallProfile); - method public abstract void onReceiveSessionModifyResponse(int, android.telecomm.VideoCallProfile, android.telecomm.VideoCallProfile); - method public abstract void onUpdateCallDataUsage(int); - method public abstract void onUpdatePeerDimensions(int, int); - field public static final int SESSION_EVENT_RX_PAUSE = 1; // 0x1 - field public static final int SESSION_EVENT_RX_RESUME = 2; // 0x2 - field public static final int SESSION_EVENT_TX_START = 3; // 0x3 - field public static final int SESSION_EVENT_TX_STOP = 4; // 0x4 - field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2 - field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3 - field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1 - } - - public abstract class CallVideoProvider { - ctor public CallVideoProvider(); - method public abstract void onRequestCallDataUsage(); - method public abstract void onRequestCameraCapabilities(); - method public abstract void onSendSessionModifyRequest(android.telecomm.VideoCallProfile); - method public abstract void onSendSessionModifyResponse(android.telecomm.VideoCallProfile); - method public abstract void onSetCallVideoClient(android.telecomm.RemoteCallVideoClient); - method public abstract void onSetCamera(java.lang.String); - method public abstract void onSetDeviceOrientation(int); - method public abstract void onSetDisplaySurface(android.view.Surface); - method public abstract void onSetPauseImage(java.lang.String); - method public abstract void onSetPreviewSurface(android.view.Surface); - method public abstract void onSetZoom(float); - } - public abstract class Connection { ctor public Connection(); method public final void destroy(); method public final boolean getAudioModeIsVoip(); method public final android.telecomm.CallAudioState getCallAudioState(); method public final int getCallCapabilities(); - method public final android.telecomm.CallVideoProvider getCallVideoProvider(); method public final java.lang.String getCallerDisplayName(); method public final int getCallerDisplayNamePresentation(); method public final java.util.List<android.telecomm.Connection> getChildConnections(); @@ -28629,6 +28596,7 @@ package android.telecomm { method public final android.telecomm.Connection getParentConnection(); method public final int getState(); method public final android.telecomm.StatusHints getStatusHints(); + method public final android.telecomm.VideoCallProvider getVideoCallProvider(); method public final int getVideoState(); method public final boolean isConferenceConnection(); method public final boolean isRequestingRingback(); @@ -28650,7 +28618,6 @@ package android.telecomm { method public final void setActive(); method public final void setAudioModeIsVoip(boolean); method public final void setCallCapabilities(int); - method public final void setCallVideoProvider(android.telecomm.CallVideoProvider); method public final void setCallerDisplayName(java.lang.String, int); method public final void setDialing(); method public final void setDisconnected(int, java.lang.String); @@ -28662,6 +28629,7 @@ package android.telecomm { method public final void setRinging(); method public final void setSignal(android.os.Bundle); method public final void setStatusHints(android.telecomm.StatusHints); + method public final void setVideoCallProvider(android.telecomm.VideoCallProvider); method public final void setVideoState(int); method public final void startActivityFromInCall(android.app.PendingIntent); method public static java.lang.String stateToString(int); @@ -28745,6 +28713,38 @@ package android.telecomm { method public void onPhoneDestroyed(android.telecomm.Phone); } + public static abstract class InCallService.VideoCall { + ctor public InCallService.VideoCall(); + method public abstract void requestCallDataUsage(); + method public abstract void requestCameraCapabilities(); + method public abstract void sendSessionModifyRequest(android.telecomm.VideoCallProfile); + method public abstract void sendSessionModifyResponse(android.telecomm.VideoCallProfile); + method public abstract void setCamera(java.lang.String); + method public abstract void setDeviceOrientation(int); + method public abstract void setDisplaySurface(android.view.Surface); + method public abstract void setPauseImage(java.lang.String); + method public abstract void setPreviewSurface(android.view.Surface); + method public abstract void setVideoCallListener(android.telecomm.InCallService.VideoCall.Listener); + method public abstract void setZoom(float); + field public static final int SESSION_EVENT_RX_PAUSE = 1; // 0x1 + field public static final int SESSION_EVENT_RX_RESUME = 2; // 0x2 + field public static final int SESSION_EVENT_TX_START = 3; // 0x3 + field public static final int SESSION_EVENT_TX_STOP = 4; // 0x4 + field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2 + field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3 + field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1 + } + + public static abstract class InCallService.VideoCall.Listener { + ctor public InCallService.VideoCall.Listener(); + method public abstract void onCallDataUsageChanged(int); + method public abstract void onCallSessionEvent(int); + method public abstract void onCameraCapabilitiesChanged(android.telecomm.CallCameraCapabilities); + method public abstract void onPeerDimensionsChanged(int, int); + method public abstract void onSessionModifyRequestReceived(android.telecomm.VideoCallProfile); + method public abstract void onSessionModifyResponseReceived(int, android.telecomm.VideoCallProfile, android.telecomm.VideoCallProfile); + } + public final class Phone { method public final void addListener(android.telecomm.Phone.Listener); method public final android.telecomm.CallAudioState getAudioState(); @@ -28789,29 +28789,6 @@ package android.telecomm { field public static final android.os.Parcelable.Creator CREATOR; } - public class RemoteCallVideoClient { - method public void handleCallSessionEvent(int); - method public void handleCameraCapabilitiesChange(android.telecomm.CallCameraCapabilities); - method public void receiveSessionModifyRequest(android.telecomm.VideoCallProfile); - method public void receiveSessionModifyResponse(int, android.telecomm.VideoCallProfile, android.telecomm.VideoCallProfile); - method public void updateCallDataUsage(int); - method public void updatePeerDimensions(int, int); - } - - public class RemoteCallVideoProvider { - method public void requestCallDataUsage(); - method public void requestCameraCapabilities(); - method public void sendSessionModifyRequest(android.telecomm.VideoCallProfile); - method public void sendSessionModifyResponse(android.telecomm.VideoCallProfile); - method public void setCallVideoClient(android.telecomm.CallVideoClient); - method public void setCamera(java.lang.String); - method public void setDeviceOrientation(int); - method public void setDisplaySurface(android.view.Surface); - method public void setPauseImage(java.lang.String); - method public void setPreviewSurface(android.view.Surface); - method public void setZoom(float); - } - public final class RemoteConnection { method public void abort(); method public void addListener(android.telecomm.RemoteConnection.Listener); @@ -28898,6 +28875,20 @@ package android.telecomm { field public static final java.lang.String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.intent.extra.START_CALL_WITH_VIDEO_STATE"; } + public class VideoCallImpl extends android.telecomm.InCallService.VideoCall { + method public void requestCallDataUsage(); + method public void requestCameraCapabilities(); + method public void sendSessionModifyRequest(android.telecomm.VideoCallProfile); + method public void sendSessionModifyResponse(android.telecomm.VideoCallProfile); + method public void setCamera(java.lang.String); + method public void setDeviceOrientation(int); + method public void setDisplaySurface(android.view.Surface); + method public void setPauseImage(java.lang.String); + method public void setPreviewSurface(android.view.Surface); + method public void setVideoCallListener(android.telecomm.InCallService.VideoCall.Listener); + method public void setZoom(float); + } + public class VideoCallProfile implements android.os.Parcelable { ctor public VideoCallProfile(int); ctor public VideoCallProfile(int, int); @@ -28917,6 +28908,26 @@ package android.telecomm { field public static final int VIDEO_STATE_TX_ENABLED = 1; // 0x1 } + public abstract class VideoCallProvider { + ctor public VideoCallProvider(); + method public void changeCallDataUsage(int); + method public void changeCameraCapabilities(android.telecomm.CallCameraCapabilities); + method public void changePeerDimensions(int, int); + method public void handleCallSessionEvent(int); + method public abstract void onRequestCallDataUsage(); + method public abstract void onRequestCameraCapabilities(); + method public abstract void onSendSessionModifyRequest(android.telecomm.VideoCallProfile); + method public abstract void onSendSessionModifyResponse(android.telecomm.VideoCallProfile); + method public abstract void onSetCamera(java.lang.String); + method public abstract void onSetDeviceOrientation(int); + method public abstract void onSetDisplaySurface(android.view.Surface); + method public abstract void onSetPauseImage(java.lang.String); + method public abstract void onSetPreviewSurface(android.view.Surface); + method public abstract void onSetZoom(float); + method public void receiveSessionModifyRequest(android.telecomm.VideoCallProfile); + method public void receiveSessionModifyResponse(int, android.telecomm.VideoCallProfile, android.telecomm.VideoCallProfile); + } + } package android.telephony { diff --git a/telecomm/java/android/telecomm/Call.java b/telecomm/java/android/telecomm/Call.java index ad5c614..838f221 100644 --- a/telecomm/java/android/telecomm/Call.java +++ b/telecomm/java/android/telecomm/Call.java @@ -18,9 +18,9 @@ package android.telecomm; import android.app.PendingIntent; import android.net.Uri; -import android.os.RemoteException; import android.telephony.DisconnectCause; +import java.lang.String; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -309,15 +309,13 @@ public final class Call { public void onPostDialWait(Call call, String remainingPostDialSequence) {} /** - * Invoked when the {@code RemoteCallVideoProvider} of the {@code Call} has changed. + * Invoked when the {@code Call.VideoCall} of the {@code Call} has changed. * * @param call The {@code Call} invoking this method. - * @param callVideoProvider The {@code RemoteCallVideoProvider} associated with the - * {@code Call}. + * @param videoCall The {@code Call.VideoCall} associated with the {@code Call}. */ - public void onCallVideoProviderChanged(Call call, - RemoteCallVideoProvider callVideoProvider) {} + public void onVideoCallChanged(Call call, InCallService.VideoCall videoCall) {} /** * Launches an activity for this connection on top of the in-call UI. @@ -348,7 +346,7 @@ public final class Call { private final List<Call> mUnmodifiableChildren = Collections.unmodifiableList(mChildren); private List<String> mCannedTextResponses = null; private String mRemainingPostDialSequence; - private RemoteCallVideoProvider mCallVideoProvider; + private InCallService.VideoCall mVideoCall; private Details mDetails; private final List<Listener> mListeners = new ArrayList<>(); @@ -533,10 +531,10 @@ public final class Call { /** * Obtains an object that can be used to display video from this {@code Call}. * - * @return An {@code ICallVideoProvider}. + * @return An {@code Call.VideoCall}. */ - public RemoteCallVideoProvider getCallVideoProvider() { - return mCallVideoProvider; + public InCallService.VideoCall getVideoCall() { + return mVideoCall; } /** @@ -609,14 +607,9 @@ public final class Call { Collections.unmodifiableList(parcelableCall.getCannedSmsResponses()); } - boolean callVideoProviderChanged = false; - try { - callVideoProviderChanged = - !Objects.equals(mCallVideoProvider, parcelableCall.getCallVideoProvider()); - if (callVideoProviderChanged) { - mCallVideoProvider = parcelableCall.getCallVideoProvider(); - } - } catch (RemoteException e) { + boolean videoCallChanged = !Objects.equals(mVideoCall, parcelableCall.getVideoCall()); + if (videoCallChanged) { + mVideoCall = parcelableCall.getVideoCall(); } int state = stateFromParcelableCallState(parcelableCall.getState()); @@ -649,8 +642,8 @@ public final class Call { if (cannedTextResponsesChanged) { fireCannedTextResponsesLoaded(mCannedTextResponses); } - if (callVideoProviderChanged) { - fireCallVideoProviderChanged(mCallVideoProvider); + if (videoCallChanged) { + fireVideoCallChanged(mVideoCall); } // If we have transitioned to DISCONNECTED, that means we need to notify clients and @@ -715,10 +708,10 @@ public final class Call { } } - private void fireCallVideoProviderChanged(RemoteCallVideoProvider callVideoProvider) { + private void fireVideoCallChanged(InCallService.VideoCall videoCall) { Listener[] listeners = mListeners.toArray(new Listener[mListeners.size()]); for (int i = 0; i < listeners.length; i++) { - listeners[i].onCallVideoProviderChanged(this, callVideoProvider); + listeners[i].onVideoCallChanged(this, videoCall); } } @@ -773,4 +766,4 @@ public final class Call { return STATE_NEW; } } -} +}
\ No newline at end of file diff --git a/telecomm/java/android/telecomm/CallVideoClient.java b/telecomm/java/android/telecomm/CallVideoClient.java deleted file mode 100644 index 00473ff..0000000 --- a/telecomm/java/android/telecomm/CallVideoClient.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright (C) 2014 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 android.telecomm; - -import android.os.Handler; -import android.os.IBinder; -import android.os.Looper; -import android.os.Message; - -import com.android.internal.os.SomeArgs; -import com.android.internal.telecomm.ICallVideoClient; - -/** - * Base implementation of a CallVideoClient which communicates changes to video properties of a call - * from the framework to the current InCall-UI. - */ -public abstract class CallVideoClient { - - /** - * Video is not being received (no protocol pause was issued). - */ - public static final int SESSION_EVENT_RX_PAUSE = 1; - - /** - * Video reception has resumed after a SESSION_EVENT_RX_PAUSE. - */ - public static final int SESSION_EVENT_RX_RESUME = 2; - - /** - * Video transmission has begun. This occurs after a negotiated start of video transmission - * when the underlying protocol has actually begun transmitting video to the remote party. - */ - public static final int SESSION_EVENT_TX_START = 3; - - /** - * Video transmission has stopped. This occur after a negotiated stop of video transmission when - * the underlying protocol has actually stopped transmitting video to the remote party. - */ - public static final int SESSION_EVENT_TX_STOP = 4; - - /** - * Session modify request was successful. - */ - public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; - - /** - * Session modify request failed. - */ - public static final int SESSION_MODIFY_REQUEST_FAIL = 2; - - /** - * Session modify request ignored due to invalid parameters. - */ - public static final int SESSION_MODIFY_REQUEST_INVALID = 3; - - private static final int MSG_RECEIVE_SESSION_MODIFY_REQUEST = 1; - private static final int MSG_RECEIVE_SESSION_MODIFY_RESPONSE = 2; - private static final int MSG_HANDLE_CALL_SESSION_EVENT = 3; - private static final int MSG_UPDATE_PEER_DIMENSIONS = 4; - private static final int MSG_UPDATE_CALL_DATA_USAGE = 5; - private static final int MSG_HANDLE_CAMERA_CAPABILITIES_CHANGE = 6; - - /** Default Handler used to consolidate binder method calls onto a single thread. */ - private final Handler mHandler = new Handler(Looper.getMainLooper()) { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_RECEIVE_SESSION_MODIFY_REQUEST: - onReceiveSessionModifyRequest((VideoCallProfile) msg.obj); - break; - case MSG_RECEIVE_SESSION_MODIFY_RESPONSE: { - SomeArgs args = (SomeArgs) msg.obj; - try { - int status = (int) args.arg1; - VideoCallProfile requestProfile = (VideoCallProfile) args.arg2; - VideoCallProfile responseProfile = (VideoCallProfile) args.arg3; - - onReceiveSessionModifyResponse(status, requestProfile, - responseProfile); - } finally { - args.recycle(); - } - break; - } - case MSG_HANDLE_CALL_SESSION_EVENT: - onHandleCallSessionEvent((int) msg.obj); - break; - case MSG_UPDATE_PEER_DIMENSIONS: { - SomeArgs args = (SomeArgs) msg.obj; - try { - int width = (int) args.arg1; - int height = (int) args.arg2; - onUpdatePeerDimensions(width, height); - } finally { - args.recycle(); - } - break; - } - case MSG_UPDATE_CALL_DATA_USAGE: - onUpdateCallDataUsage(msg.arg1); - break; - case MSG_HANDLE_CAMERA_CAPABILITIES_CHANGE: - onHandleCameraCapabilitiesChange((CallCameraCapabilities) msg.obj); - break; - default: - break; - } - } - }; - - /** - * Default ICallVideoClient implementation. - */ - private final class CallVideoClientBinder extends ICallVideoClient.Stub { - @Override - public void receiveSessionModifyRequest(VideoCallProfile videoCallProfile) { - mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_REQUEST, - videoCallProfile).sendToTarget(); - } - - @Override - public void receiveSessionModifyResponse(int status, - VideoCallProfile requestProfile, VideoCallProfile responseProfile) { - SomeArgs args = SomeArgs.obtain(); - args.arg1 = status; - args.arg2 = requestProfile; - args.arg3 = responseProfile; - mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_RESPONSE, args).sendToTarget(); - } - - @Override - public void handleCallSessionEvent(int event) { - mHandler.obtainMessage(MSG_HANDLE_CALL_SESSION_EVENT, event).sendToTarget(); - } - - @Override - public void updatePeerDimensions(int width, int height) { - SomeArgs args = SomeArgs.obtain(); - args.arg1 = width; - args.arg2 = height; - mHandler.obtainMessage(MSG_UPDATE_PEER_DIMENSIONS, args).sendToTarget(); - } - - @Override - public void updateCallDataUsage(int dataUsage) { - mHandler.obtainMessage(MSG_UPDATE_CALL_DATA_USAGE, dataUsage).sendToTarget(); - } - - @Override - public void handleCameraCapabilitiesChange(CallCameraCapabilities cameraCapabilities) { - mHandler.obtainMessage(MSG_HANDLE_CAMERA_CAPABILITIES_CHANGE, - cameraCapabilities).sendToTarget(); - } - } - - private final CallVideoClientBinder mBinder; - - public CallVideoClient() { - mBinder = new CallVideoClientBinder(); - } - - /** - * Returns binder object which can be used across IPC methods. - * @hide - */ - public final IBinder getBinder() { - return mBinder; - } - - /** - * Called when a session modification request is received from the remote device. - * The remote request is sent via {@link CallVideoProvider#onSendSessionModifyRequest}. - * The InCall UI is responsible for potentially prompting the user whether they wish to accept - * the new call profile (e.g. prompt user if they wish to accept an upgrade from an audio to a - * video call) and should call {@link CallVideoProvider#onSendSessionModifyResponse} to indicate - * the video settings the user has agreed to. - * - * @param videoCallProfile The requested video call profile. - */ - public abstract void onReceiveSessionModifyRequest(VideoCallProfile videoCallProfile); - - /** - * Called when a response to a session modification request is received from the remote device. - * The remote InCall UI sends the response using - * {@link CallVideoProvider#onSendSessionModifyResponse}. - * - * @param status Status of the session modify request. Valid values are - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_SUCCESS}, - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_FAIL}, - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_INVALID} - * @param requestProfile The original request which was sent to the remote device. - * @param responseProfile The actual profile changes made by the remote device. - */ - public abstract void onReceiveSessionModifyResponse(int status, - VideoCallProfile requestProfile, VideoCallProfile responseProfile); - - /** - * Handles events related to the current session which the client may wish to handle. These - * are separate from requested changes to the session due to the underlying protocol or - * connection. - * Valid values are: {@link CallVideoClient#SESSION_EVENT_RX_PAUSE}, - * {@link CallVideoClient#SESSION_EVENT_RX_RESUME}, - * {@link CallVideoClient#SESSION_EVENT_TX_START}, {@link CallVideoClient#SESSION_EVENT_TX_STOP} - * - * @param event The event. - */ - public abstract void onHandleCallSessionEvent(int event); - - /** - * Handles a change to the video dimensions from the remote caller (peer). This could happen - * if, for example, the peer changes orientation of their device. - * - * @param width The updated peer video width. - * @param height The updated peer video height. - */ - public abstract void onUpdatePeerDimensions(int width, int height); - - /** - * Handles an update to the total data used for the current session. - * - * @param dataUsage The updated data usage. - */ - public abstract void onUpdateCallDataUsage(int dataUsage); - - /** - * Handles a change in camera capabilities. - * - * @param callCameraCapabilities The changed camera capabilities. - */ - public abstract void onHandleCameraCapabilitiesChange( - CallCameraCapabilities callCameraCapabilities); -} - diff --git a/telecomm/java/android/telecomm/Connection.java b/telecomm/java/android/telecomm/Connection.java index 02af68e..98b8249 100644 --- a/telecomm/java/android/telecomm/Connection.java +++ b/telecomm/java/android/telecomm/Connection.java @@ -19,10 +19,8 @@ package android.telecomm; import android.app.PendingIntent; import android.net.Uri; import android.os.Bundle; -import android.telecomm.CallVideoProvider; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -46,7 +44,7 @@ public abstract class Connection { public void onDestroyed(Connection c) {} public void onCallCapabilitiesChanged(Connection c, int callCapabilities) {} public void onParentConnectionChanged(Connection c, Connection parent) {} - public void onCallVideoProviderChanged(Connection c, CallVideoProvider callVideoProvider) {} + public void onVideoCallProviderChanged(Connection c, VideoCallProvider videoCallProvider) {} public void onAudioModeIsVoipChanged(Connection c, boolean isVoip) {} public void onStatusHintsChanged(Connection c, StatusHints statusHints) {} public void onStartActivityFromInCall(Connection c, PendingIntent intent) {} @@ -75,7 +73,7 @@ public abstract class Connection { private boolean mRequestingRingback = false; private int mCallCapabilities; private Connection mParentConnection; - private CallVideoProvider mCallVideoProvider; + private VideoCallProvider mVideoCallProvider; private boolean mAudioModeIsVoip; private StatusHints mStatusHints; private int mVideoState; @@ -349,18 +347,18 @@ public abstract class Connection { } /** - * Sets the call video provider. - * @param callVideoProvider The call video provider. + * Sets the video call provider. + * @param videoCallProvider The video call provider. */ - public final void setCallVideoProvider(CallVideoProvider callVideoProvider) { - mCallVideoProvider = callVideoProvider; + public final void setVideoCallProvider(VideoCallProvider videoCallProvider) { + mVideoCallProvider = videoCallProvider; for (Listener l : mListeners) { - l.onCallVideoProviderChanged(this, callVideoProvider); + l.onVideoCallProviderChanged(this, videoCallProvider); } } - public final CallVideoProvider getCallVideoProvider() { - return mCallVideoProvider; + public final VideoCallProvider getVideoCallProvider() { + return mVideoCallProvider; } /** diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java index d5b39cf..19e4489 100644 --- a/telecomm/java/android/telecomm/ConnectionService.java +++ b/telecomm/java/android/telecomm/ConnectionService.java @@ -390,9 +390,9 @@ public abstract class ConnectionService extends Service { } @Override - public void onCallVideoProviderChanged(Connection c, CallVideoProvider callVideoProvider) { + public void onVideoCallProviderChanged(Connection c, VideoCallProvider videoCallProvider) { String id = mIdByConnection.get(c); - mAdapter.setCallVideoProvider(id, callVideoProvider); + mAdapter.setVideoCallProvider(id, videoCallProvider); } @Override @@ -443,8 +443,8 @@ public abstract class ConnectionService extends Service { connection.getHandlePresentation(), connection.getCallerDisplayName(), connection.getCallerDisplayNamePresentation(), - connection.getCallVideoProvider() == null ? - null : connection.getCallVideoProvider().getInterface(), + connection.getVideoCallProvider() == null ? + null : connection.getVideoCallProvider().getInterface(), connection.getVideoState())); } diff --git a/telecomm/java/android/telecomm/ConnectionServiceAdapter.java b/telecomm/java/android/telecomm/ConnectionServiceAdapter.java index 66e9925..8f91e72 100644 --- a/telecomm/java/android/telecomm/ConnectionServiceAdapter.java +++ b/telecomm/java/android/telecomm/ConnectionServiceAdapter.java @@ -25,7 +25,7 @@ import android.os.RemoteException; import com.android.internal.telecomm.IConnectionService; import com.android.internal.telecomm.IConnectionServiceAdapter; -import com.android.internal.telecomm.ICallVideoProvider; +import com.android.internal.telecomm.IVideoCallProvider; import com.android.internal.telecomm.RemoteServiceCallback; import java.util.ArrayList; @@ -273,14 +273,14 @@ final class ConnectionServiceAdapter implements DeathRecipient { * 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. + * @param videoCallProvider The call video provider instance to set on the call. */ - void setCallVideoProvider(String callId, CallVideoProvider callVideoProvider) { + void setVideoCallProvider(String callId, VideoCallProvider videoCallProvider) { for (IConnectionServiceAdapter adapter : mAdapters) { try { - adapter.setCallVideoProvider( + adapter.setVideoCallProvider( callId, - callVideoProvider == null ? null : callVideoProvider.getInterface()); + videoCallProvider == null ? null : videoCallProvider.getInterface()); } catch (RemoteException e) { } } diff --git a/telecomm/java/android/telecomm/InCallService.java b/telecomm/java/android/telecomm/InCallService.java index 9699e2a..38de08e 100644 --- a/telecomm/java/android/telecomm/InCallService.java +++ b/telecomm/java/android/telecomm/InCallService.java @@ -23,11 +23,14 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.view.Surface; import com.android.internal.os.SomeArgs; import com.android.internal.telecomm.IInCallAdapter; import com.android.internal.telecomm.IInCallService; +import java.lang.String; + /** * This service is implemented by any app that wishes to provide the user-interface for managing * phone calls. Telecomm binds to this service while there exists a live (active or incoming) call, @@ -196,4 +199,209 @@ public abstract class InCallService extends Service { */ public void onPhoneDestroyed(Phone phone) { } + + /** + * Class to invoke functionality related to video calls. + */ + public static abstract class VideoCall { + + /** + * Video is not being received (no protocol pause was issued). + */ + public static final int SESSION_EVENT_RX_PAUSE = 1; + + /** + * Video reception has resumed after a SESSION_EVENT_RX_PAUSE. + */ + public static final int SESSION_EVENT_RX_RESUME = 2; + + /** + * Video transmission has begun. This occurs after a negotiated start of video transmission + * when the underlying protocol has actually begun transmitting video to the remote party. + */ + public static final int SESSION_EVENT_TX_START = 3; + + /** + * Video transmission has stopped. This occur after a negotiated stop of video transmission when + * the underlying protocol has actually stopped transmitting video to the remote party. + */ + public static final int SESSION_EVENT_TX_STOP = 4; + + /** + * Session modify request was successful. + */ + public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; + + /** + * Session modify request failed. + */ + public static final int SESSION_MODIFY_REQUEST_FAIL = 2; + + /** + * Session modify request ignored due to invalid parameters. + */ + public static final int SESSION_MODIFY_REQUEST_INVALID = 3; + + /** + * Sets a listener to invoke callback methods in the InCallUI after performing video + * telephony actions. + * + * @param videoCallListener The call video client. + */ + public abstract void setVideoCallListener(VideoCall.Listener videoCallListener); + + /** + * Sets the camera to be used for video recording in a video call. + * + * @param cameraId The id of the camera. + */ + public abstract void setCamera(String cameraId); + + /** + * Sets the surface to be used for displaying a preview of what the user's camera is + * currently capturing. When video transmission is enabled, this is the video signal which + * is sent to the remote device. + * + * @param surface The surface. + */ + public abstract void setPreviewSurface(Surface surface); + + /** + * Sets the surface to be used for displaying the video received from the remote device. + * + * @param surface The surface. + */ + public abstract void setDisplaySurface(Surface surface); + + /** + * Sets the device orientation, in degrees. Assumes that a standard portrait orientation of + * the device is 0 degrees. + * + * @param rotation The device orientation, in degrees. + */ + public abstract void setDeviceOrientation(int rotation); + + /** + * Sets camera zoom ratio. + * + * @param value The camera zoom ratio. + */ + public abstract void setZoom(float value); + + /** + * Issues a request to modify the properties of the current session. The request is sent to + * the remote device where it it handled by + * {@link VideoCall.Listener#onSessionModifyRequestReceived}. + * Some examples of session modification requests: upgrade call from audio to video, + * downgrade call from video to audio, pause video. + * + * @param requestProfile The requested call video properties. + */ + public abstract void sendSessionModifyRequest(VideoCallProfile requestProfile); + + /** + * Provides a response to a request to change the current call session video + * properties. + * This is in response to a request the InCall UI has received via + * {@link VideoCall.Listener#onSessionModifyRequestReceived}. + * The response is handled on the remove device by + * {@link VideoCall.Listener#onSessionModifyResponseReceived}. + * + * @param responseProfile The response call video properties. + */ + public abstract void sendSessionModifyResponse(VideoCallProfile responseProfile); + + /** + * Issues a request to the video provider to retrieve the camera capabilities. + * Camera capabilities are reported back to the caller via + * {@link VideoCall.Listener#onCameraCapabilitiesChanged(CallCameraCapabilities)}. + */ + public abstract void requestCameraCapabilities(); + + /** + * Issues a request to the video telephony framework to retrieve the cumulative data usage for + * the current call. Data usage is reported back to the caller via + * {@link VideoCall.Listener#onCallDataUsageChanged}. + */ + public abstract void requestCallDataUsage(); + + /** + * Provides the video telephony framework with the URI of an image to be displayed to remote + * devices when the video signal is paused. + * + * @param uri URI of image to display. + */ + public abstract void setPauseImage(String uri); + + /** + * Listener class which invokes callbacks after video call actions occur. + */ + public static abstract class Listener { + /** + * Called when a session modification request is received from the remote device. + * The remote request is sent via {@link VideoCallProvider#onSendSessionModifyRequest}. + * The InCall UI is responsible for potentially prompting the user whether they wish to + * accept the new call profile (e.g. prompt user if they wish to accept an upgrade from + * an audio to a video call) and should call + * {@link VideoCallProvider#onSendSessionModifyResponse} to indicate the video settings + * the user has agreed to. + * + * @param videoCallProfile The requested video call profile. + */ + public abstract void onSessionModifyRequestReceived(VideoCallProfile videoCallProfile); + + /** + * Called when a response to a session modification request is received from the remote + * device. The remote InCall UI sends the response using + * {@link VideoCallProvider#onSendSessionModifyResponse}. + * + * @param status Status of the session modify request. Valid values are + * {@link VideoCall#SESSION_MODIFY_REQUEST_SUCCESS}, + * {@link VideoCall#SESSION_MODIFY_REQUEST_FAIL}, + * {@link VideoCall#SESSION_MODIFY_REQUEST_INVALID} + * @param requestedProfile The original request which was sent to the remote device. + * @param responseProfile The actual profile changes made by the remote device. + */ + public abstract void onSessionModifyResponseReceived(int status, + VideoCallProfile requestedProfile, VideoCallProfile responseProfile); + + /** + * Handles events related to the current session which the client may wish to handle. + * These are separate from requested changes to the session due to the underlying + * protocol or connection. + * + * Valid values are: {@link VideoCall#SESSION_EVENT_RX_PAUSE}, + * {@link VideoCall#SESSION_EVENT_RX_RESUME}, + * {@link VideoCall#SESSION_EVENT_TX_START}, + * {@link VideoCall#SESSION_EVENT_TX_STOP} + * + * @param event The event. + */ + public abstract void onCallSessionEvent(int event); + + /** + * Handles a change to the video dimensions from the remote caller (peer). This could + * happen if, for example, the peer changes orientation of their device. + * + * @param width The updated peer video width. + * @param height The updated peer video height. + */ + public abstract void onPeerDimensionsChanged(int width, int height); + + /** + * Handles an update to the total data used for the current session. + * + * @param dataUsage The updated data usage. + */ + public abstract void onCallDataUsageChanged(int dataUsage); + + /** + * Handles a change in camera capabilities. + * + * @param callCameraCapabilities The changed camera capabilities. + */ + public abstract void onCameraCapabilitiesChanged( + CallCameraCapabilities callCameraCapabilities); + } + } } diff --git a/telecomm/java/android/telecomm/ParcelableCall.java b/telecomm/java/android/telecomm/ParcelableCall.java index 27a5c1d..e60761a 100644 --- a/telecomm/java/android/telecomm/ParcelableCall.java +++ b/telecomm/java/android/telecomm/ParcelableCall.java @@ -22,7 +22,7 @@ import android.os.Parcelable; import android.os.RemoteException; import android.telephony.DisconnectCause; -import com.android.internal.telecomm.ICallVideoProvider; +import com.android.internal.telecomm.IVideoCallProvider; import java.util.ArrayList; import java.util.List; @@ -45,8 +45,8 @@ public final class ParcelableCall implements Parcelable { private final int mCallerDisplayNamePresentation; private final GatewayInfo mGatewayInfo; private final PhoneAccountHandle mAccountHandle; - private final ICallVideoProvider mCallVideoProvider; - private RemoteCallVideoProvider mRemoteCallVideoProvider; + private final IVideoCallProvider mVideoCallProvider; + private InCallService.VideoCall mVideoCall; private final String mParentCallId; private final List<String> mChildCallIds; private final StatusHints mStatusHints; @@ -67,7 +67,7 @@ public final class ParcelableCall implements Parcelable { int callerDisplayNamePresentation, GatewayInfo gatewayInfo, PhoneAccountHandle accountHandle, - ICallVideoProvider callVideoProvider, + IVideoCallProvider videoCallProvider, String parentCallId, List<String> childCallIds, StatusHints statusHints, @@ -85,7 +85,7 @@ public final class ParcelableCall implements Parcelable { mCallerDisplayNamePresentation = callerDisplayNamePresentation; mGatewayInfo = gatewayInfo; mAccountHandle = accountHandle; - mCallVideoProvider = callVideoProvider; + mVideoCallProvider = videoCallProvider; mParentCallId = parentCallId; mChildCallIds = childCallIds; mStatusHints = statusHints; @@ -166,19 +166,19 @@ public final class ParcelableCall implements Parcelable { } /** - * Returns an object for remotely communicating through the call video provider's binder. - * @return The call video provider. + * Returns an object for remotely communicating through the video call provider's binder. + * @return The video call. */ - public RemoteCallVideoProvider getCallVideoProvider() throws RemoteException { - if (mRemoteCallVideoProvider == null && mCallVideoProvider != null) { + public InCallService.VideoCall getVideoCall() { + if (mVideoCall == null && mVideoCallProvider != null) { try { - mRemoteCallVideoProvider = new RemoteCallVideoProvider(mCallVideoProvider); + mVideoCall = new VideoCallImpl(mVideoCallProvider); } catch (RemoteException ignored) { // Ignore RemoteException. } } - return mRemoteCallVideoProvider; + return mVideoCall; } /** @@ -235,8 +235,8 @@ public final class ParcelableCall implements Parcelable { int callerDisplayNamePresentation = source.readInt(); GatewayInfo gatewayInfo = source.readParcelable(classLoader); PhoneAccountHandle accountHandle = source.readParcelable(classLoader); - ICallVideoProvider callVideoProvider = - ICallVideoProvider.Stub.asInterface(source.readStrongBinder()); + IVideoCallProvider videoCallProvider = + IVideoCallProvider.Stub.asInterface(source.readStrongBinder()); String parentCallId = source.readString(); List<String> childCallIds = new ArrayList<>(); source.readList(childCallIds, classLoader); @@ -245,7 +245,7 @@ public final class ParcelableCall implements Parcelable { return new ParcelableCall(id, state, disconnectCauseCode, disconnectCauseMsg, cannedSmsResponses, capabilities, connectTimeMillis, handle, handlePresentation, callerDisplayName, callerDisplayNamePresentation, gatewayInfo, - accountHandle, callVideoProvider, parentCallId, childCallIds, statusHints, + accountHandle, videoCallProvider, parentCallId, childCallIds, statusHints, videoState); } @@ -278,7 +278,7 @@ public final class ParcelableCall implements Parcelable { destination.writeParcelable(mGatewayInfo, 0); destination.writeParcelable(mAccountHandle, 0); destination.writeStrongBinder( - mCallVideoProvider != null ? mCallVideoProvider.asBinder() : null); + mVideoCallProvider != null ? mVideoCallProvider.asBinder() : null); destination.writeString(mParentCallId); destination.writeList(mChildCallIds); destination.writeParcelable(mStatusHints, 0); diff --git a/telecomm/java/android/telecomm/ParcelableConnection.java b/telecomm/java/android/telecomm/ParcelableConnection.java index f730fef..e0bfab6 100644 --- a/telecomm/java/android/telecomm/ParcelableConnection.java +++ b/telecomm/java/android/telecomm/ParcelableConnection.java @@ -20,7 +20,7 @@ import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; -import com.android.internal.telecomm.ICallVideoProvider; +import com.android.internal.telecomm.IVideoCallProvider; /** * Information about a connection that is used between Telecomm and the ConnectionService. @@ -36,7 +36,7 @@ public final class ParcelableConnection implements Parcelable { private int mHandlePresentation; private String mCallerDisplayName; private int mCallerDisplayNamePresentation; - private ICallVideoProvider mCallVideoProvider; + private IVideoCallProvider mVideoCallProvider; private int mVideoState; /** @hide */ @@ -48,7 +48,7 @@ public final class ParcelableConnection implements Parcelable { int handlePresentation, String callerDisplayName, int callerDisplayNamePresentation, - ICallVideoProvider callVideoProvider, + IVideoCallProvider videoCallProvider, int videoState) { mPhoneAccount = phoneAccount; mState = state; @@ -57,7 +57,7 @@ public final class ParcelableConnection implements Parcelable { mHandlePresentation = handlePresentation; mCallerDisplayName = callerDisplayName; mCallerDisplayNamePresentation = callerDisplayNamePresentation; - mCallVideoProvider = callVideoProvider; + mVideoCallProvider = videoCallProvider; mVideoState = videoState; } @@ -90,8 +90,8 @@ public final class ParcelableConnection implements Parcelable { return mCallerDisplayNamePresentation; } - public ICallVideoProvider getCallVideoProvider() { - return mCallVideoProvider; + public IVideoCallProvider getVideoCallProvider() { + return mVideoCallProvider; } public int getVideoState() { @@ -111,8 +111,8 @@ public final class ParcelableConnection implements Parcelable { int handlePresentation = source.readInt(); String callerDisplayName = source.readString(); int callerDisplayNamePresentation = source.readInt(); - ICallVideoProvider callVideoProvider = - ICallVideoProvider.Stub.asInterface(source.readStrongBinder()); + IVideoCallProvider videoCallProvider = + IVideoCallProvider.Stub.asInterface(source.readStrongBinder()); int videoState = source.readInt(); return new ParcelableConnection( @@ -123,7 +123,7 @@ public final class ParcelableConnection implements Parcelable { handlePresentation, callerDisplayName, callerDisplayNamePresentation, - callVideoProvider, + videoCallProvider, videoState); } @@ -150,7 +150,7 @@ public final class ParcelableConnection implements Parcelable { destination.writeString(mCallerDisplayName); destination.writeInt(mCallerDisplayNamePresentation); destination.writeStrongBinder( - mCallVideoProvider != null ? mCallVideoProvider.asBinder() : null); + mVideoCallProvider != null ? mVideoCallProvider.asBinder() : null); destination.writeInt(mVideoState); } } diff --git a/telecomm/java/android/telecomm/RemoteCallVideoClient.java b/telecomm/java/android/telecomm/RemoteCallVideoClient.java deleted file mode 100644 index 08d1391..0000000 --- a/telecomm/java/android/telecomm/RemoteCallVideoClient.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2014 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 android.telecomm; - -import android.os.IBinder; -import android.os.RemoteException; -import android.telecomm.CallCameraCapabilities; -import android.telecomm.VideoCallProfile; - -import com.android.internal.telecomm.ICallVideoClient; - -/** - * Remote class to invoke callbacks in InCallUI related to supporting video in calls. - */ -public class RemoteCallVideoClient { - private final ICallVideoClient mCallVideoClient; - - private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { - @Override - public void binderDied() { - mCallVideoClient.asBinder().unlinkToDeath(this, 0); - } - }; - - /** {@hide} */ - RemoteCallVideoClient(ICallVideoClient callVideoProvider) throws RemoteException { - mCallVideoClient = callVideoProvider; - mCallVideoClient.asBinder().linkToDeath(mDeathRecipient, 0); - } - - /** - * Called when a session modification request is received from the remote device. - * The remote request is sent via {@link CallVideoProvider#onSendSessionModifyRequest}. - * The InCall UI is responsible for potentially prompting the user whether they wish to accept - * the new call profile (e.g. prompt user if they wish to accept an upgrade from an audio to a - * video call) and should call {@link CallVideoProvider#onSendSessionModifyResponse} to indicate - * the video settings the user has agreed to. - * - * @param videoCallProfile The requested video call profile. - */ - public void receiveSessionModifyRequest(VideoCallProfile videoCallProfile) { - try { - mCallVideoClient.receiveSessionModifyRequest(videoCallProfile); - } catch (RemoteException e) { - } - } - - /** - * Called when a response to a session modification request is received from the remote device. - * The remote InCall UI sends the response using - * {@link CallVideoProvider#onSendSessionModifyResponse}. - * - * @param status Status of the session modify request. Valid values are - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_SUCCESS}, - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_FAIL}, - * {@link CallVideoClient#SESSION_MODIFY_REQUEST_INVALID} - * @param requestedProfile The original request which was sent to the remote device. - * @param responseProfile The actual profile changes made by the remote device. - */ - public void receiveSessionModifyResponse( - int status, VideoCallProfile requestedProfile, VideoCallProfile responseProfile) { - try { - mCallVideoClient.receiveSessionModifyResponse( - status, requestedProfile, responseProfile); - } catch (RemoteException e) { - } - } - - /** - * Handles events related to the current session which the client may wish to handle. These - * are separate from requested changes to the session due to the underlying protocol or - * connection. - * Valid values are: {@link CallVideoClient#SESSION_EVENT_RX_PAUSE}, - * {@link CallVideoClient#SESSION_EVENT_RX_RESUME}, - * {@link CallVideoClient#SESSION_EVENT_TX_START}, {@link CallVideoClient#SESSION_EVENT_TX_STOP} - * - * @param event The event. - */ - public void handleCallSessionEvent(int event) { - try { - mCallVideoClient.handleCallSessionEvent(event); - } catch (RemoteException e) { - } - } - - /** - * Handles a change to the video dimensions from the remote caller (peer). This could happen - * if, for example, the peer changes orientation of their device. - * - * @param width The updated peer video width. - * @param height The updated peer video height. - */ - public void updatePeerDimensions(int width, int height) { - try { - mCallVideoClient.updatePeerDimensions(width, height); - } catch (RemoteException e) { - } - } - - /** - * Handles an update to the total data used for the current session. - * - * @param dataUsage The updated data usage. - */ - public void updateCallDataUsage(int dataUsage) { - try { - mCallVideoClient.updateCallDataUsage(dataUsage); - } catch (RemoteException e) { - } - } - - /** - * Handles a change in camera capabilities. - * - * @param callCameraCapabilities The changed camera capabilities. - */ - public void handleCameraCapabilitiesChange(CallCameraCapabilities callCameraCapabilities) { - try { - mCallVideoClient.handleCameraCapabilitiesChange(callCameraCapabilities); - } catch (RemoteException e) { - } - } -}
\ No newline at end of file diff --git a/telecomm/java/android/telecomm/RemoteCallVideoProvider.java b/telecomm/java/android/telecomm/RemoteCallVideoProvider.java deleted file mode 100644 index b8b8b9d..0000000 --- a/telecomm/java/android/telecomm/RemoteCallVideoProvider.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) 2014 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 android.telecomm; - -import android.os.IBinder; -import android.os.RemoteException; -import android.view.Surface; - -import com.android.internal.telecomm.ICallVideoProvider; - -/** - * Remote class for InCallUI to invoke functionality provided for video in calls. - */ -public class RemoteCallVideoProvider { - private final ICallVideoProvider mCallVideoProvider; - - private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { - @Override - public void binderDied() { - mCallVideoProvider.asBinder().unlinkToDeath(this, 0); - } - }; - - /** {@hide} */ - RemoteCallVideoProvider(ICallVideoProvider callVideoProvider) throws RemoteException { - mCallVideoProvider = callVideoProvider; - mCallVideoProvider.asBinder().linkToDeath(mDeathRecipient, 0); - } - - /** - * Sets a remote interface for invoking callback methods in the InCallUI after performing - * telephony actions. - * - * @param callVideoClient The call video client. - */ - public void setCallVideoClient(CallVideoClient callVideoClient) { - try { - mCallVideoProvider.setCallVideoClient(callVideoClient.getBinder()); - } catch (RemoteException e) { - } - } - - /** - * Sets the camera to be used for video recording in a video call. - * - * @param cameraId The id of the camera. - */ - public void setCamera(String cameraId) { - try { - mCallVideoProvider.setCamera(cameraId); - } catch (RemoteException e) { - } - } - - /** - * Sets the surface to be used for displaying a preview of what the user's camera is - * currently capturing. When video transmission is enabled, this is the video signal which is - * sent to the remote device. - * - * @param surface The surface. - */ - public void setPreviewSurface(Surface surface) { - try { - mCallVideoProvider.setPreviewSurface(surface); - } catch (RemoteException e) { - } - } - - /** - * Sets the surface to be used for displaying the video received from the remote device. - * - * @param surface The surface. - */ - public void setDisplaySurface(Surface surface) { - try { - mCallVideoProvider.setDisplaySurface(surface); - } catch (RemoteException e) { - } - } - - /** - * Sets the device orientation, in degrees. Assumes that a standard portrait orientation of the - * device is 0 degrees. - * - * @param rotation The device orientation, in degrees. - */ - public void setDeviceOrientation(int rotation) { - try { - mCallVideoProvider.setDeviceOrientation(rotation); - } catch (RemoteException e) { - } - } - - /** - * Sets camera zoom ratio. - * - * @param value The camera zoom ratio. - */ - public void setZoom(float value) { - try { - mCallVideoProvider.setZoom(value); - } catch (RemoteException e) { - } - } - - /** - * Issues a request to modify the properties of the current session. The request is sent to - * the remote device where it it handled by - * {@link CallVideoClient#onReceiveSessionModifyRequest}. - * Some examples of session modification requests: upgrade call from audio to video, downgrade - * call from video to audio, pause video. - * - * @param requestProfile The requested call video properties. - */ - public void sendSessionModifyRequest(VideoCallProfile requestProfile) { - try { - mCallVideoProvider.sendSessionModifyRequest(requestProfile); - } catch (RemoteException e) { - } - } - - /** - * Provides a response to a request to change the current call session video - * properties. - * This is in response to a request the InCall UI has received via - * {@link CallVideoClient#onReceiveSessionModifyRequest}. - * The response is handled on the remove device by - * {@link CallVideoClient#onReceiveSessionModifyResponse}. - * - * @param responseProfile The response call video properties. - */ - public void sendSessionModifyResponse(VideoCallProfile responseProfile) { - try { - mCallVideoProvider.sendSessionModifyResponse(responseProfile); - } catch (RemoteException e) { - } - } - - /** - * Issues a request to the video provider to retrieve the camera capabilities. - * Camera capabilities are reported back to the caller via - * {@link CallVideoClient#onHandleCameraCapabilitiesChange(CallCameraCapabilities)}. - */ - public void requestCameraCapabilities() { - try { - mCallVideoProvider.requestCameraCapabilities(); - } catch (RemoteException e) { - } - } - - /** - * Issues a request to the video telephony framework to retrieve the cumulative data usage for - * the current call. Data usage is reported back to the caller via - * {@link CallVideoClient#onUpdateCallDataUsage}. - */ - public void requestCallDataUsage() { - try { - mCallVideoProvider.requestCallDataUsage(); - } catch (RemoteException e) { - } - } - - /** - * Provides the video telephony framework with the URI of an image to be displayed to remote - * devices when the video signal is paused. - * - * @param uri URI of image to display. - */ - public void setPauseImage(String uri) { - try { - mCallVideoProvider.setPauseImage(uri); - } catch (RemoteException e) { - } - } -}
\ No newline at end of file diff --git a/telecomm/java/android/telecomm/RemoteConnectionService.java b/telecomm/java/android/telecomm/RemoteConnectionService.java index 10569ab..c07ff43 100644 --- a/telecomm/java/android/telecomm/RemoteConnectionService.java +++ b/telecomm/java/android/telecomm/RemoteConnectionService.java @@ -27,9 +27,9 @@ import android.telephony.DisconnectCause; import android.text.TextUtils; import com.android.internal.os.SomeArgs; -import com.android.internal.telecomm.ICallVideoProvider; import com.android.internal.telecomm.IConnectionService; import com.android.internal.telecomm.IConnectionServiceAdapter; +import com.android.internal.telecomm.IVideoCallProvider; import com.android.internal.telecomm.RemoteServiceCallback; import java.util.LinkedList; @@ -360,8 +360,8 @@ final class RemoteConnectionService implements DeathRecipient { } @Override - public void setCallVideoProvider( - String connectionId, ICallVideoProvider callVideoProvider) { + public void setVideoCallProvider( + String connectionId, IVideoCallProvider videoCallProvider) { // not supported for remote connections. } diff --git a/telecomm/java/android/telecomm/VideoCallImpl.java b/telecomm/java/android/telecomm/VideoCallImpl.java new file mode 100644 index 0000000..3e538cb --- /dev/null +++ b/telecomm/java/android/telecomm/VideoCallImpl.java @@ -0,0 +1,245 @@ +/* + * Copyright (C) 2014 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 android.telecomm; + +import android.os.Handler; +import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.RemoteException; +import android.telecomm.InCallService.VideoCall; +import android.view.Surface; + +import com.android.internal.os.SomeArgs; +import com.android.internal.telecomm.IVideoCallCallback; +import com.android.internal.telecomm.IVideoCallProvider; + +/** + * Implementation of a Video Call, which allows InCallUi to communicate commands to the underlying + * {@link VideoCallProvider}, and direct callbacks from the {@link VideoCallProvider} to the + * appropriate {@link VideoCall.Listener}. + */ +public class VideoCallImpl extends VideoCall { + private static final int MSG_RECEIVE_SESSION_MODIFY_REQUEST = 1; + private static final int MSG_RECEIVE_SESSION_MODIFY_RESPONSE = 2; + private static final int MSG_HANDLE_CALL_SESSION_EVENT = 3; + private static final int MSG_CHANGE_PEER_DIMENSIONS = 4; + private static final int MSG_CHANGE_CALL_DATA_USAGE = 5; + private static final int MSG_CHANGE_CAMERA_CAPABILITIES = 6; + + private final IVideoCallProvider mVideoCallProvider; + private final VideoCallListenerBinder mBinder; + private VideoCall.Listener mVideoCallListener; + + private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { + @Override + public void binderDied() { + mVideoCallProvider.asBinder().unlinkToDeath(this, 0); + } + }; + + /** + * IVideoCallCallback stub implementation. + */ + private final class VideoCallListenerBinder extends IVideoCallCallback.Stub { + @Override + public void receiveSessionModifyRequest(VideoCallProfile videoCallProfile) { + mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_REQUEST, + videoCallProfile).sendToTarget(); + } + + @Override + public void receiveSessionModifyResponse(int status, VideoCallProfile requestProfile, + VideoCallProfile responseProfile) { + SomeArgs args = SomeArgs.obtain(); + args.arg1 = status; + args.arg2 = requestProfile; + args.arg3 = responseProfile; + mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_RESPONSE, args).sendToTarget(); + } + + @Override + public void handleCallSessionEvent(int event) { + mHandler.obtainMessage(MSG_HANDLE_CALL_SESSION_EVENT, event).sendToTarget(); + } + + @Override + public void changePeerDimensions(int width, int height) { + SomeArgs args = SomeArgs.obtain(); + args.arg1 = width; + args.arg2 = height; + mHandler.obtainMessage(MSG_CHANGE_PEER_DIMENSIONS, args).sendToTarget(); + } + + @Override + public void changeCallDataUsage(int dataUsage) { + mHandler.obtainMessage(MSG_CHANGE_CALL_DATA_USAGE, dataUsage).sendToTarget(); + } + + @Override + public void changeCameraCapabilities(CallCameraCapabilities cameraCapabilities) { + mHandler.obtainMessage(MSG_CHANGE_CAMERA_CAPABILITIES, + cameraCapabilities).sendToTarget(); + } + } + + /** Default handler used to consolidate binder method calls onto a single thread. */ + private final Handler mHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + if (mVideoCallListener == null) { + return; + } + + SomeArgs args; + switch (msg.what) { + case MSG_RECEIVE_SESSION_MODIFY_REQUEST: + mVideoCallListener.onSessionModifyRequestReceived((VideoCallProfile) msg.obj); + break; + case MSG_RECEIVE_SESSION_MODIFY_RESPONSE: + args = (SomeArgs) msg.obj; + try { + int status = (int) args.arg1; + VideoCallProfile requestProfile = (VideoCallProfile) args.arg2; + VideoCallProfile responseProfile = (VideoCallProfile) args.arg3; + + mVideoCallListener.onSessionModifyResponseReceived( + status, requestProfile, responseProfile); + } finally { + args.recycle(); + } + break; + case MSG_HANDLE_CALL_SESSION_EVENT: + mVideoCallListener.onCallSessionEvent((int) msg.obj); + break; + case MSG_CHANGE_PEER_DIMENSIONS: + args = (SomeArgs) msg.obj; + try { + int width = (int) args.arg1; + int height = (int) args.arg2; + mVideoCallListener.onPeerDimensionsChanged(width, height); + } finally { + args.recycle(); + } + break; + case MSG_CHANGE_CALL_DATA_USAGE: + mVideoCallListener.onCallDataUsageChanged(msg.arg1); + break; + case MSG_CHANGE_CAMERA_CAPABILITIES: + mVideoCallListener.onCameraCapabilitiesChanged( + (CallCameraCapabilities) msg.obj); + break; + default: + break; + } + } + }; + + /** {@hide} */ + VideoCallImpl(IVideoCallProvider videoCallProvider) throws RemoteException { + mVideoCallProvider = videoCallProvider; + mVideoCallProvider.asBinder().linkToDeath(mDeathRecipient, 0); + + mBinder = new VideoCallListenerBinder(); + mVideoCallProvider.setVideoCallListener(mBinder); + } + + /** {@inheritDoc} */ + public void setVideoCallListener(VideoCall.Listener videoCallListener) { + mVideoCallListener = videoCallListener; + } + + /** {@inheritDoc} */ + public void setCamera(String cameraId) { + try { + mVideoCallProvider.setCamera(cameraId); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void setPreviewSurface(Surface surface) { + try { + mVideoCallProvider.setPreviewSurface(surface); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void setDisplaySurface(Surface surface) { + try { + mVideoCallProvider.setDisplaySurface(surface); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void setDeviceOrientation(int rotation) { + try { + mVideoCallProvider.setDeviceOrientation(rotation); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void setZoom(float value) { + try { + mVideoCallProvider.setZoom(value); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void sendSessionModifyRequest(VideoCallProfile requestProfile) { + try { + mVideoCallProvider.sendSessionModifyRequest(requestProfile); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void sendSessionModifyResponse(VideoCallProfile responseProfile) { + try { + mVideoCallProvider.sendSessionModifyResponse(responseProfile); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void requestCameraCapabilities() { + try { + mVideoCallProvider.requestCameraCapabilities(); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void requestCallDataUsage() { + try { + mVideoCallProvider.requestCallDataUsage(); + } catch (RemoteException e) { + } + } + + /** {@inheritDoc} */ + public void setPauseImage(String uri) { + try { + mVideoCallProvider.setPauseImage(uri); + } catch (RemoteException e) { + } + } +}
\ No newline at end of file diff --git a/telecomm/java/android/telecomm/CallVideoProvider.java b/telecomm/java/android/telecomm/VideoCallProvider.java index 443a5b6..f3fec11 100644 --- a/telecomm/java/android/telecomm/CallVideoProvider.java +++ b/telecomm/java/android/telecomm/VideoCallProvider.java @@ -22,11 +22,11 @@ import android.os.Message; import android.os.RemoteException; import android.view.Surface; -import com.android.internal.telecomm.ICallVideoClient; -import com.android.internal.telecomm.ICallVideoProvider; +import com.android.internal.telecomm.IVideoCallCallback; +import com.android.internal.telecomm.IVideoCallProvider; -public abstract class CallVideoProvider { - private static final int MSG_SET_CALL_VIDEO_CLIENT = 1; +public abstract class VideoCallProvider { + private static final int MSG_SET_VIDEO_CALL_LISTENER = 1; private static final int MSG_SET_CAMERA = 2; private static final int MSG_SET_PREVIEW_SURFACE = 3; private static final int MSG_SET_DISPLAY_SURFACE = 4; @@ -38,23 +38,19 @@ public abstract class CallVideoProvider { private static final int MSG_REQUEST_CALL_DATA_USAGE = 10; private static final int MSG_SET_PAUSE_IMAGE = 11; + private final VideoCallProviderHandler mMessageHandler = new VideoCallProviderHandler(); + private final VideoCallProviderBinder mBinder; + private IVideoCallCallback mVideoCallListener; + /** * Default handler used to consolidate binder method calls onto a single thread. */ - private final class CallVideoProviderHandler extends Handler { + private final class VideoCallProviderHandler extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { - case MSG_SET_CALL_VIDEO_CLIENT: - try { - ICallVideoClient callVideoClient = - ICallVideoClient.Stub.asInterface((IBinder) msg.obj); - RemoteCallVideoClient remoteCallVideoClient = - new RemoteCallVideoClient(callVideoClient); - onSetCallVideoClient(remoteCallVideoClient); - } catch (RemoteException ignored) { - } - break; + case MSG_SET_VIDEO_CALL_LISTENER: + mVideoCallListener = IVideoCallCallback.Stub.asInterface((IBinder) msg.obj); case MSG_SET_CAMERA: onSetCamera((String) msg.obj); break; @@ -92,12 +88,12 @@ public abstract class CallVideoProvider { } /** - * Default ICallVideoProvider implementation. + * IVideoCallProvider stub implementation. */ - private final class CallVideoProviderBinder extends ICallVideoProvider.Stub { - public void setCallVideoClient(IBinder callVideoClientBinder) { + private final class VideoCallProviderBinder extends IVideoCallProvider.Stub { + public void setVideoCallListener(IBinder videoCallListenerBinder) { mMessageHandler.obtainMessage( - MSG_SET_CALL_VIDEO_CLIENT, callVideoClientBinder).sendToTarget(); + MSG_SET_VIDEO_CALL_LISTENER, videoCallListenerBinder).sendToTarget(); } public void setCamera(String cameraId) { @@ -143,30 +139,19 @@ public abstract class CallVideoProvider { } } - private final CallVideoProviderHandler mMessageHandler = new CallVideoProviderHandler(); - private final CallVideoProviderBinder mBinder; - - public CallVideoProvider() { - mBinder = new CallVideoProviderBinder(); + public VideoCallProvider() { + mBinder = new VideoCallProviderBinder(); } /** * Returns binder object which can be used across IPC methods. * @hide */ - public final ICallVideoProvider getInterface() { + public final IVideoCallProvider getInterface() { return mBinder; } /** - * Sets a remote interface for invoking callback methods in the InCallUI after performing - * telephony actions. - * - * @param callVideoClient The call video client. - */ - public abstract void onSetCallVideoClient(RemoteCallVideoClient callVideoClient); - - /** * Sets the camera to be used for video recording in a video call. * * @param cameraId The id of the camera. @@ -207,7 +192,7 @@ public abstract class CallVideoProvider { /** * Issues a request to modify the properties of the current session. The request is sent to * the remote device where it it handled by - * {@link CallVideoClient#onReceiveSessionModifyRequest}. + * {@link InCallService.VideoCall.Listener#onSessionModifyRequestReceived}. * Some examples of session modification requests: upgrade call from audio to video, downgrade * call from video to audio, pause video. * @@ -215,13 +200,13 @@ public abstract class CallVideoProvider { */ public abstract void onSendSessionModifyRequest(VideoCallProfile requestProfile); - /** + /**te * Provides a response to a request to change the current call session video * properties. * This is in response to a request the InCall UI has received via - * {@link CallVideoClient#onReceiveSessionModifyRequest}. + * {@link InCallService.VideoCall.Listener#onSessionModifyRequestReceived}. * The response is handled on the remove device by - * {@link CallVideoClient#onReceiveSessionModifyResponse}. + * {@link InCallService.VideoCall.Listener#onSessionModifyResponseReceived}. * * @param responseProfile The response call video properties. */ @@ -230,14 +215,14 @@ public abstract class CallVideoProvider { /** * Issues a request to the video provider to retrieve the camera capabilities. * Camera capabilities are reported back to the caller via - * {@link CallVideoClient#onHandleCameraCapabilitiesChange(CallCameraCapabilities)}. + * {@link InCallService.VideoCall.Listener#onCameraCapabilitiesChanged(CallCameraCapabilities)}. */ public abstract void onRequestCameraCapabilities(); /** * Issues a request to the video telephony framework to retrieve the cumulative data usage for * the current call. Data usage is reported back to the caller via - * {@link CallVideoClient#onUpdateCallDataUsage}. + * {@link InCallService.VideoCall.Listener#onCallDataUsageChanged}. */ public abstract void onRequestCallDataUsage(); @@ -248,4 +233,101 @@ public abstract class CallVideoProvider { * @param uri URI of image to display. */ public abstract void onSetPauseImage(String uri); + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * @param videoCallProfile The requested video call profile. + */ + public void receiveSessionModifyRequest(VideoCallProfile videoCallProfile) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.receiveSessionModifyRequest(videoCallProfile); + } catch (RemoteException ignored) { + } + } + } + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * @param status Status of the session modify request. Valid values are + * {@link InCallService.VideoCall#SESSION_MODIFY_REQUEST_SUCCESS}, + * {@link InCallService.VideoCall#SESSION_MODIFY_REQUEST_FAIL}, + * {@link InCallService.VideoCall#SESSION_MODIFY_REQUEST_INVALID} + * @param requestedProfile The original request which was sent to the remote device. + * @param responseProfile The actual profile changes made by the remote device. + */ + public void receiveSessionModifyResponse(int status, + VideoCallProfile requestedProfile, VideoCallProfile responseProfile) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.receiveSessionModifyResponse( + status, requestedProfile, responseProfile); + } catch (RemoteException ignored) { + } + } + } + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * Valid values are: {@link InCallService.VideoCall#SESSION_EVENT_RX_PAUSE}, + * {@link InCallService.VideoCall#SESSION_EVENT_RX_RESUME}, + * {@link InCallService.VideoCall#SESSION_EVENT_TX_START}, + * {@link InCallService.VideoCall#SESSION_EVENT_TX_STOP} + * + * @param event The event. + */ + public void handleCallSessionEvent(int event) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.handleCallSessionEvent(event); + } catch (RemoteException ignored) { + } + } + } + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * @param width The updated peer video width. + * @param height The updated peer video height. + */ + public void changePeerDimensions(int width, int height) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.changePeerDimensions(width, height); + } catch (RemoteException ignored) { + } + } + } + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * @param dataUsage The updated data usage. + */ + public void changeCallDataUsage(int dataUsage) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.changeCallDataUsage(dataUsage); + } catch (RemoteException ignored) { + } + } + } + + /** + * Invokes callback method defined in {@link InCallService.VideoCall.Listener}. + * + * @param callCameraCapabilities The changed camera capabilities. + */ + public void changeCameraCapabilities(CallCameraCapabilities callCameraCapabilities) { + if (mVideoCallListener != null) { + try { + mVideoCallListener.changeCameraCapabilities(callCameraCapabilities); + } catch (RemoteException ignored) { + } + } + } } diff --git a/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl b/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl index 552993f..60b5e1e 100644 --- a/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl +++ b/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl @@ -22,7 +22,7 @@ import android.telecomm.ConnectionRequest; import android.telecomm.ParcelableConnection; import android.telecomm.StatusHints; -import com.android.internal.telecomm.ICallVideoProvider; +import com.android.internal.telecomm.IVideoCallProvider; import com.android.internal.telecomm.RemoteServiceCallback; /** @@ -65,7 +65,7 @@ oneway interface IConnectionServiceAdapter { void queryRemoteConnectionServices(RemoteServiceCallback callback); - void setCallVideoProvider(String callId, ICallVideoProvider callVideoProvider); + void setVideoCallProvider(String callId, IVideoCallProvider videoCallProvider); void setVideoState(String callId, int videoState); diff --git a/telecomm/java/com/android/internal/telecomm/ICallVideoClient.aidl b/telecomm/java/com/android/internal/telecomm/IVideoCallCallback.aidl index 2689561..a71ab0a 100644 --- a/telecomm/java/com/android/internal/telecomm/ICallVideoClient.aidl +++ b/telecomm/java/com/android/internal/telecomm/IVideoCallCallback.aidl @@ -20,25 +20,24 @@ import android.telecomm.CallCameraCapabilities; import android.telecomm.VideoCallProfile; /** - * Internal definition of the CallVideoClient, used for an InCall-UI to respond to video telephony - * related changes. + * Internal definition of the a callback interface, used for an InCallUi to respond to video + * telephony changes. * - * @see android.telecomm.CallVideoClient + * @see android.telecomm.InCallService.VideoCall.Listener * * {@hide} */ - oneway interface ICallVideoClient { +oneway interface IVideoCallCallback { + void receiveSessionModifyRequest(in VideoCallProfile videoCallProfile); - void receiveSessionModifyRequest(in VideoCallProfile videoCallProfile); + void receiveSessionModifyResponse(int status, in VideoCallProfile requestedProfile, + in VideoCallProfile responseProfile); - void receiveSessionModifyResponse(int status, in VideoCallProfile requestedProfile, - in VideoCallProfile responseProfile); + void handleCallSessionEvent(int event); - void handleCallSessionEvent(int event); + void changePeerDimensions(int width, int height); - void updatePeerDimensions(int width, int height); + void changeCallDataUsage(int dataUsage); - void updateCallDataUsage(int dataUsage); - - void handleCameraCapabilitiesChange(in CallCameraCapabilities callCameraCapabilities); - } + void changeCameraCapabilities(in CallCameraCapabilities callCameraCapabilities); +} diff --git a/telecomm/java/com/android/internal/telecomm/ICallVideoProvider.aidl b/telecomm/java/com/android/internal/telecomm/IVideoCallProvider.aidl index 860a431..c1ba749 100644 --- a/telecomm/java/com/android/internal/telecomm/ICallVideoProvider.aidl +++ b/telecomm/java/com/android/internal/telecomm/IVideoCallProvider.aidl @@ -19,15 +19,13 @@ package com.android.internal.telecomm; import android.view.Surface; import android.telecomm.VideoCallProfile; -import com.android.internal.telecomm.ICallVideoClient; - /** - * Internal remote interface for a call video provider. - * @see android.telecomm.CallVideoProvider + * Internal remote interface for a video call provider. + * @see android.telecomm.VideoCallProvider * @hide */ -oneway interface ICallVideoProvider { - void setCallVideoClient(IBinder callVideoClient); +oneway interface IVideoCallProvider { + void setVideoCallListener(IBinder videoCallListenerBinder); void setCamera(String cameraId); |