首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CellSignalStrength获得NeighboringCellInfo

从CellSignalStrength获得NeighboringCellInfo
EN

Stack Overflow用户
提问于 2014-09-24 10:02:02
回答 1查看 674关注 0票数 0

我需要从CellSignalStrength.getLevel()得到信号电平

我是从CellInfoGsm拿来的

代码语言:javascript
复制
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
CellInfo allCellInfo = (CellInfo) telephonyManager.getAllCellInfo().get(0);
CellSignalStrength cellSignalStrength = ((CellInfoGsm) allCellInfo).getCellSignalStrength();
int level = cellSignalStrength.getLevel();

但是在某些设备上,我从telephonyManager.getAllCellInfo()中获得null,所以android文档说我使用telephonyManager.getNeighboringCellInfo()

有没有任何方法从CellSignalStrength或“用户友好”信号级别从NeighboringCellInfo获得?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-25 09:28:58

我通过从getLevel()重写CellInfoGsm函数来解决它--我想我是这样做的。

我调用NeighboringCellInfo.getRssi(),然后将其转换为级别,就像CellInfoGsm.getLevel()做的那样

代码语言:javascript
复制
for(NeighboringCellInfo nci:telephonyManager
                    .getNeighboringCellInfo()){
                if(neighborCellInfo == null) {
                    neighborCellInfo = nci;
                } else if(nci.getRssi() > neighborCellInfo.getRssi()) {
                    neighborCellInfo = nci;
                }
            }

            int level;

            int GSM_SIGNAL_STRENGTH_GREAT = 12;
            int GSM_SIGNAL_STRENGTH_GOOD = 8;
            int GSM_SIGNAL_STRENGTH_MODERATE = 8;

            // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5
            // asu = 0 (-113dB or less) is very weak
            // signal, its better to show 0 bars to the user in such cases.
            // asu = 99 is a special case, where the signal strength is unknown.
            int asu = neighborCellInfo.getRssi();
            if (asu <= 2 || asu == 99) level = 0;
            else if (asu >= GSM_SIGNAL_STRENGTH_GREAT) level = 4;
            else if (asu >= GSM_SIGNAL_STRENGTH_GOOD)  level = 3;
            else if (asu >= GSM_SIGNAL_STRENGTH_MODERATE)  level = 2;
            else level = 1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26014068

复制
相关文章

相似问题

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