aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortom hsu <tomhsu@google.com>2018-07-09 21:30:12 +0800
committerJosh Hou <joshhou@google.com>2018-07-11 02:56:33 +0800
commit938ef90c790fb2ef8ff8de4b22f973e98d246461 (patch)
tree3093fe286db7d9d1d7496b64a867b78c4c2ed205
parentd91de526959e150a603ee11efd2fb4d7ac5e85b4 (diff)
downloadims-938ef90c790fb2ef8ff8de4b22f973e98d246461.tar.gz
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.java50
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);