aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2018-02-28 04:29:31 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-02-28 04:29:31 +0000
commitf55f9101ea51dcd32d4f58079611f8c64114487b (patch)
tree766e0ea084cd7b936b2ad017debc8688a82b8788
parent0b84da729ddf5ab9821fd956f1956e0628749d72 (diff)
parentd449b2367a523520ec6f7b519ab5cef10a576963 (diff)
downloadims-f55f9101ea51dcd32d4f58079611f8c64114487b.tar.gz
Integrates shouldProcessCall into framework
am: d449b2367a Change-Id: If2b82d07ac5574179541f1d11cc58fd734812eaa
-rw-r--r--src/java/com/android/ims/ImsManager.java24
-rw-r--r--src/java/com/android/ims/MmTelFeatureConnection.java18
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}.