1 /* 2 * Copyright (c) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.ims.internal; 18 19 import com.android.ims.ImsStreamMediaProfile; 20 import com.android.ims.ImsCallProfile; 21 import com.android.ims.ImsReasonInfo; 22 import com.android.ims.ImsConferenceState; 23 import com.android.ims.internal.IImsCallSession; 24 25 /** 26 * A listener type for receiving notification on IMS call session events. 27 * When an event is generated for an {@link IImsCallSession}, the application is notified 28 * by having one of the methods called on the {@link IImsCallSessionListener}. 29 * {@hide} 30 */ 31 interface IImsCallSessionListener { 32 /** 33 * Notifies the result of the basic session operation (setup / terminate). 34 */ callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile)35 void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile); callSessionStarted(in IImsCallSession session, in ImsCallProfile profile)36 void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile); callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)37 void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo)38 void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo); 39 40 /** 41 * Notifies the result of the call hold/resume operation. 42 */ callSessionHeld(in IImsCallSession session, in ImsCallProfile profile)43 void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile); callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)44 void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile)45 void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile); callSessionResumed(in IImsCallSession session, in ImsCallProfile profile)46 void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile); callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)47 void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile)48 void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile); 49 50 /** 51 * Notifies the result of call merge operation. 52 */ callSessionMergeStarted(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)53 void callSessionMergeStarted(in IImsCallSession session, 54 in IImsCallSession newSession, in ImsCallProfile profile); callSessionMergeComplete(in IImsCallSession session)55 void callSessionMergeComplete(in IImsCallSession session); callSessionMergeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)56 void callSessionMergeFailed(in IImsCallSession session, 57 in ImsReasonInfo reasonInfo); 58 59 /** 60 * Notifies the result of call upgrade / downgrade or any other call updates. 61 */ callSessionUpdated(in IImsCallSession session, in ImsCallProfile profile)62 void callSessionUpdated(in IImsCallSession session, 63 in ImsCallProfile profile); callSessionUpdateFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)64 void callSessionUpdateFailed(in IImsCallSession session, 65 in ImsReasonInfo reasonInfo); callSessionUpdateReceived(in IImsCallSession session, in ImsCallProfile profile)66 void callSessionUpdateReceived(in IImsCallSession session, 67 in ImsCallProfile profile); 68 69 /** 70 * Notifies the result of conference extension. 71 */ callSessionConferenceExtended(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)72 void callSessionConferenceExtended(in IImsCallSession session, 73 in IImsCallSession newSession, in ImsCallProfile profile); callSessionConferenceExtendFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)74 void callSessionConferenceExtendFailed(in IImsCallSession session, 75 in ImsReasonInfo reasonInfo); callSessionConferenceExtendReceived(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)76 void callSessionConferenceExtendReceived(in IImsCallSession session, 77 in IImsCallSession newSession, in ImsCallProfile profile); 78 79 /** 80 * Notifies the result of the participant invitation / removal to/from the conference session. 81 */ callSessionInviteParticipantsRequestDelivered(in IImsCallSession session)82 void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session); callSessionInviteParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)83 void callSessionInviteParticipantsRequestFailed(in IImsCallSession session, 84 in ImsReasonInfo reasonInfo); callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session)85 void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session); callSessionRemoveParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)86 void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session, 87 in ImsReasonInfo reasonInfo); 88 89 /** 90 * Notifies the changes of the conference info. in the conference session. 91 */ callSessionConferenceStateUpdated(in IImsCallSession session, in ImsConferenceState state)92 void callSessionConferenceStateUpdated(in IImsCallSession session, 93 in ImsConferenceState state); 94 95 /** 96 * Notifies the incoming USSD message. 97 */ callSessionUssdMessageReceived(in IImsCallSession session, int mode, String ussdMessage)98 void callSessionUssdMessageReceived(in IImsCallSession session, 99 int mode, String ussdMessage); 100 101 /** 102 * Notifies of handover information for this call 103 */ callSessionHandover(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)104 void callSessionHandover(in IImsCallSession session, 105 in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); callSessionHandoverFailed(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)106 void callSessionHandoverFailed(in IImsCallSession session, 107 in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); 108 109 /** 110 * Notifies the TTY mode change by remote party. 111 * @param mode one of the following: 112 * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 113 * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 114 * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 115 * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 116 */ callSessionTtyModeReceived(in IImsCallSession session, in int mode)117 void callSessionTtyModeReceived(in IImsCallSession session, in int mode); 118 119 /** 120 * Notifies of a change to the multiparty state for this {@code ImsCallSession}. 121 * 122 * @param session The call session. 123 * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise. 124 */ callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty)125 void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty); 126 } 127