CarrierConfigManager.KEY_CARRIER_VT_AVAILABLE_BOOL);
}
+ /**
+ * Returns the user configuration of VT setting
+ */
+ public static boolean isVtEnabledByUser(Context context) {
+ int enabled = android.provider.Settings.Global.getInt(context.getContentResolver(),
+ android.provider.Settings.Global.VT_IMS_ENABLED,
+ ImsConfig.FeatureValueConstants.ON);
+ return (enabled == 1) ? true : false;
+ }
+
+ /**
+ * Change persistent VT enabled setting
+ */
+ public static void setVtSetting(Context context, boolean enabled) {
+ int value = enabled ? 1 : 0;
+ android.provider.Settings.Global.putInt(context.getContentResolver(),
+ android.provider.Settings.Global.VT_IMS_ENABLED, value);
+
+ ImsManager imsManager = ImsManager.getInstance(context,
+ SubscriptionManager.getDefaultVoicePhoneId());
+ if (imsManager != null) {
+ try {
+ ImsConfig config = imsManager.getConfigInterface();
+ config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE,
+ TelephonyManager.NETWORK_TYPE_LTE,
+ enabled ? ImsConfig.FeatureValueConstants.ON
+ : ImsConfig.FeatureValueConstants.OFF, null);
+
+ if (enabled) {
+ imsManager.turnOnIms();
+ } else if (context.getResources().getBoolean(
+ com.android.internal.R.bool.imsServiceAllowTurnOff) && (
+ !isVolteEnabledByPlatform(context)
+ || !isEnhanced4gLteModeSettingEnabledByUser(context))) {
+ log("setVtSetting() : imsServiceAllowTurnOff -> turnOffIms");
+ imsManager.turnOffIms();
+ }
+ } catch (ImsException e) {
+ loge("setVtSetting(): " + e);
+ }
+ }
+ }
+
/**
* Returns the user configuration of WFC setting
*/
if (imsManager != null) {
try {
ImsConfig config = imsManager.getConfigInterface();
- // FIXME: replace NETWORK_TYPE_LTE with NETWORK_TYPE_IWLAN
- // when available
config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI,
- TelephonyManager.NETWORK_TYPE_LTE,
+ TelephonyManager.NETWORK_TYPE_IWLAN,
enabled ? ImsConfig.FeatureValueConstants.ON
: ImsConfig.FeatureValueConstants.OFF, null);
private void setAdvanced4GMode(boolean turnOn) throws ImsException {
checkAndThrowExceptionIfServiceUnavailable();
- ImsConfig config = getConfigInterface();
- if (config != null) {
- config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE,
- TelephonyManager.NETWORK_TYPE_LTE, turnOn ? 1 : 0, null);
- if (isVtEnabledByPlatform(mContext)) {
- // TODO: once VT is available on platform replace the '1' with the current
- // user configuration of VT.
- config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE,
+ try {
+ ImsConfig config = getConfigInterface();
+ if (config != null) {
+ config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE,
TelephonyManager.NETWORK_TYPE_LTE, turnOn ? 1 : 0, null);
+ if (isVtEnabledByPlatform(mContext)) {
+ // TODO: once VT is available on platform replace the '1' with the current
+ // user configuration of VT.
+ config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE,
+ TelephonyManager.NETWORK_TYPE_LTE, turnOn ? 1 : 0, null);
+ }
}
+ } catch (ImsException e) {
+ log("setAdvanced4GMode() : " + e);
}
-
if (turnOn) {
turnOnIms();
} else if (getBooleanCarrierConfig(mContext,
}
@Override
- public void registrationConnected() {
+ public void registrationConnected(int imsRadioTech) {
+ // Note: imsRadioTech value maps to RIL_RADIO_TECHNOLOGY
+ // values in ServiceState.java.
if (DBG) {
- log("registrationConnected ::");
+ log("registrationConnected :: imsRadioTech=" + imsRadioTech);
}
if (mListener != null) {
}
@Override
- public void registrationProgressing() {
+ public void registrationProgressing(int imsRadioTech) {
+ // Note: imsRadioTech value maps to RIL_RADIO_TECHNOLOGY
+ // values in ServiceState.java.
if (DBG) {
- log("registrationProgressing ::");
+ log("registrationProgressing :: imsRadioTech=" + imsRadioTech);
}
if (mListener != null) {