1ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger/* 2264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * Copyright (C) 2018 The Android Open Source Project 3ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 4ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * Licensed under the Apache License, Version 2.0 (the "License"); 5ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * you may not use this file except in compliance with the License. 6ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * You may obtain a copy of the License at 7ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 8ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * http://www.apache.org/licenses/LICENSE-2.0 9ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 10ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * Unless required by applicable law or agreed to in writing, software 11ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * distributed under the License is distributed on an "AS IS" BASIS, 12ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * See the License for the specific language governing permissions and 14ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * limitations under the License 15ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 16ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 17264625486becc65fac29d7094cfba6d591daeae4Brad Ebingerpackage android.telephony.ims; 18ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 19f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebingerimport android.annotation.SystemApi; 20ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebingerimport android.os.RemoteException; 21264625486becc65fac29d7094cfba6d591daeae4Brad Ebingerimport android.telephony.ims.aidl.IImsCallSessionListener; 22f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebingerimport android.telephony.ims.stub.ImsCallSessionImplBase; 23ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 24264625486becc65fac29d7094cfba6d591daeae4Brad Ebingerimport com.android.ims.internal.IImsCallSession; 25ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 26ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger/** 27f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Listener interface for notifying the Framework's {@link ImsCallSession} for updates to an ongoing 28f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * IMS call. 29ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 30ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @hide 31ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 32f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger// DO NOT remove or change the existing APIs, only add new ones to this implementation or you 33f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger// will break other implementations of ImsCallSessionListener maintained by other ImsServices. 34f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger// TODO: APIs in here do not conform to API guidelines yet. This can be changed if 35f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger// ImsCallSessionListenerConverter is also changed. 36f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger@SystemApi 37ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebingerpublic class ImsCallSessionListener { 38ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 39ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger private final IImsCallSessionListener mListener; 40ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 41f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger /** @hide */ 42ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public ImsCallSessionListener(IImsCallSessionListener l) { 43ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger mListener = l; 44ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 45ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 46ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 47f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * A request has been sent out to initiate a new IMS call session and a 1xx response has been 48f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * received from the network. 49ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 50f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionProgressing(ImsStreamMediaProfile profile) { 51f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 52f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionProgressing(profile); 53f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 54f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 55f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 56ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 57ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 58ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 59f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has been initiated. 60ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 61f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile the associated {@link ImsCallProfile}. 62ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 63f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionInitiated(ImsCallProfile profile) { 64f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 65f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionInitiated(profile); 66f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 67f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 68f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 69ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 70ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 71ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 72f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session establishment has failed. 73ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 74f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} detailing the reason of the IMS call session 75f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * establishment failure. 76ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 77f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionInitiatedFailed(ImsReasonInfo reasonInfo) { 78f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 79f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionInitiatedFailed(reasonInfo); 80f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 81f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 82f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 83ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 84ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 85ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 86f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has been terminated. 87ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 88f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} detailing the reason of the session termination. 89ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 90f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionTerminated(ImsReasonInfo reasonInfo) { 91f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 92f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionTerminated(reasonInfo); 93f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 94f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 95f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 96ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 97ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 98ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 99f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has started the process of holding the call. If it fails, 100f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link #callSessionHoldFailed(ImsReasonInfo)} should be called. 101f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 102f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * If the IMS call session is resumed, call {@link #callSessionResumed(ImsCallProfile)}. 103f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 104f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The associated {@link ImsCallProfile} of the call session that has been put 105f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * on hold. 106ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 107f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionHeld(ImsCallProfile profile) { 108f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 109f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionHeld(profile); 110f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 111f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 112f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 113ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 114ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 115ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 116f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has failed to be held. 117ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 118f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} detailing the reason of the session hold failure. 119ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 120f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionHoldFailed(ImsReasonInfo reasonInfo) { 121f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 122f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionHoldFailed(reasonInfo); 123f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 124f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 125f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 126ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 127ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 128ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 129f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * This IMS Call session has been put on hold by the remote party. 130f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 131f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with this IMS call session. 132ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 133f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionHoldReceived(ImsCallProfile profile) { 134f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 135f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionHoldReceived(profile); 136f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 137f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 138f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 139ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 140ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 141ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 142f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has started the process of resuming the call. If the process of resuming 143f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * the call fails, call {@link #callSessionResumeFailed(ImsReasonInfo)}. 144f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 145f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with this IMS call session. 146ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 147f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionResumed(ImsCallProfile profile) { 148f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 149f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionResumed(profile); 150f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 151f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 152f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 153ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 154ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 155ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 156f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session resume has failed. 157ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 158f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} containing the detailed reason of the session resume 159f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * failure. 160ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 161f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionResumeFailed(ImsReasonInfo reasonInfo) { 162f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 163f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionResumeFailed(reasonInfo); 164f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 165f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 166f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 167ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 168ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 169ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 170f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The remote party has resumed this IMS call session. 171f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 172f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile {@link ImsCallProfile} associated with the IMS call session. 173ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 174f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionResumeReceived(ImsCallProfile profile) { 175f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 176f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionResumeReceived(profile); 177f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 178f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 179f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 180ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 181ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 182ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 183f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session merge has been started. At this point, the {@code newSession} 184f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * represents the IMS call session which represents the new merged conference and has been 185f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * initiated to the IMS conference server. 186ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 187f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param newSession the {@link ImsCallSessionImplBase} that represents the merged active & held 188f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * sessions. 189f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with this IMS call session. 190ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 191f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionMergeStarted(ImsCallSessionImplBase newSession, ImsCallProfile profile) 192f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 193f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 194f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMergeStarted(newSession != null ? 195f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger newSession.getServiceImpl() : null, profile); 196f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 197f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 198f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 199ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 200ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 201ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 202f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Compatibility method for older implementations. 203f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * See {@link #callSessionMergeStarted(ImsCallSessionImplBase, ImsCallProfile)}. 204264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * 205264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * @hide 206264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger */ 207264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger public void callSessionMergeStarted(IImsCallSession newSession, ImsCallProfile profile) 208f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 209f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 210f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMergeStarted(newSession, profile); 211f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 212f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 213f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 214264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger } 215264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger 216264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger /** 217f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The session merge is successful and the merged {@link ImsCallSession} is active. 218ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 219f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param newSession the new {@link ImsCallSessionImplBase} 220f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * that represents the conference IMS call 221f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * session. 222ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 223f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionMergeComplete(ImsCallSessionImplBase newSession) { 224f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 225f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMergeComplete(newSession != null ? 226f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger newSession.getServiceImpl() : null); 227f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 228f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 229f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 230ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 231ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 232ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 233f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Compatibility method for older implementations of ImsService. 234264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * 235f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * See {@link #callSessionMergeComplete(ImsCallSessionImplBase)}}. 236264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * 237264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * @hide 238264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger */ 239f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionMergeComplete(IImsCallSession newSession) { 240f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 241f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMergeComplete(newSession); 242f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 243f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 244f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 245264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger } 246264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger 247264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger /** 248f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session merge has failed. 249ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 250f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} contining the reason for the call merge failure. 251ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 252f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionMergeFailed(ImsReasonInfo reasonInfo) { 253f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 254f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMergeFailed(reasonInfo); 255f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 256f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 257f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 258ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 259ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 260ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 261f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session profile has been updated. Does not include holding or resuming a call. 262f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 263f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with the updated IMS call session. 264ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 265f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionUpdated(ImsCallProfile profile) { 266f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 267f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionUpdated(profile); 268f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 269f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 270f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 271ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 272ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 273ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 274f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session profile update has failed. 275ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 276f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} containing a reason for the session update failure. 277ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 278f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionUpdateFailed(ImsReasonInfo reasonInfo) { 279f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 280f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionUpdateFailed(reasonInfo); 281f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 282f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 283f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 284ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 285ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 286ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 287f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session profile has received an update from the remote user. 288f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 289f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The new {@link ImsCallProfile} associated with the update. 290ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 291f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionUpdateReceived(ImsCallProfile profile) { 292f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 293f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionUpdateReceived(profile); 294f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 295f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 296f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 297ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 298ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 299ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 300ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * Called when the session has been extended to a conference session. 301ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 302f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * If the conference extension fails, call 303f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link #callSessionConferenceExtendFailed(ImsReasonInfo)}. 304f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 305f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param newSession the session object that is extended to the conference from the active 306f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * IMS Call session. 307f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with the IMS call session. 308ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 309f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionConferenceExtended(ImsCallSessionImplBase newSession, 310f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ImsCallProfile profile) { 311f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 312f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceExtended( 313f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger newSession != null ? newSession.getServiceImpl() : null, profile); 314f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 315f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 316f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 317ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 318ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 319ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 320f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Compatibility method to interface with older versions of ImsService. 321f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * See {@link #callSessionConferenceExtended(ImsCallSessionImplBase, ImsCallProfile)}. 322264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * 323264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * @hide 324264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger */ 325f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionConferenceExtended(IImsCallSession newSession, ImsCallProfile profile) { 326f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 327f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceExtended(newSession, profile); 328f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 329f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 330f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 331264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger } 332264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger 333264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger /** 334f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The previous conference extension has failed. 335ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 336f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} containing the detailed reason of the conference 337f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * extension failure. 338ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 339f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionConferenceExtendFailed(ImsReasonInfo reasonInfo) { 340f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 341f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceExtendFailed(reasonInfo); 342f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 343f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 344f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 345ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 346ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 347ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 348f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * A conference extension has been received received from the remote party. 349f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 350f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param newSession An {@link ImsCallSessionImplBase} 351f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * representing the extended IMS call session. 352f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param profile The {@link ImsCallProfile} associated with the new IMS call session. 353ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 354f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionConferenceExtendReceived(ImsCallSessionImplBase newSession, 355f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ImsCallProfile profile) { 356f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 357f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceExtendReceived(newSession != null 358f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ? newSession.getServiceImpl() : null, profile); 359f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 360f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 361f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 362ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 363ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 364ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 365f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Compatibility method to interface with older versions of ImsService. 366f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * See {@link #callSessionConferenceExtendReceived(ImsCallSessionImplBase, ImsCallProfile)}. 367264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * 368264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger * @hide 369264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger */ 370264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger public void callSessionConferenceExtendReceived(IImsCallSession newSession, 371f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ImsCallProfile profile) { 372f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 373f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceExtendReceived(newSession, profile); 374f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 375f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 376f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 377264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger } 378264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger 379264625486becc65fac29d7094cfba6d591daeae4Brad Ebinger /** 380f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The request to invite participants to the conference has been delivered to the conference 381ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * server. 382ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 383f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionInviteParticipantsRequestDelivered() { 384f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 385f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionInviteParticipantsRequestDelivered(); 386f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 387f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 388f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 389ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 390ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 391ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 392f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The previous request to invite participants to the conference (see 393f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link #callSessionInviteParticipantsRequestDelivered()}) has failed. 394ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 395f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} detailing the reason forthe conference invitation 396f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * failure. 397ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 398ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionInviteParticipantsRequestFailed(ImsReasonInfo reasonInfo) 399f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 400f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 401f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionInviteParticipantsRequestFailed(reasonInfo); 402f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 403f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 404f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 405ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 406ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 407ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 408f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The request to remove participants from the conference has been delivered to the conference 409ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * server. 410ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 411f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionRemoveParticipantsRequestDelivered() { 412f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 413f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionRemoveParticipantsRequestDelivered(); 414f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 415f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 416f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 417ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 418ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 419ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 420f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The previous request to remove participants from the conference (see 421f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link #callSessionRemoveParticipantsRequestDelivered()}) has failed. 422ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 423f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo {@link ImsReasonInfo} detailing the reason for the conference removal 424f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * failure. 425ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 426ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionRemoveParticipantsRequestFailed(ImsReasonInfo reasonInfo) 427f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 428f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 429f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionInviteParticipantsRequestFailed(reasonInfo); 430f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 431f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 432f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 433ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 434ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 435ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 436f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session's conference state has changed. 437ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 438f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param state The new {@link ImsConferenceState} associated with the conference. 439ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 440f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionConferenceStateUpdated(ImsConferenceState state) { 441f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 442f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionConferenceStateUpdated(state); 443f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 444f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 445f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 446ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 447ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 448ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 449f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session has received a Ussd message. 450f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 451f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param mode The mode of the USSD message, either 452f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link ImsCallSessionImplBase#USSD_MODE_NOTIFY} or 453f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link ImsCallSessionImplBase#USSD_MODE_REQUEST}. 454f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param ussdMessage The USSD message. 455ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 456ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionUssdMessageReceived(int mode, String ussdMessage) 457f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 458f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 459f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionUssdMessageReceived(mode, ussdMessage); 460f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 461f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 462f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 463ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 464ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 465ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 466f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * An {@link ImsCallSession} may potentially handover from one radio 467f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * technology to another. 468ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 469f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param srcAccessTech The source radio access technology; one of the access technology 470f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * constants defined in {@link android.telephony.ServiceState}. For example 471f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. 472ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @param targetAccessTech The target radio access technology; one of the access technology 473f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * constants defined in {@link android.telephony.ServiceState}. For example 474f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. 475ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 476ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionMayHandover(int srcAccessTech, int targetAccessTech) 477f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 478f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 479f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMayHandover(srcAccessTech, targetAccessTech); 480f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 481f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 482f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 483ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 484ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 485ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 486f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session's access technology has changed. 487ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 488f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param srcAccessTech original access technology, defined in 489f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link android.telephony.ServiceState}. 490f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param targetAccessTech new access technology, defined in 491f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * {@link android.telephony.ServiceState}. 492f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo The {@link ImsReasonInfo} associated with this handover. 493ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 494ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionHandover(int srcAccessTech, int targetAccessTech, 495f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ImsReasonInfo reasonInfo) { 496f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 497f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionHandover(srcAccessTech, targetAccessTech, reasonInfo); 498f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 499f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 500f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 501ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 502ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 503ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 504f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The IMS call session's access technology change has failed.. 505ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 506ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @param srcAccessTech original access technology 507ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @param targetAccessTech new access technology 508f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param reasonInfo An {@link ImsReasonInfo} detailing the reason for the failure. 509ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 510ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionHandoverFailed(int srcAccessTech, int targetAccessTech, 511f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger ImsReasonInfo reasonInfo) { 512f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 513f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionHandoverFailed(srcAccessTech, targetAccessTech, reasonInfo); 514f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 515f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 516f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 517ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 518ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 519ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 520f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The TTY mode has been changed by the remote party. 521ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 522ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @param mode one of the following: - 523ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} - 524ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} - 525ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} - 526ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 527ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 528f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionTtyModeReceived(int mode) { 529f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 530f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionTtyModeReceived(mode); 531f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 532f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 533f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 534ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 535ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 536ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 537f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * The multiparty state has been changed for this {@code ImsCallSession}. 538ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 539f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise. 540ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 541f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionMultipartyStateChanged(boolean isMultiParty) { 542f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 543f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionMultipartyStateChanged(isMultiParty); 544f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 545f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 546f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 547ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 548ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 549ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 550f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Supplementary service information has been received for the current IMS call session. 551f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 552f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param suppSrvNotification The {@link ImsSuppServiceNotification} containing the change. 553ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 554ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionSuppServiceReceived(ImsSuppServiceNotification suppSrvNotification) 555f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 556f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 557f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionSuppServiceReceived(suppSrvNotification); 558f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 559f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 560f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 561ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 562ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 563ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 564f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * An RTT modify request has been received from the remote party. 565ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 566f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param callProfile An {@link ImsCallProfile} with the updated attributes 567ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 568ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger public void callSessionRttModifyRequestReceived(ImsCallProfile callProfile) 569f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger { 570f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 571f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionRttModifyRequestReceived(callProfile); 572f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 573f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 574f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 575ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 576ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 577ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 578f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * An RTT modify response has been received. 579f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * 580ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * @param status the received response for RTT modify request. 581ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger */ 582f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionRttModifyResponseReceived(int status) { 583f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 584f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionRttModifyResponseReceived(status); 585f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 586f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 587f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 588ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 589ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 590ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger /** 591f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * An RTT message has been received from the remote party. 592ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger * 593f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * @param rttMessage The RTT message that has been received. 594f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger */ 595f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger public void callSessionRttMessageReceived(String rttMessage) { 596f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger try { 597f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger mListener.callSessionRttMessageReceived(rttMessage); 598f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } catch (RemoteException e) { 599f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger throw new RuntimeException(e); 600f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger } 601ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger } 602ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger} 603ea8fd1bd0a13feddd53f6c7cb202ac32a1a74c28Brad Ebinger 604