aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Zhamaitsiak <pavelz@google.com>2015-12-18 11:30:49 -0800
committerPavel Zhamaitsiak <pavelz@google.com>2015-12-18 11:30:49 -0800
commit9510b1cb97fd77cb6a595b91405cbf0a8a4c426e (patch)
tree3d3c266f31bab67474c8606882a00d80360f1455
parent8c065f5f1bc66bec1c12cdd156b90f1cb0e98df8 (diff)
downloadims-marshmallow-dr1.5-dev.tar.gz
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.java39
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) {