diff options
author | Brad Ebinger <breadley@google.com> | 2018-02-28 04:29:31 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-02-28 04:29:31 +0000 |
commit | f55f9101ea51dcd32d4f58079611f8c64114487b (patch) | |
tree | 766e0ea084cd7b936b2ad017debc8688a82b8788 | |
parent | 0b84da729ddf5ab9821fd956f1956e0628749d72 (diff) | |
parent | d449b2367a523520ec6f7b519ab5cef10a576963 (diff) | |
download | ims-f55f9101ea51dcd32d4f58079611f8c64114487b.tar.gz |
Integrates shouldProcessCall into framework
am: d449b2367a
Change-Id: If2b82d07ac5574179541f1d11cc58fd734812eaa
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 24 | ||||
-rw-r--r-- | src/java/com/android/ims/MmTelFeatureConnection.java | 18 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 4ab6f9ad..78913781 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -2204,7 +2204,7 @@ public class ImsManager { } } - public void onSmsReady() throws ImsException{ + public void onSmsReady() throws ImsException { try { mMmTelFeatureConnection.onSmsReady(); } catch (RemoteException e) { @@ -2214,6 +2214,28 @@ public class ImsManager { } /** + * Determines whether or not a call with the specified numbers should be placed over IMS or over + * CSFB. + * @param isEmergency is at least one call an emergency number. + * @param numbers A {@link String} array containing the numbers in the call being placed. Can + * be multiple numbers in the case of dialing out a conference. + * @return The result of the query, one of the following values: + * - {@link MmTelFeature#PROCESS_CALL_IMS} + * - {@link MmTelFeature#PROCESS_CALL_CSFB} + * @throws ImsException if the ImsService is not available. In this case, we should fall back + * to CSFB anyway. + */ + public @MmTelFeature.ProcessCallResult int shouldProcessCall(boolean isEmergency, + String[] numbers) throws ImsException { + try { + return mMmTelFeatureConnection.shouldProcessCall(isEmergency, numbers); + } catch (RemoteException e) { + throw new ImsException("shouldProcessCall()", e, + ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN); + } + } + + /** * Gets the Multi-Endpoint interface to subscribe to multi-enpoint notifications.. * * @return the multi-endpoint interface instance diff --git a/src/java/com/android/ims/MmTelFeatureConnection.java b/src/java/com/android/ims/MmTelFeatureConnection.java index 571670d5..2d11ae60 100644 --- a/src/java/com/android/ims/MmTelFeatureConnection.java +++ b/src/java/com/android/ims/MmTelFeatureConnection.java @@ -351,6 +351,11 @@ public class MmTelFeatureConnection { return tm != null ? tm.getImsConfig(mSlotId, ImsFeature.FEATURE_MMTEL) : null; } + public boolean isEmergencyMmTelAvailable() { + TelephonyManager tm = getTelephonyManager(mContext); + return tm != null ? tm.isEmergencyMmTelAvailable(mSlotId) : false; + } + public IImsServiceFeatureCallback getListener() { return mListenerBinder; } @@ -540,6 +545,19 @@ public class MmTelFeatureConnection { } } + public @MmTelFeature.ProcessCallResult int shouldProcessCall(boolean isEmergency, + String[] numbers) throws RemoteException { + if (isEmergency && !isEmergencyMmTelAvailable()) { + // Don't query the ImsService if emergency calling is not available on the ImsService. + Log.i(TAG, "MmTel does not support emergency over IMS, fallback to CS."); + return MmTelFeature.PROCESS_CALL_CSFB; + } + synchronized (mLock) { + checkServiceIsReady(); + return getServiceInterface(mBinder).shouldProcessCall(numbers); + } + } + /** * @return an integer describing the current Feature Status, defined in * {@link ImsFeature.ImsState}. |