Merge "[Settings] Replace VT and VOLTE provisioning API"
This commit is contained in:
@@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.ims.ProvisioningManager;
|
||||
import android.telephony.ims.feature.MmTelFeature;
|
||||
import android.telephony.ims.stub.ImsRegistrationImplBase;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
@@ -50,6 +53,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
@VisibleForTesting
|
||||
ImsManager mImsManager;
|
||||
private PhoneCallStateListener mPhoneStateListener;
|
||||
@VisibleForTesting
|
||||
Integer mCallState;
|
||||
private final List<On4gLteUpdateListener> m4gLteListeners;
|
||||
|
||||
protected static final int MODE_NONE = -1;
|
||||
@@ -70,7 +75,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
return this;
|
||||
}
|
||||
mSubId = subId;
|
||||
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
|
||||
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
||||
.createForSubscriptionId(mSubId);
|
||||
mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
|
||||
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
||||
@@ -86,6 +92,11 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
return this;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
ProvisioningManager getProvisioningManager(int subId) {
|
||||
return ProvisioningManager.createForSubscriptionId(subId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus(int subId) {
|
||||
init(subId);
|
||||
@@ -96,7 +107,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
final boolean isVisible = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
&& mImsManager != null && carrierConfig != null
|
||||
&& mImsManager.isVolteEnabledByPlatform()
|
||||
&& mImsManager.isVolteProvisionedOnDevice()
|
||||
&& isVolteProvisionedOnDevice(mSubId)
|
||||
&& MobileNetworkUtils.isImsServiceStateReady(mImsManager)
|
||||
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL);
|
||||
return isVisible
|
||||
@@ -159,13 +170,26 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
|
||||
private boolean isPrefEnabled() {
|
||||
return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
&& mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE
|
||||
&& (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE)
|
||||
&& mImsManager != null
|
||||
&& mImsManager.isNonTtyOrTtyOnVolteEnabled()
|
||||
&& mCarrierConfig.getBoolean(
|
||||
CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);
|
||||
}
|
||||
|
||||
private boolean isVolteProvisionedOnDevice(int subId) {
|
||||
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
return true;
|
||||
}
|
||||
final ProvisioningManager provisioningMgr = getProvisioningManager(subId);
|
||||
if (provisioningMgr == null) {
|
||||
return true;
|
||||
}
|
||||
return provisioningMgr.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
|
||||
}
|
||||
|
||||
private class PhoneCallStateListener extends PhoneStateListener {
|
||||
|
||||
public PhoneCallStateListener(Looper looper) {
|
||||
@@ -174,15 +198,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
||||
|
||||
@Override
|
||||
public void onCallStateChanged(int state, String incomingNumber) {
|
||||
mCallState = state;
|
||||
updateState(mPreference);
|
||||
}
|
||||
|
||||
public void register(int subId) {
|
||||
mSubId = subId;
|
||||
Enhanced4gBasePreferenceController.this.mSubId = subId;
|
||||
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE);
|
||||
}
|
||||
|
||||
public void unregister() {
|
||||
mCallState = null;
|
||||
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
}
|
||||
|
@@ -27,6 +27,9 @@ import android.net.Uri;
|
||||
import android.os.PersistableBundle;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.ims.ProvisioningManager;
|
||||
import android.telephony.ims.feature.MmTelFeature;
|
||||
import android.telephony.ims.stub.ImsRegistrationImplBase;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
@@ -122,7 +125,7 @@ public class Enhanced4gLteSliceHelper {
|
||||
final ImsManager imsManager = getImsManager(subId);
|
||||
|
||||
if (!imsManager.isVolteEnabledByPlatform()
|
||||
|| !imsManager.isVolteProvisionedOnDevice()) {
|
||||
|| !isVolteProvisionedOnDevice(subId)) {
|
||||
Log.d(TAG, "Setting is either not provisioned or not enabled by Platform");
|
||||
return null;
|
||||
}
|
||||
@@ -188,6 +191,11 @@ public class Enhanced4gLteSliceHelper {
|
||||
return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
ProvisioningManager getProvisioningManager(int subId) {
|
||||
return ProvisioningManager.createForSubscriptionId(subId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles Enhanced 4G LTE mode setting change from Enhanced 4G LTE slice and posts
|
||||
* notification. Should be called when intent action is ACTION_ENHANCED_4G_LTE_CHANGED
|
||||
@@ -199,8 +207,7 @@ public class Enhanced4gLteSliceHelper {
|
||||
|
||||
if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
final ImsManager imsManager = getImsManager(subId);
|
||||
if (imsManager.isVolteEnabledByPlatform()
|
||||
&& imsManager.isVolteProvisionedOnDevice()) {
|
||||
if (imsManager.isVolteEnabledByPlatform() && isVolteProvisionedOnDevice(subId)) {
|
||||
final boolean currentValue = imsManager.isEnhanced4gLteModeSettingEnabledByUser()
|
||||
&& imsManager.isNonTtyOrTtyOnVolteEnabled();
|
||||
final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||
@@ -278,5 +285,15 @@ public class Enhanced4gLteSliceHelper {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
|
||||
}
|
||||
|
||||
private boolean isVolteProvisionedOnDevice(int subId) {
|
||||
final ProvisioningManager provisioningMgr = getProvisioningManager(subId);
|
||||
if (provisioningMgr == null) {
|
||||
return true;
|
||||
}
|
||||
return provisioningMgr.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.ims.ProvisioningManager;
|
||||
import android.telephony.ims.feature.MmTelFeature;
|
||||
import android.telephony.ims.stub.ImsRegistrationImplBase;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
@@ -133,6 +136,24 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
|
||||
return isVideoCallEnabled(subId, imsManager);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
ProvisioningManager getProvisioningManager(int subId) {
|
||||
return ProvisioningManager.createForSubscriptionId(subId);
|
||||
}
|
||||
|
||||
private boolean isVtProvisionedOnDevice(int subId) {
|
||||
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
return true;
|
||||
}
|
||||
final ProvisioningManager provisioningMgr = getProvisioningManager(subId);
|
||||
if (provisioningMgr == null) {
|
||||
return true;
|
||||
}
|
||||
return provisioningMgr.getProvisioningStatusForCapability(
|
||||
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO,
|
||||
ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isVideoCallEnabled(int subId, ImsManager imsManager) {
|
||||
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
|
||||
@@ -142,7 +163,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
|
||||
}
|
||||
return carrierConfig != null && imsManager != null
|
||||
&& imsManager.isVtEnabledByPlatform()
|
||||
&& imsManager.isVtProvisionedOnDevice()
|
||||
&& isVtProvisionedOnDevice(subId)
|
||||
&& MobileNetworkUtils.isImsServiceStateReady(imsManager)
|
||||
&& (carrierConfig.getBoolean(
|
||||
CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
|
||||
@@ -167,7 +188,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
|
||||
}
|
||||
|
||||
public void register(int subId) {
|
||||
mSubId = subId;
|
||||
VideoCallingPreferenceController.this.mSubId = subId;
|
||||
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user