CellSignalStrengthLte показывает значения в toString(), отличные от тех, что доступны для геттеров.

Класс CellSignalStrengthLte возвращает некоторые значения с toString(), которые не имеют ассоциированные геттеры.

Вот пример toString():

CellSignalStrengthLte: ss=12 rsrp=-114 rsrq=-11 rssnr=2147483647 cqi=2147483647 ta=2147483647

В классе есть 4 геттера: getAsuLevel(), getDbm(), getLevel(), getTimingAdvance() вот пример того, что возвращают эти значения:

dbm: -114
asuLvl: 26
lvl: 2
timing adv: 2147483647

Мы видим, что dbm совпадает с rsrp из toString(). И это timingAdvance совпадает с ta. Но ни одно из других значений не соответствует ничему, что напечатано с помощью toString()

Мой вопрос заключается в том, как мне получить доступ к другим значениям (в частности, ss, rsrq, rssnr), которые возвращаются toString() Я мог бы, конечно, получить значение из toString() и проанализировать его, чтобы получить интересующие меня значения, но это кажется обратным . Поскольку toString() — это строка, представляющая объект, наверняка должен быть какой-то другой способ получить доступ к этим значениям из объекта.


person FoamyGuy    schedule 19.05.2016    source источник


Ответы (1)


К сожалению, в CellSignalStrengthLte, чтобы получить эти дополнительные поля, вам придется проанализировать toString() или использовать отражение для прямого доступа к полям. Ни один из способов не рекомендуется для рабочих приложений.

Но вы можете получить обновления для PhoneStateListener.onSignalStrengthsChanged(SignalStrength), чтобы получить эти значения. Таким образом, вы можете использовать общедоступные API для получения информации о сигнале.

person Anonsage    schedule 23.05.2016