欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新

Android12以上获取设备网络信号数据,所以让开发一款测信号

来源: 开发者 投稿于  被查看 13752 次 评论:86

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设备信号需求。

 

 

 

 

           

用户评论