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 import com.android.ims.ImsSuppServiceNotification; 25 26 /** 27 * A listener type for receiving notification on IMS call session events. 28 * When an event is generated for an {@link IImsCallSession}, the application is notified 29 * by having one of the methods called on the {@link IImsCallSessionListener}. 30 * {@hide} 31 */ 32 interface IImsCallSessionListener { 33 /** 34 * Notifies the result of the basic session operation (setup / terminate). 35 */ callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile)36 void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile); callSessionStarted(in IImsCallSession session, in ImsCallProfile profile)37 void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile); callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)38 void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo)39 void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo); 40 41 /** 42 * Notifies the result of the call hold/resume operation. 43 */ callSessionHeld(in IImsCallSession session, in ImsCallProfile profile)44 void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile); callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)45 void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile)46 void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile); callSessionResumed(in IImsCallSession session, in ImsCallProfile profile)47 void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile); callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)48 void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo); callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile)49 void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile); 50 51 /** 52 * Notifies the result of call merge operation. 53 */ callSessionMergeStarted(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)54 void callSessionMergeStarted(in IImsCallSession session, 55 in IImsCallSession newSession, in ImsCallProfile profile); callSessionMergeComplete(in IImsCallSession session)56 void callSessionMergeComplete(in IImsCallSession session); callSessionMergeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)57 void callSessionMergeFailed(in IImsCallSession session, 58 in ImsReasonInfo reasonInfo); 59 60 /** 61 * Notifies the result of call upgrade / downgrade or any other call updates. 62 */ callSessionUpdated(in IImsCallSession session, in ImsCallProfile profile)63 void callSessionUpdated(in IImsCallSession session, 64 in ImsCallProfile profile); callSessionUpdateFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)65 void callSessionUpdateFailed(in IImsCallSession session, 66 in ImsReasonInfo reasonInfo); callSessionUpdateReceived(in IImsCallSession session, in ImsCallProfile profile)67 void callSessionUpdateReceived(in IImsCallSession session, 68 in ImsCallProfile profile); 69 70 /** 71 * Notifies the result of conference extension. 72 */ callSessionConferenceExtended(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)73 void callSessionConferenceExtended(in IImsCallSession session, 74 in IImsCallSession newSession, in ImsCallProfile profile); callSessionConferenceExtendFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)75 void callSessionConferenceExtendFailed(in IImsCallSession session, 76 in ImsReasonInfo reasonInfo); callSessionConferenceExtendReceived(in IImsCallSession session, in IImsCallSession newSession, in ImsCallProfile profile)77 void callSessionConferenceExtendReceived(in IImsCallSession session, 78 in IImsCallSession newSession, in ImsCallProfile profile); 79 80 /** 81 * Notifies the result of the participant invitation / removal to/from the conference session. 82 */ callSessionInviteParticipantsRequestDelivered(in IImsCallSession session)83 void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session); callSessionInviteParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)84 void callSessionInviteParticipantsRequestFailed(in IImsCallSession session, 85 in ImsReasonInfo reasonInfo); callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session)86 void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session); callSessionRemoveParticipantsRequestFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo)87 void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session, 88 in ImsReasonInfo reasonInfo); 89 90 /** 91 * Notifies the changes of the conference info. in the conference session. 92 */ callSessionConferenceStateUpdated(in IImsCallSession session, in ImsConferenceState state)93 void callSessionConferenceStateUpdated(in IImsCallSession session, 94 in ImsConferenceState state); 95 96 /** 97 * Notifies the incoming USSD message. 98 */ callSessionUssdMessageReceived(in IImsCallSession session, int mode, String ussdMessage)99 void callSessionUssdMessageReceived(in IImsCallSession session, 100 int mode, String ussdMessage); 101 102 /** 103 * Notifies of handover information for this call 104 */ callSessionHandover(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)105 void callSessionHandover(in IImsCallSession session, 106 in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); callSessionHandoverFailed(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo)107 void callSessionHandoverFailed(in IImsCallSession session, 108 in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); 109 110 /** 111 * Notifies the TTY mode change by remote party. 112 * @param mode one of the following: 113 * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 114 * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 115 * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 116 * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 117 */ callSessionTtyModeReceived(in IImsCallSession session, in int mode)118 void callSessionTtyModeReceived(in IImsCallSession session, in int mode); 119 120 /** 121 * Notifies of a change to the multiparty state for this {@code ImsCallSession}. 122 * 123 * @param session The call session. 124 * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise. 125 */ callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty)126 void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty); 127 128 /** 129 * Notifies the supplementary service information for the current session. 130 */ callSessionSuppServiceReceived(in IImsCallSession session, in ImsSuppServiceNotification suppSrvNotification)131 void callSessionSuppServiceReceived(in IImsCallSession session, 132 in ImsSuppServiceNotification suppSrvNotification); 133 } 134