Как читать данные внутри 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();