From d91de526959e150a603ee11efd2fb4d7ac5e85b4 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Wed, 13 Jun 2018 17:15:30 -0700 Subject: Revert ImsResolver binding check Reverts the ImsResolver in progress binding check. This caused a race condition that would sometimes result in IMS not being registered when SIM swapping to a carrier ImsService that supports RCS only. Bug: 109762920 Test: Telephony Unit/GTS testing Change-Id: I8b6b244b51a4500ecdf59ff2d66ef52e05c87b22 Merged-In: I8b6b244b51a4500ecdf59ff2d66ef52e05c87b22 --- src/java/com/android/ims/ImsManager.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 590ab5ac..dfff3ff4 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -1416,14 +1416,6 @@ public class ImsManager { * busy, it will try to connect before reporting failure. */ public boolean isServiceAvailable() { - // If we are busy resolving dynamic IMS bindings, we are not available yet. - TelephonyManager tm = (TelephonyManager) - mContext.getSystemService(Context.TELEPHONY_SERVICE); - if (tm.isResolvingImsBinding()) { - Log.d(TAG, "isServiceAvailable: resolving IMS binding, returning false"); - return false; - } - connectIfServiceIsAvailable(); // mImsServiceProxy will always create an ImsServiceProxy. return mMmTelFeatureConnection.isBinderAlive(); -- cgit v1.2.3 From 938ef90c790fb2ef8ff8de4b22f973e98d246461 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Mon, 9 Jul 2018 21:30:12 +0800 Subject: Sync RTT config from framework to Modem. 1st. For this update, when updateImsServiceconfig is in process, it add updateRttConfigValue to sync RTT config. It can solve if RTT config change before factory reset or flash ROM, RTT config in modem side would be different from framework side. 2nd. To prevent VoLTE config out of sync with modem from RTT switch change. When RTT config turn on, it will use setEnhanced4gLteModeSetting instead of setAdvanced4GMode for VoLTE config sync. When RTT config turn off, it will depend on user's config to decide VoLTE on or off. Bug: b/110891445 Test: 1. Manual flip RTT switch and MobileData switch to obserb updateImsServiceConfig for checking RTT sync process. 2. Do factory reset and check solution in process. 3. Make a RTT call to check config is synced and RTT is work. Change-Id: Ie44b783d54cc605ba383a3e402df8dea25131919 --- src/java/com/android/ims/ImsManager.java | 50 +++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index dfff3ff4..3dc12f45 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -28,6 +28,7 @@ import android.os.Parcel; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.SystemProperties; +import android.provider.Settings; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; import android.telephony.ims.stub.ImsRegistrationImplBase; @@ -1287,6 +1288,7 @@ public class ImsManager { boolean isImsUsed = updateVolteFeatureValue(); isImsUsed |= updateWfcFeatureAndProvisionedValues(); isImsUsed |= updateVideoCallFeatureValue(); + isImsUsed |= updateRttConfigValue(); if (isImsUsed || !isTurnOffImsAllowedByPlatform()) { // Turn on IMS if it is used. @@ -1834,22 +1836,42 @@ public class ImsManager { } } + public boolean updateRttConfigValue() { + boolean isCarrierSupported = + getBooleanCarrierConfig(CarrierConfigManager.KEY_RTT_SUPPORTED_BOOL); + boolean isRttEnabled = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.RTT_CALLING_MODE, 0) != 0; + Log.i(ImsManager.class.getSimpleName(), "update RTT value " + isRttEnabled); + if (isCarrierSupported == true) { + setRttConfig(isRttEnabled); + } + return isCarrierSupported && isRttEnabled; + } + + private void setRttConfig(boolean enabled) { + final int value = enabled ? ImsConfig.FeatureValueConstants.ON : + ImsConfig.FeatureValueConstants.OFF; + Thread thread = new Thread(() -> { + try { + Log.i(ImsManager.class.getSimpleName(), "Setting RTT enabled to " + enabled); + getConfigInterface().setProvisionedValue( + ImsConfig.ConfigConstants.RTT_SETTING_ENABLED, value); + } catch (ImsException e) { + Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT value enabled to " + + enabled + ": " + e); + } + }); + thread.start(); + } + public void setRttEnabled(boolean enabled) { try { - setAdvanced4GMode(enabled || isEnhanced4gLteModeSettingEnabledByUser()); - final int value = enabled ? ImsConfig.FeatureValueConstants.ON : - ImsConfig.FeatureValueConstants.OFF; - Thread thread = new Thread(() -> { - try { - Log.i(ImsManager.class.getSimpleName(), "Setting RTT enabled to " + enabled); - getConfigInterface().setProvisionedValue( - ImsConfig.ConfigConstants.RTT_SETTING_ENABLED, value); - } catch (ImsException e) { - Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT enabled to " - + enabled + ": " + e); - } - }); - thread.start(); + if (enabled) { + setEnhanced4gLteModeSetting(enabled); + } else { + setAdvanced4GMode(enabled || isEnhanced4gLteModeSettingEnabledByUser()); + } + setRttConfig(enabled); } catch (ImsException e) { Log.e(ImsManager.class.getSimpleName(), "Unable to set RTT enabled to " + enabled + ": " + e); -- cgit v1.2.3