Во-первых, вот мой код для получения значений lte rsrp (или других). Эта часть кода запускается на другой aysncTask.Android pulling LTE RSRP value
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int tempInt;
while (isRunning) {
try {
List<CellInfo> cellInfoList = tm.getAllCellInfo();
if (cellInfoList != null && cellInfoList.size() != 0) {
msg = handler.obtainMessage();
CellInfo cellInfo = cellInfoList.get(0);
result = -9999;
tempInt = 0;
if (cellInfo instanceof CellInfoWcdma) {
result = ((CellInfoWcdma) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "3G : " + result + "");
} else if (cellInfo instanceof CellInfoLte) {
result = ((CellInfoLte) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "LTE : " + result);
} else if (cellInfo instanceof CellInfoGsm) {
result = ((CellInfoGsm) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "GSM" + result);
} else if (cellInfo instanceof CellInfoCdma) {
result = ((CellInfoCdma) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "CDMA" + result);
}
.....
Проблема заключается в том, что я не уверен, что данные я получаю правильно.
Пока я запускаю этот источник на фоне, чтобы увидеть значение rsrp, я запускаю скрытое меню своего LG G3 с помощью команды * 123456 #. Он показывает режим отладки, показывающий значение rsrp в реальном времени.
Проблема в том, что rsrp я попал в журнал своего приложения, а в скрытом меню в большинстве случаев различен. Мое приложение показывает примерно -3 ~ +3.
Почему это происходит? Что-то не так с моим кодом? Вышеприведенный код не имеет временных интервалов и будет продолжаться до того, как я закрою приложение.