android - 在我的 Android 应用程序中检测 5G NR (SA/NSA)
问题描述
我正在尝试检测 5G 网络。我使用电话管理器获取NETWORK_TYPE。即使我在 5G 网络覆盖范围内并且我的手机显示 5G,我也没有得到 NETWORK_TYPE_NR。NETWORK_TYPE 始终为 13,即 LTE。电话工程服务模式显示 NR 相关数据。有什么方法可以检测 NR(独立或非独立)模式?
我还需要获取 NR 数据的单元信息。我使用telephonyManager.getAllCellinfo(),但我从来没有得到cellinfonr的实例。
任何帮助表示赞赏。谢谢
解决方案
几周前我遇到了同样的问题。就我而言,我想在 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 )
推荐阅读
- database - 使用 Laravel 将数据库导出为 JSON 超出内存限制
- javascript - Js访问内部有2个元素的对象
- php - 借助 id 更新 db 中的值
- python - Tensorflow2.4,model_main_tf2.py,训练时的chechpoint问题
- reactjs - Microsoft Graph Toolkit 和 Fluent UI 样式之间的兼容性
- javascript - JS / CSS:覆盖网站内部的 MAGNIFIED-macOS-CURSOR
- audio - 如何在 json ot txt 中使用 ffmpeg 获得音频峰值?
- c# - 有什么方法可以让部分类的不同方法在不同文件夹之间拆分并使用正确的命名空间约定?
- video - 当我上传新视频时,它返回“无功能条款匹配”错误
- javascript - Javascript:在不使用异步等待的情况下等待承诺