如何在telephonymanager android中读取cellInfo中的数据
我试图制作一个程序,读取通常的信号电平和其他类似的内容,并将其提供给读者,我使用了如何在telephonymanager android中读取cellInfo中的数据,android,telephony,telephonymanager,cellinfo,Android,Telephony,Telephonymanager,Cellinfo,我试图制作一个程序,读取通常的信号电平和其他类似的内容,并将其提供给读者,我使用了getAllCellInfo() 虽然它有一些数据,但我无法找到一种方法来提取其中的数据,使其易于阅读。 我尝试了.toString()方法,但结果相同 List<CellInfo> cell= tm.getAllCellInfo(); List cell=tm.getAllCellInfo(); 有没有一种方法可以让人容易阅读?还是有更简单的方法获取这些数据 我正在寻找RSSI和电源相关参数。您
getAllCellInfo()
虽然它有一些数据,但我无法找到一种方法来提取其中的数据,使其易于阅读。
我尝试了.toString()
方法,但结果相同
List<CellInfo> cell= tm.getAllCellInfo();
List cell=tm.getAllCellInfo();
有没有一种方法可以让人容易阅读?还是有更简单的方法获取这些数据
我正在寻找RSSI和电源相关参数。您可以使用CellInfoLte、CellInfoGsm来获取Dbm、AsuLevel、Level等
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();
List cellInfos=tel.getAllCellInfo();
for(CellInfo-varcell:cellInfos){
if(CellInfoLte的varcell实例){
CellInfoLte CellInfoLte=(CellInfoLte)varcell;
CellSignalStrengthLte CellSignalStrengthLte=(CellSignalStrengthLte)cellInfoLte.getCellSignalStrength();
int Dbm=cellSignalStrengthLte.getDbm();
int Asu=cellSignalStrengthLte.getasurevel();
int-Level=cellSignalStrengthLte.getLevel();
int vci=cellInfoLte.getcellnidentity().getCi();
以下是我所做的:
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);
}
}
然后我可以打印我需要的部分数组元素。这里我得到了PCI。然后只是为了快速检查,用Log.d(“TAG”,“PCI是”+cellPci);
打印它,并在logcat中查看它
您可以在我的github上查看我的应用程序,该应用程序可获取LTE RSRP、RSRQ、PCI等: