如何在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等: