首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在telephonymanager中读取cellInfo中的数据

如何在telephonymanager中读取cellInfo中的数据
EN

Stack Overflow用户
提问于 2015-11-24 21:42:52
回答 2查看 2.3K关注 0票数 3

我正在尝试编写一个程序来读取通常的信号电平和其他类似的内容,并将其提供给阅读器,我使用了getAllCellInfo(),而它有一些数据,我想不出一种方法来提取其中的数据,使其易于阅读。我尝试了.toString()方法,但它给出了相同的结果

代码语言:javascript
复制
List<CellInfo> cell=  tm.getAllCellInfo();

有没有一种方法可以让它易于阅读?或者有没有一种更简单的方法来获取这些数据?

我正在寻找RSSI和电源相关的参数。

EN

回答 2

Stack Overflow用户

发布于 2017-05-06 00:49:40

以下是我所做的工作:

代码语言:javascript
复制
    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中观察它。

你可以在我的github上查看我的应用程序,它可以获取LTE RSRP、RSRQ、PCI等:https://github.com/parksjg/IndoorLTE3a

票数 2
EN

Stack Overflow用户

发布于 2016-01-20 11:15:15

您可以尝试使用CellInfoLte、CellInfoGsm来获取Dbm、AsuLevel、..etc级别

代码语言:javascript
复制
 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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33895260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档