2016-08-17 2 views
0

Во-первых, вот мой код для получения значений 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.

Почему это происходит? Что-то не так с моим кодом? Вышеприведенный код не имеет временных интервалов и будет продолжаться до того, как я закрою приложение.

ответ

0

В коде нет ничего плохого. Если вы проверите документы стандарта 3GPP, вы увидите, что разработчикам устройств предоставляется некоторая комната при сообщении RSRP с разбросом 16 дБ, то есть они должны быть в пределах +/- 8 дБ. Тот факт, что вы все еще в этом диапазоне, говорит мне, что ваш код, вероятно, прекрасен. Кроме того, запуск секретного кода в то же время, когда ваше приложение может дать вам противоречивые показания. То, что вы действительно должны сделать, это найти одно место, где вы получите постоянное чтение RSRP, используя секретный код телефонов (обязательно выключите LTE и Wifi, если они находятся на вас, вы получите помехи. Я знаю, что это противоречит интуиции, чтобы превратить ваш LTE, если вы пытаетесь получить LTE RSRP, но так оно и было разработано.). Как только вы получите хорошее чтение, снова включите LTE, но не отключайте Wifi (он все равно может помешать) и откройте приложение, чтобы получить от RSRP чтение. Если ваши RSRP-приложения находятся в пределах +/- 8 дБ RSRP, о которых сообщается в полевом режиме телефонов, тогда вы хороши.

Для вашей информации, здесь андроид приложение, которое я сделал, который захватывает RSRP среди других параметров LTE: https://github.com/parksjg/IndoorLTE3a

Смежные вопросы