diff --git a/telephony/java/android/telephony/ims/stub/ImsCallSessionListenerImplBase.java b/telephony/java/android/telephony/ims/stub/ImsCallSessionListenerImplBase.java index 12228a19fcc8f..6c18935d16ef6 100644 --- a/telephony/java/android/telephony/ims/stub/ImsCallSessionListenerImplBase.java +++ b/telephony/java/android/telephony/ims/stub/ImsCallSessionListenerImplBase.java @@ -195,6 +195,23 @@ public class ImsCallSessionListenerImplBase extends IImsCallSessionListener.Stub // no-op } + /** + * Notifies of a case where a {@link com.android.ims.internal.ImsCallSession} may potentially + * handover from one radio technology to another. + * @param session + * @param srcAccessTech The source radio access technology; one of the access technology + * constants defined in {@link android.telephony.ServiceState}. For + * example {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. + * @param targetAccessTech The target radio access technology; one of the access technology + * constants defined in {@link android.telephony.ServiceState}. For + * example {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. + */ + @Override + public void callSessionMayHandover(IImsCallSession session, int srcAccessTech, + int targetAccessTech) { + // no-op + } + /** * Notifies of handover information for this call */ diff --git a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl index 49d596033cb35..748092d2a3bdd 100644 --- a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl @@ -106,6 +106,8 @@ oneway interface IImsCallSessionListener { in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); void callSessionHandoverFailed(in IImsCallSession session, in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo); + void callSessionMayHandover(in IImsCallSession session, + in int srcAccessTech, in int targetAccessTech); /** * Notifies the TTY mode change by remote party. diff --git a/telephony/java/com/android/ims/internal/ImsCallSession.java b/telephony/java/com/android/ims/internal/ImsCallSession.java index f20f7c8819582..1736b80c562b3 100644 --- a/telephony/java/com/android/ims/internal/ImsCallSession.java +++ b/telephony/java/com/android/ims/internal/ImsCallSession.java @@ -344,6 +344,24 @@ public class ImsCallSession { // no-op } + /** + * Called when an {@link ImsCallSession} may handover from one radio technology to another. + * For example, the session may handover from WIFI to LTE if conditions are right. + *

+ * If handover is attempted, + * {@link #callSessionHandover(ImsCallSession, int, int, ImsReasonInfo)} or + * {@link #callSessionHandoverFailed(ImsCallSession, int, int, ImsReasonInfo)} will be + * called to indicate the success or failure of the handover. + * + * @param session IMS session object + * @param srcAccessTech original access technology + * @param targetAccessTech new access technology + */ + public void callSessionMayHandover(ImsCallSession session, int srcAccessTech, + int targetAccessTech) { + // no-op + } + /** * Called when session access technology changes * @@ -1280,6 +1298,28 @@ public class ImsCallSession { } } + /** + * Notifies of a case where a {@link com.android.ims.internal.ImsCallSession} may + * potentially handover from one radio technology to another. + * @param session + * @param srcAccessTech The source radio access technology; one of the access technology + * constants defined in {@link android.telephony.ServiceState}. For + * example + * {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. + * @param targetAccessTech The target radio access technology; one of the access technology + * constants defined in {@link android.telephony.ServiceState}. For + * example + * {@link android.telephony.ServiceState#RIL_RADIO_TECHNOLOGY_LTE}. + */ + @Override + public void callSessionMayHandover(IImsCallSession session, + int srcAccessTech, int targetAccessTech) { + if (mListener != null) { + mListener.callSessionMayHandover(ImsCallSession.this, srcAccessTech, + targetAccessTech); + } + } + /** * Notifies of handover information for this call */