Я разрабатываю простое приложение на android для определения значений уровня сигнала от сетей Wi-Fi и сотовой (GSM, UMTS, LTE). Получение мощности сигнала Wi-Fi работает хорошо, я получаю некоторые значения, которые меняются, поэтому я предполагаю, что это работает хорошо. Я думал, что добавление сервиса для приема сигналов сотовой связи будет простой копией вставки предыдущего решения, но в этом случае каждая реализованная система ячеек, такая как gsm, umts или lte, показывает мне значение 0. У вас есть какие-либо идеи, где может быть проблема? Какой-то слушатель нужен? Или отсутствие разрешений в манифесте?
Сервисный код Wi-Fi:
class WifiService (private val context: Context) : IMeasureService{
var dbm = -1
override fun getMeasuredValue(): Int {
val service= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
try {
val rssi = service.connectionInfo.rssi
dbm = rssi
}catch (e: SecurityException){
dbm = 0
Log.d("Wifi", "Wifi")
}finally {
return dbm
}
}
override fun getMeasurementType(): String {
return "WIFI"
}
Сервис для lte
class LteRsrp (private val context: Context) : IMeasureService{
var dbm = -1
@RequiresApi(Build.VERSION_CODES.O)
override fun getMeasuredValue(): Int {
val service = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
try {
val cellInfoLte = service.allCellInfo as CellInfoLte
val Rsrp = cellInfoLte.cellSignalStrength.rsrp
dbm = Rsrp
}catch (e: SecurityException){
dbm = 0
Log.d("Lte_rsrp", "Lte_rsrp")
}finally {
return dbm
}
}
override fun getMeasurementType(): String {
return "LTE_RSRP"
}