diff options
author | tom hsu <tomhsu@google.com> | 2018-07-09 21:30:12 +0800 |
---|---|---|
committer | Josh Hou <joshhou@google.com> | 2018-07-11 02:56:33 +0800 |
commit | 938ef90c790fb2ef8ff8de4b22f973e98d246461 (patch) | |
tree | 3093fe286db7d9d1d7496b64a867b78c4c2ed205 | |
parent | d91de526959e150a603ee11efd2fb4d7ac5e85b4 (diff) | |
download | ims-pie-qpr1-s1-release.tar.gz |
Sync RTT config from framework to Modem.android-9.0.0_r47android-9.0.0_r46android-9.0.0_r45android-9.0.0_r44android-9.0.0_r43android-9.0.0_r42android-9.0.0_r41android-9.0.0_r40android-9.0.0_r39android-9.0.0_r38android-9.0.0_r37android-9.0.0_r36android-9.0.0_r35android-9.0.0_r34android-9.0.0_r33android-9.0.0_r32android-9.0.0_r31android-9.0.0_r30android-9.0.0_r22android-9.0.0_r21android-9.0.0_r20android-9.0.0_r19android-9.0.0_r16pie-qpr3-s1-releasepie-qpr3-releasepie-qpr3-b-releasepie-qpr2-releasepie-qpr1-s3-releasepie-qpr1-s2-releasepie-qpr1-s1-releasepie-qpr1-releasepie-dr1-devpie-b4s4-releasepie-b4s4-dev
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
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 50 |
1 files 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); |