android 10以上版本5G信号TAC、PCI等数据获取
android 10以上版本5G信号TAC、PCI、RSRP、RSRQ、SINR等数据获取
- 前言
- 一、TAC、PCI数据获取
- 二、RSRP、RSRQ、SINR数据获取
前言
之前有个APP用到了获取TAC、PCI、RSRP、RSRQ、SINR等信息,4G网络已经适配过,但是5G信号的情况下会报错,发现是5G信号下,获取的方式变了,但是查了许多相关资料,也没找到相关方法,最后没办法只能看相关源码了,最后在源码里找到了相关方法,用反射获取到了,在这记录下
一、TAC、PCI数据获取
以下CellIdentityNr 也能获取到RSRP、RSRQ、SINR,但是获取到的数据不对,需要用第二点里面的方式获取
//telephonyManager 自己创建一个哈,就不写了
List<CellInfo> allCellInfo = telephonyManager.getAllCellInfo();
if (allCellInfo != null && allCellInfo.size() > 0) {CellInfo info = allCellInfo.get(0);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {// 5Gif (info instanceof CellInfoNr) {CellIdentityNr nr = (CellIdentityNr) ((CellInfoNr) info).getCellIdentity();CellSignalStrengthNr nrStrength = (CellSignalStrengthNr) ((CellInfoNr) info).getCellSignalStrength();nr.getTac();nr.getPci();Log.i("nrgsm", "CellIdentityNr-" + nr.toString());}}
}
二、RSRP、RSRQ、SINR数据获取
//获取TelephonyManager
TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int mPhoneRatType = mTelephonyManager.getNetworkType();
//创建监听
PhoneStateListener mPhoneStateListener = new PhoneStateListener() {private String[] mPara = null;@SuppressWarnings("unchecked")@Overridepublic void onSignalStrengthsChanged(SignalStrength sStrength) {if (mPhoneRatType == TelephonyManager.NETWORK_TYPE_NR) {/* 5G状态下获取 */try {Class<?> obj = Class.forName("android.telephony.SignalStrength");Method method = obj.getDeclaredMethod("getCellSignalStrengths");method.setAccessible(true);List<CellSignalStrength> cellListStrengths = (List<CellSignalStrength>) method.invoke(sStrength);if (cellListStrengths != null && cellListStrengths.size() > 0) {for (CellSignalStrength o : cellListStrengths) {if (o instanceof CellSignalStrengthNr) {CellSignalStrengthNr nr = (CellSignalStrengthNr) o;nr.getSsRsrp();nr.getSsRsrq();nr.getSsSinr();}}}// System.out.println(field.getName()+":"+field.get(obj.newInstance()));} catch (Exception e) {e.printStackTrace();}return;}if (mPhoneRatType == TelephonyManager.NETWORK_TYPE_LTE) {/* 4G状态下获取 */try {(Integer) sStrength.getClass().getMethod("getLteRsrp").invoke(sStrength);//LteRsrp(Integer) sStrength.getClass().getMethod("getLteRsrq").invoke(sStrength);//LteRsrq(Integer) sStrength.getClass().getMethod("getLteRssnr").invoke(sStrength);//LteRssnr// serverCellInfo.cqi = (Integer) sStrength.getClass()// .getMethod("getLteCqi").invoke(sStrength);} catch (Exception e) {e.printStackTrace();}return;}/* 其他状态下获取 */int mGSMSignal = sStrength.getGsmSignalStrength();String[] mPara = sStrength.toString().split(" ");Integer.parseInt(mPara[9]);//RSRPtry {Field f = SignalStrength.class.getDeclaredField("mLteRsrq");Field f2 = SignalStrength.class.getDeclaredField("mLteRssnr");// mLteSignalStrenthf.setAccessible(true);f2.setAccessible(true);Integer.parseInt(f.get(sStrength).toString());//RSRQ int rsinr = Integer.parseInt(f2.get(sStrength).toString());//SINR//适配华为个别手机if (!Build.MODEL.contains("HUAWEI MT7")&& !Build.MODEL.contains("HUAWEI P7")&& !Build.MODEL.contains("HUAWEI D2")&& !Build.MODEL.contains("HUAWEI MT2")) {mLTESINR = rsinr % 10 != 0 ? rsinr / 10: (rsinr / 10) + 1;}int tempSinr = (Integer) sStrength.getClass().getMethod("getLteRssnr").invoke(sStrength);} catch (Exception e) {e.printStackTrace();}}};
// 开始监听
if (mTelephonyManager != null) {mTelephonyManager.listen(mPhoneStateListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
android 10以上版本5G信号TAC、PCI等数据获取相关推荐
- android增加5G热点,运营商甘拜下风:Android 11将划分5G信号新层次
原标题:运营商甘拜下风:Android 11将划分5G信号新层次 5G市场的发展给我们带来了不少的影响,并且目前5G也已经正式进入商用阶段,各电信运营商相对应的都推出了体验5G套餐的服务.但我们手机上 ...
- android 10.0版本合入GMS包
gms包集成步骤: (1) 需要下载对应gms,国内需要通过VPN下载.下载后解压,文件目录:partner_gms.下载时,最好核对一下匹配的android版本. (2)依照路径打开gms.mk/g ...
- 谷歌开发者大会焦点:大中华区新掌门亮相,Android 10原生支持5G,TF2.0大更新...
新智元报道 编辑:鹏飞.大明.张佳 [新智元导读]为期两天的2019谷歌开发者大会刚刚落下帷幕,谷歌推出了最新的Android 10.TensorFlow 2.0.Flutter 1.9等产品 ...
- Android 10 正式版本或将于 9 月 3 日推出
根据 phonearena 的报道,他们向两位谷歌支持团队的成员分别确认 Android 10 的发布日期,得到的答复都是 2019 年 9 月 3 日.也就是说,如果信息准确无误的话,Android ...
- 谷歌开发者大会焦点:TensorFlow.js可制作微信小程序,Android 10原生支持5G,TF2.0大更新...
2016 年谷歌开发者大会在中国首次举办,2017 年谷歌宣布成立"AI 中国研发中心",2018年谷歌的"AI+小程序"的产物"猜画小歌" ...
- Android 10 原生支持 5G!
在美国时间9月3日,谷歌发布了Android 10正式版,经过了一年多的开发和早期使用者的数个月的测试,Android10正式版终于发布了,其聚焦移动创新.安全隐私和数字健康, 具体体现为: 移动创新 ...
- 浅谈android应用之版本特性
文章目录 1. 前言 2. 版本介绍 2.1 Android 2.2 Froyo 2.2 Android 3.0 Honeycomb 2.3 Android 4.0 Ice Cream Sandwic ...
- Android10剪贴板,剪纸堆 Clip Stack - 轻量级剪贴板管理程序(支持 Android 10)
编辑点评 剪贴板的历史记录这么看 剪纸堆 Clip Stack - 轻量级剪贴板管理程序(支持 Android 10) 介绍 剪纸堆 Clip Stack - 轻量级剪贴板管理程序(支持 Androi ...
- Android 10.0 系统服务之ActivityMnagerService-AMS启动流程-[Android取经之路]
摘要:上一节我们讲完了SystemServer的启动过程,这一节接着上一节的步骤,来讲解ActivityManagerService的启动过程. ActivityManagerService简称AMS ...
最新文章
- 从高铁事故到软件系统的可靠性
- 表格中的border-spacing与border
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
- 编译安装php之安装libiconv-1.14.tar.gz出错解决方法
- 那个好好玩的特效,每个人都可以做到哦
- python数据抓取课程_Python爬虫入门教程 21-100 网易云课堂课程数据抓取
- 使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...
- 提高计算机水平的小技巧,五大电脑小技巧
- css3中的变形(transform)、过渡(transtion)、动画(animation)
- 语音的基本概念--译自CMU sphinx
- Swift 全功能的绘图板开发
- c 语言中 %是什么运算符,C 语言基础----详解C中的运算符
- 使用markdown编辑器(自用,没内容。。)
- python字符串转整数_Python连接字符串和整数
- Spring——Java程序员的春天
- TypeError: Fetch argument has invalid type class ‘numpy.float32‘, must be a string or Tensor
- dom影像图形成数字地形图_数字地形图等高线怎么生成(海地软件地形图数字化高层数据层怎么选择,在哪里...)...
- 详解 http-server的安装和使用
- NNI speedup_model()代码笔记
- COBOL语法和文法(2)