diff options
| author | Pavel Zhamaitsiak <pavelz@google.com> | 2015-09-08 17:12:06 -0700 |
|---|---|---|
| committer | Pavel Zhamaitsiak <pavelz@google.com> | 2015-09-09 00:25:46 +0000 |
| commit | dc16e458bb57bc48958259e893ad52280247dcc4 (patch) | |
| tree | 9531e96c600278851d9f955037b7f9782170a583 | |
| parent | 8ca52ff89d9f43cf1ff04d1d607a0b904e749a82 (diff) | |
| download | android_frameworks_opt_net_ims-dc16e458bb57bc48958259e893ad52280247dcc4.tar.gz android_frameworks_opt_net_ims-dc16e458bb57bc48958259e893ad52280247dcc4.tar.bz2 android_frameworks_opt_net_ims-dc16e458bb57bc48958259e893ad52280247dcc4.zip | |
Ensure IMS is turned On or Off when synchronizing settings with ImsConfig
Bug: 23219836
Change-Id: I0830bf6071841d2822038f737d935351a9ddebe4
| -rw-r--r-- | src/java/com/android/ims/ImsManager.java | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 2ca2b19..c787bbc 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -461,9 +461,17 @@ public class ImsManager { final ImsManager imsManager = ImsManager.getInstance(context, phoneId); if (imsManager != null && (!imsManager.mConfigUpdated || force)) { try { - imsManager.updateVolteFeatureValue(); - imsManager.updateVideoCallFeatureValue(); - imsManager.updateWfcFeatureAndProvisionedValues(); + boolean turnOn = imsManager.updateVolteFeatureValue(); + turnOn |= imsManager.updateVideoCallFeatureValue(); + turnOn |= imsManager.updateWfcFeatureAndProvisionedValues(); + + if (turnOn) { + imsManager.turnOnIms(); + } else if (getBooleanCarrierConfig(context, + CarrierConfigManager.KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL)) { + imsManager.turnOffIms(); + } + imsManager.mConfigUpdated = true; } catch (ImsException e) { loge("updateImsServiceConfig: " + e); @@ -472,10 +480,16 @@ public class ImsManager { } } - private void updateVolteFeatureValue() throws ImsException { + /** + * Update VoLTE config + * @return whether feature is On + * @throws ImsException + */ + private boolean updateVolteFeatureValue() throws ImsException { boolean available = isVolteEnabledByPlatform(mContext); boolean enabled = isEnhanced4gLteModeSettingEnabledByUser(mContext); boolean isNonTty = isNonTtyOrTtyOnVolteEnabled(mContext); + boolean turnOn = available && enabled && isNonTty; log("updateVolteFeatureValue: available = " + available + ", enabled = " + enabled @@ -484,13 +498,20 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, - (available && enabled && isNonTty) ? + turnOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); + + return turnOn; } - private void updateVideoCallFeatureValue() throws ImsException { + /** + * Update VC config + * @return whether feature is On + * @throws ImsException + */ + private boolean updateVideoCallFeatureValue() throws ImsException { boolean available = isVtEnabledByPlatform(mContext); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); @@ -499,6 +520,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; log("updateVideoCallFeatureValue: available = " + available + ", enabled = " + enabled @@ -507,17 +529,25 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, - (available && enabled && isNonTty) ? + turnOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); + + return turnOn; } - private void updateWfcFeatureAndProvisionedValues() throws ImsException { + /** + * Update WFC config + * @return whether feature is On + * @throws ImsException + */ + private boolean updateWfcFeatureAndProvisionedValues() throws ImsException { boolean available = isWfcEnabledByPlatform(mContext); boolean enabled = isWfcEnabledByUser(mContext); int mode = getWfcMode(mContext); boolean roaming = isWfcRoamingEnabledByUser(mContext); + boolean turnOn = available && enabled; log("updateWfcFeatureAndProvisionedValues: available = " + available + ", enabled = " + enabled @@ -527,17 +557,19 @@ public class ImsManager { getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, - (available && enabled) ? + turnOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, null); - if (!available || !enabled) { + if (!turnOn) { mode = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED; roaming = false; } setWfcModeInternal(mContext, mode); setWfcRoamingSettingInternal(mContext, roaming); + + return turnOn; } private ImsManager(Context context, int phoneId) { |
