我正在尝试检测5G网络。我使用电话管理器获取NETWORK_TYPE。即使我在5G网络覆盖范围内,并且我的手机显示5G,我也无法获得NETWORK_TYPE_NR。NETWORK_TYPE总是13,即LTE。电话工程服务模式显示NR相关数据。有没有办法检测NR (独立或非独立)模式?
我还需要获取NR数据的Cell Information。我使用telephonyManager.getAllCellinfo(),但是我从来没有得到过cellinfonr的实例。
任何帮助都是非常感谢的。谢谢
发布于 2020-06-17 16:00:56
几周前我也遇到过同样的问题。在我的例子中,我想在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)
https://stackoverflow.com/questions/62332475
复制相似问题