101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee/* 201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Copyright (C) 2014 The Android Open Source Project 301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Licensed under the Apache License, Version 2.0 (the "License"); 501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * you may not use this file except in compliance with the License. 601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * You may obtain a copy of the License at 701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * http://www.apache.org/licenses/LICENSE-2.0 901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 1001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Unless required by applicable law or agreed to in writing, software 1101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * distributed under the License is distributed on an "AS IS" BASIS, 1201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * See the License for the specific language governing permissions and 1401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * limitations under the License 1501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee */ 1601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 1701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leepackage com.android.ims.internal; 1801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 1901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Handler; 2001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.IBinder; 2101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Looper; 2201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Message; 2301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.RemoteException; 243ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.CameraCapabilities; 253ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.Connection; 263ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.VideoProfile; 2701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.view.Surface; 2801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 2901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport com.android.internal.os.SomeArgs; 3001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 3101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee/** 32ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad * Subclass implementation of {@link Connection.VideoProvider}. This intermediates and 3301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * communicates with the actual implementation of the video call provider in the IMS service; it is 3401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * in essence, a wrapper around the IMS's video call provider implementation. 3501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 3601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * This class maintains a binder by which the ImsVideoCallProvider's implementation can communicate 3701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * its intent to invoke callbacks. In this class, the message across this binder is handled, and 3801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * the superclass's methods are used to execute the callbacks. 3901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 4001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * @hide 4101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee */ 42ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awadpublic class ImsVideoCallProviderWrapper extends Connection.VideoProvider { 4301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_RECEIVE_SESSION_MODIFY_REQUEST = 1; 4401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_RECEIVE_SESSION_MODIFY_RESPONSE = 2; 4501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_HANDLE_CALL_SESSION_EVENT = 3; 4601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_CHANGE_PEER_DIMENSIONS = 4; 4701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_CHANGE_CALL_DATA_USAGE = 5; 4801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private static final int MSG_CHANGE_CAMERA_CAPABILITIES = 6; 4901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 5001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private final IImsVideoCallProvider mVideoCallProvider; 5101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private final ImsVideoCallCallback mBinder; 5201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 5301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { 5401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 5501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void binderDied() { 5601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.asBinder().unlinkToDeath(this, 0); 5701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 5801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee }; 5901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 6001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** 6101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * IImsVideoCallCallback stub implementation. 6201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee */ 6301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private final class ImsVideoCallCallback extends IImsVideoCallCallback.Stub { 6401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 65ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad public void receiveSessionModifyRequest(VideoProfile VideoProfile) { 6601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_REQUEST, 67ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad VideoProfile).sendToTarget(); 6801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 6901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 7001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 7101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void receiveSessionModifyResponse( 72ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad int status, VideoProfile requestProfile, VideoProfile responseProfile) { 7301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee SomeArgs args = SomeArgs.obtain(); 7401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.arg1 = status; 7501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.arg2 = requestProfile; 7601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.arg3 = responseProfile; 7701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_RECEIVE_SESSION_MODIFY_RESPONSE, args).sendToTarget(); 7801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 7901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 8001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 8101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void handleCallSessionEvent(int event) { 8201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_HANDLE_CALL_SESSION_EVENT, event).sendToTarget(); 8301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 8401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 8501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 8601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void changePeerDimensions(int width, int height) { 8701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee SomeArgs args = SomeArgs.obtain(); 8801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.arg1 = width; 8901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.arg2 = height; 9001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_CHANGE_PEER_DIMENSIONS, args).sendToTarget(); 9101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 9201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 9301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 9401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void changeCallDataUsage(int dataUsage) { 9501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_CHANGE_CALL_DATA_USAGE, dataUsage).sendToTarget(); 9601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 9701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 9801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 99ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad public void changeCameraCapabilities(CameraCapabilities cameraCapabilities) { 10001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mHandler.obtainMessage(MSG_CHANGE_CAMERA_CAPABILITIES, 10101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee cameraCapabilities).sendToTarget(); 10201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 10301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 10401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 10501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** Default handler used to consolidate binder method calls onto a single thread. */ 10601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee private final Handler mHandler = new Handler(Looper.getMainLooper()) { 10701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee @Override 10801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void handleMessage(Message msg) { 10901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee SomeArgs args; 11001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee switch (msg.what) { 11101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_RECEIVE_SESSION_MODIFY_REQUEST: 112ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad receiveSessionModifyRequest((VideoProfile) msg.obj); 11301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 11401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_RECEIVE_SESSION_MODIFY_RESPONSE: 11501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args = (SomeArgs) msg.obj; 11601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 11701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee int status = (int) args.arg1; 118ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad VideoProfile requestProfile = (VideoProfile) args.arg2; 119ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad VideoProfile responseProfile = (VideoProfile) args.arg3; 12001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 12101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee receiveSessionModifyResponse(status, requestProfile, responseProfile); 12201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } finally { 12301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.recycle(); 12401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 12501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 12601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_HANDLE_CALL_SESSION_EVENT: 12701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee handleCallSessionEvent((int) msg.obj); 12801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 12901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_CHANGE_PEER_DIMENSIONS: 13001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args = (SomeArgs) msg.obj; 13101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 13201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee int width = (int) args.arg1; 13301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee int height = (int) args.arg2; 13401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee changePeerDimensions(width, height); 13501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } finally { 13601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee args.recycle(); 13701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 13801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 13901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_CHANGE_CALL_DATA_USAGE: 14001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee changeCallDataUsage(msg.arg1); 14101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 14201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee case MSG_CHANGE_CAMERA_CAPABILITIES: 143ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad changeCameraCapabilities((CameraCapabilities) msg.obj); 14401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 14501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee default: 14601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee break; 14701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 14801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 14901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee }; 15001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 15101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** 15201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Instantiates an instance of the ImsVideoCallProvider, taking in the binder for IMS's video 15301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * call provider implementation. 15401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * 155ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad * @param VideoProvider 15601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee */ 157ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad public ImsVideoCallProviderWrapper(IImsVideoCallProvider VideoProvider) 15801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee throws RemoteException { 159ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad mVideoCallProvider = VideoProvider; 16001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.asBinder().linkToDeath(mDeathRecipient, 0); 16101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 16201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mBinder = new ImsVideoCallCallback(); 16301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setCallback(mBinder); 16401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 16501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 16601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 16701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetCamera(String cameraId) { 16801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 16901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setCamera(cameraId); 17001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 17101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 17201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 17301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 17401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 17501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetPreviewSurface(Surface surface) { 17601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 17701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setPreviewSurface(surface); 17801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 17901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 18001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 18101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 18201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 18301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetDisplaySurface(Surface surface) { 18401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 18501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setDisplaySurface(surface); 18601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 18701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 18801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 18901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 19001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 19101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetDeviceOrientation(int rotation) { 19201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 19301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setDeviceOrientation(rotation); 19401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 19501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 19601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 19701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 19801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 19901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetZoom(float value) { 20001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 20101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setZoom(value); 20201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 20301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 20401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 20501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 20601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 207ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad public void onSendSessionModifyRequest(VideoProfile requestProfile) { 20801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 20901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.sendSessionModifyRequest(requestProfile); 21001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 21101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 21201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 21301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 21401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 215ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad public void onSendSessionModifyResponse(VideoProfile responseProfile) { 21601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 21701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.sendSessionModifyResponse(responseProfile); 21801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 21901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 22001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 22101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 22201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 22301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onRequestCameraCapabilities() { 22401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 22501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.requestCameraCapabilities(); 22601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 22701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 22801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 22901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 23001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 23101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onRequestCallDataUsage() { 23201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 23301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.requestCallDataUsage(); 23401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 23501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 23601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 23701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee 23801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee /** @inheritDoc */ 23901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee public void onSetPauseImage(String uri) { 24001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee try { 24101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee mVideoCallProvider.setPauseImage(uri); 24201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } catch (RemoteException e) { 24301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 24401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee } 24501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee}