Add logic for 5G icon to SIM status dialog

Test: manual test with fake 5G data network type
Bug: 156815536
Change-Id: I764f4ade8032511b44098e7eccb19b909fccc717
Merged-In: I764f4ade8032511b44098e7eccb19b909fccc717
This commit is contained in:
Sarah Chin
2020-06-05 16:29:21 -07:00
parent 92eb12c0e2
commit de62ae7ff4

View File

@@ -40,6 +40,7 @@ import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo; import android.telephony.UiccCardInfo;
import android.telephony.euicc.EuiccManager; import android.telephony.euicc.EuiccManager;
@@ -136,6 +137,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
}; };
private SubscriptionInfo mSubscriptionInfo; private SubscriptionInfo mSubscriptionInfo;
private TelephonyDisplayInfo mTelephonyDisplayInfo;
private final int mSlotIndex; private final int mSlotIndex;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
@@ -267,7 +269,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
mTelephonyManager.listen(mPhoneStateListener, mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_SERVICE_STATE); | PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
mSubscriptionManager.addOnSubscriptionsChangedListener( mSubscriptionManager.addOnSubscriptionsChangedListener(
mContext.getMainExecutor(), mOnSubscriptionsChangedListener); mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId()); registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
@@ -457,6 +460,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
} }
private void updateNetworkType() { private void updateNetworkType() {
// TODO: all of this should be based on TelephonyDisplayInfo instead of just the 5G logic
if (mSubscriptionInfo == null) { if (mSubscriptionInfo == null) {
final String unknownNetworkType = final String unknownNetworkType =
getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN); getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN);
@@ -471,6 +475,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
final int subId = mSubscriptionInfo.getSubscriptionId(); final int subId = mSubscriptionInfo.getSubscriptionId();
final int actualDataNetworkType = mTelephonyManager.getDataNetworkType(); final int actualDataNetworkType = mTelephonyManager.getDataNetworkType();
final int actualVoiceNetworkType = mTelephonyManager.getVoiceNetworkType(); final int actualVoiceNetworkType = mTelephonyManager.getVoiceNetworkType();
final int overrideNetworkType = mTelephonyDisplayInfo == null
? TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE
: mTelephonyDisplayInfo.getOverrideNetworkType();
if (TelephonyManager.NETWORK_TYPE_UNKNOWN != actualDataNetworkType) { if (TelephonyManager.NETWORK_TYPE_UNKNOWN != actualDataNetworkType) {
dataNetworkTypeName = getNetworkTypeName(actualDataNetworkType); dataNetworkTypeName = getNetworkTypeName(actualDataNetworkType);
} }
@@ -478,6 +486,12 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
voiceNetworkTypeName = getNetworkTypeName(actualVoiceNetworkType); voiceNetworkTypeName = getNetworkTypeName(actualVoiceNetworkType);
} }
if (overrideNetworkType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE
|| overrideNetworkType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA) {
dataNetworkTypeName = "NR NSA";
voiceNetworkTypeName = "NR NSA";
}
boolean show4GForLTE = false; boolean show4GForLTE = false;
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
if (carrierConfig != null) { if (carrierConfig != null) {
@@ -692,6 +706,12 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
updateServiceState(serviceState); updateServiceState(serviceState);
updateRoamingStatus(serviceState); updateRoamingStatus(serviceState);
} }
@Override
public void onDisplayInfoChanged(@NonNull TelephonyDisplayInfo displayInfo) {
mTelephonyDisplayInfo = displayInfo;
updateNetworkType();
}
}; };
} }
@@ -737,7 +757,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
// case TelephonyManager.NETWORK_TYPE_LTE_CA: // case TelephonyManager.NETWORK_TYPE_LTE_CA:
// return "LTE_CA"; // return "LTE_CA";
case TelephonyManager.NETWORK_TYPE_NR: case TelephonyManager.NETWORK_TYPE_NR:
return "NR"; return "NR SA";
default: default:
return "UNKNOWN"; return "UNKNOWN";
} }