在我的Android应用程序中检测5G NR(SA / NSA)

问题描述 投票:1回答:1

我正在尝试检测5G网络。我使用电话管理器获取NETWORK_TYPE。即使我处于5G网络覆盖范围内,并且手机显示5G,也不会收到NETWORK_TYPE_NR。 NETWORK_TYPE始终为13,即LTE。电话工程服务模式显示与NR相关的数据。有什么方法可以检测NR(独立或非独立)模式?

我还需要获取NR数据的小区信息。我使用telephonyManager.getAllCellinfo(),但从未获得cellinfonr的实例。

感谢您的帮助。谢谢

android telephonymanager cellinfo 5g
1个回答
0
投票

几周前我遇到了同样的问题。就我而言,我想在Galaxy S20-5G上检测5G网络,但getDataNetworkType()始终返回13 NETWORK_TYPE_LTE。遵循netmonster-core策略,这是我从他们那里提取的代码来解决我的问题。

public boolean isNRConnected(TelephonyManager telephonyManager) {
    try {
        Object obj = Class.forName(telephonyManager.getClass().getName())
                .getDeclaredMethod("getServiceState", new Class[0]).invoke(telephonyManager, new Object[0]);
        // try extracting from string
        String serviceState = obj.toString();
        boolean is5gActive = serviceState.contains("nrState=CONNECTED") ||
                serviceState.contains("nsaState=5") ||
                (serviceState.contains("EnDc=true") &&
                        serviceState.contains("5G Allocated=true"));
        if (is5gActive) {
            return true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

这里是netmonster-core中的完整检测器类别:(DetectorLteAdvancedNrServiceState.kt

© www.soinside.com 2019 - 2024. All rights reserved.