3

我正在尝试使用 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)”模式?

4

1 回答 1

0

Hashim - 我可以确定网络是否与下面的代码连接 - 但我无法弄清楚如何让 CellInfoNR 获得 5G 信号强度。

您是否知道如何让 CellInfoNR 获取有关 5G 连接的所有详细信息?

telephonyManager.listen(new CustomPhoneStateListener(c),PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);

然后这是课程:

public class CustomPhoneStateListener extends PhoneStateListener {

Context context;

CustomPhoneStateListener(Context c) {
    this.context = c;
}

@Override
public void onDisplayInfoChanged(@NonNull TelephonyDisplayInfo telephonyDisplayInfo) {
    if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    } else {
        super.onDisplayInfoChanged(telephonyDisplayInfo);
        if (telephonyDisplayInfo.getOverrideNetworkType() == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA) {
            //do something
        }
        if (telephonyDisplayInfo.getOverrideNetworkType() == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE) {
            //do something else
        }
    }

}

}

于 2021-02-21T20:13:05.993 回答