diff --git a/services/core/java/com/android/server/connectivity/DataConnectionStats.java b/services/core/java/com/android/server/connectivity/DataConnectionStats.java index 5010e46a74eb1..3e619200d4146 100644 --- a/services/core/java/com/android/server/connectivity/DataConnectionStats.java +++ b/services/core/java/com/android/server/connectivity/DataConnectionStats.java @@ -50,6 +50,7 @@ public class DataConnectionStats extends BroadcastReceiver { private SignalStrength mSignalStrength; private ServiceState mServiceState; private int mDataState = TelephonyManager.DATA_DISCONNECTED; + private int mNrState = NetworkRegistrationInfo.NR_STATE_NONE; public DataConnectionStats(Context context, Handler listenerHandler) { mContext = context; @@ -99,6 +100,11 @@ public class DataConnectionStats extends BroadcastReceiver { mServiceState.getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN); int networkType = regInfo == null ? TelephonyManager.NETWORK_TYPE_UNKNOWN : regInfo.getAccessNetworkTechnology(); + // If the device is in NSA NR connection the networkType will report as LTE. + // For cell dwell rate metrics, this should report NR instead. + if (mNrState == NetworkRegistrationInfo.NR_STATE_CONNECTED) { + networkType = TelephonyManager.NETWORK_TYPE_NR; + } if (DEBUG) Log.d(TAG, String.format("Noting data connection for network type %s: %svisible", networkType, visible ? "" : "not ")); try { @@ -153,6 +159,7 @@ public class DataConnectionStats extends BroadcastReceiver { @Override public void onServiceStateChanged(ServiceState state) { mServiceState = state; + mNrState = state.getNrState(); notePhoneDataConnectionState(); }