Как читать данные внутри CellInfo в Android-телефонии

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

List<CellInfo> cell=  tm.getAllCellInfo();

Есть ли способ сделать легко читабельным? Или есть более простой способ получить эти данные?

Я ищу RSSI и параметры питания.

2 ответа

Вот что я сделал:

    protected class SignalStrengthListener extends PhoneStateListener {
        @Override
        public void onSignalStrengthsChanged(android.telephony.SignalStrength signalStrength) {

            tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

            ltestr = signalStrength.toString();
            parts = ltestr.split(" ");

            try {
                cellInfoList = tm.getAllCellInfo();
                for (CellInfo cellInfo : cellInfoList) {

                    if (cellInfo instanceof CellInfoLte) {
                        // cast to CellInfoLte and call all the CellInfoLte methods you need
                        // Gets the LTE PCI: (returns Physical Cell Id 0..503, Integer.MAX_VALUE if unknown)

                       cellPci = ((CellInfoLte) cellInfo).getCellIdentity().getPci();
                    }
                }
            } catch (Exception e) {
                Log.d("SignalStrength", "Exception: " + e.getMessage());
            }

            super.onSignalStrengthsChanged(signalStrength);
        }
}

Тогда я могу распечатать parts элемент массива, который мне нужен. Здесь я получаю PCI. Тогда просто для быстрой проверки распечатайте его с Log.d("TAG", "PCI is " + cellPci); и смотреть на это в logcat.

Вы можете проверить мое приложение, которое получает LTE RSRP, RSRQ, PCI и т. Д. На моем github: https://github.com/parksjg/IndoorLTE3a

Вы можете попробовать это с CellInfoLte, CellInfoGsm, чтобы получить Dbm, AsuLevel, Level ..etc

 List<CellInfo> cellInfos=tel.getAllCellInfo();


       for (CellInfo varcell:cellInfos){

           if (varcell instanceof CellInfoLte){

                CellInfoLte cellInfoLte=(CellInfoLte)varcell;

               CellSignalStrengthLte cellSignalStrengthLte=(CellSignalStrengthLte)cellInfoLte.getCellSignalStrength();

              int Dbm= cellSignalStrengthLte.getDbm();
              int Asu= cellSignalStrengthLte.getAsuLevel();
               int Level= cellSignalStrengthLte.getLevel();


               int vci=cellInfoLte.getCellIdentity().getCi();
Другие вопросы по тегам