公司有很多物聯網裝置,關鍵的訊號引數是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裝置訊號需求。