Для решения этого вопроса я создал приложение под названием Signal Strength Detector с исходным кодом на GitHub . По моему прошлому опыту, некоторые устройства под управлением Android ICS 4.0 и выше имеют метод getLevel
для SignalStrength
, который возвращает целое число от 0 до 4, указывающее уровень сигнала. На некоторых других устройствах LTE (я не верю, что HTC Thunderbolt), есть некоторые методы, такие как getLteCqi
getLteRsrp
getLteRsrq
и getLteRssnr
, которые я оставлю вам, чтобы определить, как использовать эти значения для расчета сигнала прочность. Наконец, я обнаружил, что на некоторых устройствах (я думаю, что HTC Thunderbolt) уровень сигнала LTE фактически сообщается с помощью методов, помеченных как уровень сигнала GSM! Это безумие, но это правда. Не стесняйтесь загружать детектор силы сигнала и проверять результаты на своем устройстве и / или изменять код по мере необходимости.
В качестве дополнительного примечания вам нужно будет использовать Reflection для доступа к этим методам, и я снова предоставлю вам определение того, как наилучшим образом реализовать это. Это довольно просто, но вам нужно сделать много попыток, чтобы определить, присутствует ли метод, а иногда setAccessible(true)
, просто чтобы игнорировать любые проблемы с закрытыми методами.
Надеюсь, это поможет!