как захватить параметры сети, такие как RSRP, SINR и т. д. для 5G в android. Могу ли я получить одновременно параметры LTE и 5G в режиме NSA?
Как работает двойной режим в android для 5G. Как API Android поддерживают эту функцию. Мне интересно, будем ли мы получать параметры сети LTE и 5G одновременно через разные API? Пожалуйста, помогите, если у кого-то есть ясность по этому поводу.
1 ответ
Существуют различные API-интерфейсы Android для получения радиочастотных параметров 4G и 5G (RSRP, RSRQ и SINR). Вы можете использовать CellSignalStrengthLte для получения радиочастотных параметров 4G, тогда как для 5G используйте CellSignalStrengthNr . Вот моя реализация этих библиотек. Вы можете использовать следующий код для вызова функции nrSignalStrengthInfo, которая возвращает параметры RF.
try {
if(Build.VERSION.SDK_INT >= 29){
val tm: TelephonyManager =
context.getSystemService(AppCompatActivity.TELEPHONY_SERVICE) as TelephonyManager
if (tm.signalStrength != null){
Log.i(TAG,"nrSignalStrengthInfo executed")
nrSignalStrengthInfo(tm.signalStrength)
}
}
}catch (e: Exception){
Log.e(TAG,e.stackTraceToString())
}
Это функция nrSignalStrengthInfo, которую вы будете вызывать.
private fun nrSignalStrengthInfo(signalStrength: SignalStrength?){
if (Build.VERSION.SDK_INT >= 29){
if (signalStrength != null) {
val lteSS = signalStrength.getCellSignalStrengths(CellSignalStrengthLte::class.java)
val nrSS = signalStrength.getCellSignalStrengths(CellSignalStrengthNr::class.java)
if (nrSS.isNotEmpty() && lteSS.isNotEmpty()) {
this.nrType = "NR_5G_NSA"
} else if (nrSS.isNotEmpty() && lteSS.isEmpty()) {
this.nrType = "NR_5G_SA"
}else{
this.nrType = ""
Log.i(TAG,"nrSS not available")
}
if (nrSS.isNotEmpty()) {
rsrp5g = nrSS[0].ssRsrp.toLong()
rsrq5g = nrSS[0].ssRsrq.toLong()
sinr5g = nrSS[0].ssSinr.toLong()
csiSinr = nrSS[0].csiSinr.toLong()
}else{
if(lteSS.isNotEmpty()){
rsrp = lteSS[0].rsrp.toDouble()
rsrq = lteSS[0].rsrq.toDouble()
}else{
rsrp = (-160).toDouble()
rsrq = (-30).toDouble()
}
rsrp5g = -160
rsrq5g = -30
sinr5g = -30
csiSinr = -30
pci5g = -1
bandsNr = "NA"
}
}
}
}
Надеюсь это поможет!!