Android12以上获取设备网络信号数据
公司有很多物联网设备,关键的信号参数是RSRP,总有些地方信号差,不适合安装。所以让开发一款测信号的app,用于现场的同事在判定是否符合设备信号条件,再考虑安装设备。
由于与开发过程中使用的是Android sdk33,版本太高,网上搜到的很多旧的方法已经弃用,用起来也比较麻烦。
自己捣鼓了半天使用的新方法,话不多说直接上我的代码
@RequiresApi(Build.VERSION_CODES.S) fun getMobileNetworkSignal(context: Context): NetworkSignal { val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager //获取运营商 val simOperatorName = telephonyManager.simOperatorName //获取当前网络信息 val signalStrength = telephonyManager.signalStrength?.cellSignalStrengths // val signalStrengthGsm = telephonyManager.signalStrength?.getCellSignalStrengths(CellSignalStrengthGsm::class.java) // val signalStrengthLte = telephonyManager.signalStrength?.getCellSignalStrengths(CellSignalStrengthLte::class.java) // val signalStrengthWcdma = telephonyManager.signalStrength?.getCellSignalStrengths(CellSignalStrengthWcdma::class.java) networkSignal = NetworkSignal(signalStrength.toString(), simOperatorName) return networkSignal }
1、显示获取TelephonyManager实例,
2、直接调方法telephonyManager.simOperatorName,获取运营商
3、telephonyManager.signalStrength?.cellSignalStrengths,返回正在使用的网络信息列表
4、至于telephonyManager.signalStrength?.getCellSignalStrengths(CellSignalStrengthGsm::class.java),则是获取Gsm这种通讯协议的网络信息,没有的话就返回的是空列表,
也可以指定其他通讯,有下面这些
最后附上运行效果图
可以看到RSRP是-98,符合NB设备信号需求。
分类:
Android
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee