我正在尝试使用 Android API 检测三星 S20(T-Mobile)上的 5G Nr 小区信息
CellIdentityNr https://developer.android.com/reference/android/telephony/CellIdentityNr.html 和
CellSignalStrengthNr https://developer.android.com/reference/android/telephony/CellSignalStrengthNr
这是我检测单元格信息的代码:
try {
if (cellInfo instanceof CellInfoGsm) {
CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo;
logGSMCellInfo(cellInfoGsm, allCellInfoProps);
} else if (cellInfo instanceof CellInfoLte) {
CellInfoLte cellInfoLte = (CellInfoLte) cellInfo;
logLTECellInfo(cellInfoLte, allCellInfoProps);
} else if (cellInfo instanceof CellInfoCdma) {
CellInfoCdma cellInfoCdma = (CellInfoCdma) cellInfo;
logCDMACellInfo(cellInfoCdma, allCellInfoProps);
} else if (cellInfo instanceof CellInfoWcdma) {
CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo;
logWCDMACellInfo(cellInfoWcdma, allCellInfoProps);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (cellInfo instanceof CellInfoTdscdma) {
CellInfoTdscdma cellInfoTdscdma = (CellInfoTdscdma) cellInfo;
logTDSCDMACellInfo(cellInfoTdscdma, allCellInfoProps);
} else if (cellInfo instanceof CellInfoNr) {
CellInfoNr cellInfoNr = (CellInfoNr) cellInfo;
logNrCellInfo(cellInfoNr, allCellInfoProps);
}
}
collectionOfCellInfo.add(allCellInfoProps);
} catch (Exception e) {
Log.e(TAG, "getLatestCellInfoAsCollection: Exception=" + e.getMessage());
e.printStackTrace();
}
问题是,即使手机在顶部栏中显示 5G 指示 5G 连接,当我应该获得 Nr 时,我也会获得 WCDMA 小区信息。
从这个链接中,我收集到 CellInfoNr 对象仅在 NR-SA 设备上收集,这可以解释为什么我无法在其他手机上获取 Nr 信息。但是为什么我在三星 S20 上没有得到它? 在我的 Android 应用程序中检测 5G NR (SA/NSA)
是代码有问题,还是因为可用的5G网络模式导致这个问题?
另外如何确认我的 S20 处于“独立 (5G)”模式?