diff options
author | Pavel Zhamaitsiak <pavelz@google.com> | 2015-12-18 11:30:49 -0800 |
---|---|---|
committer | Pavel Zhamaitsiak <pavelz@google.com> | 2015-12-18 11:30:49 -0800 |
commit | 9510b1cb97fd77cb6a595b91405cbf0a8a4c426e (patch) | |
tree | 3d3c266f31bab67474c8606882a00d80360f1455 | |
parent | 8c065f5f1bc66bec1c12cdd156b90f1cb0e98df8 (diff) | |
download | ims-marshmallow-dr1.5-dev.tar.gz |
Turn on IMS if it is not allowed to turn it off for current carrierandroid-wear-n-preview-3android-wear-n-preview-2android-wear-n-preview-1android-wear-7.1.1_r1android-n-preview-5android-n-preview-4android-n-preview-3android-n-preview-2android-n-iot-preview-2android-6.0.1_r68android-6.0.1_r67android-6.0.1_r62android-6.0.1_r54android-6.0.1_r53android-6.0.1_r45android-6.0.1_r25android-6.0.1_r24android-6.0.1_r22android-6.0.1_r21nougat-mr1-wear-releasen-iot-preview-2marshmallow-dr1.6-releasemarshmallow-dr1.5-releasemarshmallow-dr1.5-dev
We might turn off IMS when Carrier Config allows it. When phone switches
to Carrier Config for which it is expected that IMS stays On, then we need
to explicitly turn it on.
Bug: 25703525
Change-Id: I39ed8d976684e7e23560f8c6ac1119bb8498a62b
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 814f36e0..d406f870 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -487,14 +487,19 @@ public class ImsManager { final ImsManager imsManager = ImsManager.getInstance(context, phoneId); if (imsManager != null && (!imsManager.mConfigUpdated || force)) { try { - boolean turnOn = imsManager.updateVolteFeatureValue(); - turnOn |= imsManager.updateVideoCallFeatureValue(); - turnOn |= imsManager.updateWfcFeatureAndProvisionedValues(); - - if (turnOn) { + boolean isImsUsed = imsManager.updateVolteFeatureValue(); + isImsUsed |= imsManager.updateVideoCallFeatureValue(); + isImsUsed |= imsManager.updateWfcFeatureAndProvisionedValues(); + + if (isImsUsed || !getBooleanCarrierConfig(context, + CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL)) { + // Turn on IMS if it is used. + // Also, if turning off is not allowed for current carrier, + // we need to turn IMS on because it might be turned off before + // phone switched to current carrier. imsManager.turnOnIms(); - } else if (getBooleanCarrierConfig(context, - CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL)) { + } else { + // Turn off IMS if it is not used AND turning off is allowed for carrier. imsManager.turnOffIms(); } @@ -515,7 +520,7 @@ public class ImsManager { boolean available = isVolteEnabledByPlatform(mContext); boolean enabled = isEnhanced4gLteModeSettingEnabledByUser(mContext); boolean isNonTty = isNonTtyOrTtyOnVolteEnabled(mContext); - boolean turnOn = available && enabled && isNonTty; + boolean isFeatureOn = available && enabled && isNonTty; log("updateVolteFeatureValue: available = " + available + ", enabled = " + enabled @@ -524,12 +529,12 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, - turnOn ? + isFeatureOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); - return turnOn; + return isFeatureOn; } /** @@ -546,7 +551,7 @@ public class ImsManager { boolean isNonTty = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.PREFERRED_TTY_MODE, TelecomManager.TTY_MODE_OFF) == TelecomManager.TTY_MODE_OFF; - boolean turnOn = available && enabled && isNonTty; + boolean isFeatureOn = available && enabled && isNonTty; log("updateVideoCallFeatureValue: available = " + available + ", enabled = " + enabled @@ -555,12 +560,12 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, - turnOn ? + isFeatureOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); - return turnOn; + return isFeatureOn; } /** @@ -573,7 +578,7 @@ public class ImsManager { boolean enabled = isWfcEnabledByUser(mContext); int mode = getWfcMode(mContext); boolean roaming = isWfcRoamingEnabledByUser(mContext); - boolean turnOn = available && enabled; + boolean isFeatureOn = available && enabled; log("updateWfcFeatureAndProvisionedValues: available = " + available + ", enabled = " + enabled @@ -583,19 +588,19 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI, TelephonyManager.NETWORK_TYPE_IWLAN, - turnOn ? + isFeatureOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); - if (!turnOn) { + if (!isFeatureOn) { mode = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED; roaming = false; } setWfcModeInternal(mContext, mode); setWfcRoamingSettingInternal(mContext, roaming); - return turnOn; + return isFeatureOn; } private ImsManager(Context context, int phoneId) { |