From 611f996de357ed04fd6dad018e010ba10717b588 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Mon, 12 Feb 2018 15:01:01 -0800 Subject: Modify shouldProcessCall API to remove redundancy No need to differentiate between CSFB for emergency and non-emergency calls. Test: Telephony unit tests Bug: 72642113 Change-Id: Ibc5aed284be030cc584d774f122d6082ff013f5f --- api/system-current.txt | 1 - telephony/java/android/telephony/TelephonyManager.java | 18 ++++++++++++++++++ .../java/android/telephony/ims/feature/ImsFeature.java | 4 +++- .../android/telephony/ims/feature/MmTelFeature.java | 17 +++++++---------- .../com/android/internal/telephony/ITelephony.aidl | 6 ++++++ 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index d2c6bd064ac9..6051e58375f7 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5103,7 +5103,6 @@ package android.telephony.ims.feature { method public void setUiTtyMode(int, android.os.Message); method public int shouldProcessCall(java.lang.String[]); field public static final int PROCESS_CALL_CSFB = 1; // 0x1 - field public static final int PROCESS_CALL_EMERGENCY_CSFB = 2; // 0x2 field public static final int PROCESS_CALL_IMS = 0; // 0x0 } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 71e7ca1fd30c..67818dfc92b5 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -5104,6 +5104,24 @@ public class TelephonyManager { return null; } + /** + * Determines if emergency calling is allowed for the MMTEL feature on the slot provided. + * @param slotIndex The SIM slot of the MMTEL feature + * @return true if emergency calling is allowed, false otherwise. + * @hide + */ + public boolean isEmergencyMmTelAvailable(int slotIndex) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.isEmergencyMmTelAvailable(slotIndex); + } + } catch (RemoteException e) { + Rlog.e(TAG, "isEmergencyMmTelAvailable, RemoteException: " + e.getMessage()); + } + return false; + } + /** * Set IMS registration state * diff --git a/telephony/java/android/telephony/ims/feature/ImsFeature.java b/telephony/java/android/telephony/ims/feature/ImsFeature.java index bfdd4533275b..d16dfdd6f5f3 100644 --- a/telephony/java/android/telephony/ims/feature/ImsFeature.java +++ b/telephony/java/android/telephony/ims/feature/ImsFeature.java @@ -87,7 +87,9 @@ public abstract class ImsFeature { // ImsFeatures that are defined in the Manifests. Ensure that these values match the previously // defined values in ImsServiceClass for compatibility purposes. /** - * This feature supports emergency calling over MMTEL. + * This feature supports emergency calling over MMTEL. If defined, the framework will try to + * place an emergency call over IMS first. If it is not defined, the framework will only use + * CSFB for emergency calling. */ public static final int FEATURE_EMERGENCY_MMTEL = 0; /** diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java index 09267fc2554c..2fffd36a1a4f 100644 --- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java +++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java @@ -332,20 +332,14 @@ public class MmTelFeature extends ImsFeature { public static final int PROCESS_CALL_IMS = 0; /** * To be returned by {@link #shouldProcessCall(String[])} when the telephony framework should - * not process the outgoing NON_EMERGENCY call as IMS and should instead use circuit switch. + * not process the outgoing call as IMS and should instead use circuit switch. */ public static final int PROCESS_CALL_CSFB = 1; - /** - * To be returned by {@link #shouldProcessCall(String[])} when the telephony framework should - * not process the outgoing EMERGENCY call as IMS and should instead use circuit switch. - */ - public static final int PROCESS_CALL_EMERGENCY_CSFB = 2; @IntDef(flag = true, value = { PROCESS_CALL_IMS, - PROCESS_CALL_CSFB, - PROCESS_CALL_EMERGENCY_CSFB + PROCESS_CALL_CSFB }) @Retention(RetentionPolicy.SOURCE) public @interface ProcessCallResult {} @@ -536,12 +530,15 @@ public class MmTelFeature extends ImsFeature { /** * Called by the framework to determine if the outgoing call, designated by the outgoing - * {@link Uri}s, should be processed as an IMS call or CSFB call. + * {@link String}s, should be processed as an IMS call or CSFB call. If this method's + * functionality is not overridden, the platform will process every call as IMS as long as the + * MmTelFeature reports that the {@link MmTelCapabilities#CAPABILITY_TYPE_VOICE} capability is + * available. * @param numbers An array of {@link String}s that will be used for placing the call. There can * be multiple {@link String}s listed in the case when we want to place an outgoing * call as a conference. * @return a {@link ProcessCallResult} to the framework, which will be used to determine if the - * call wil lbe placed over IMS or via CSFB. + * call will be placed over IMS or via CSFB. */ public @ProcessCallResult int shouldProcessCall(String[] numbers) { return PROCESS_CALL_IMS; diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 2b4c059cf69f..78f66fcbbd15 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -822,6 +822,12 @@ interface ITelephony { */ IImsConfig getImsConfig(int slotId, int feature); + /** + * Returns true if emergency calling is available for the MMTEL feature associated with the + * slot specified. + */ + boolean isEmergencyMmTelAvailable(int slotId); + /** * Set the network selection mode to automatic. * -- cgit v1.2.3-59-g8ed1b