zoukankan      html  css  js  c++  java
  • 智能手机中显示信号强度格数

    在Android4.0的系统中,手机中显示信号强度格数的代码在

    frameworks\base\telephony\java\android\telephony\SignalStrength.java

    getLevel( )函数,该函数是主要用来获取信号的强度。

    public int getLevel() {
            int level;
    
            if (isGsm) {
                level = getLteLevel();
                if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    level = getGsmLevel();
                }
            } else {
                int cdmaLevel = getCdmaLevel();
                int evdoLevel = getEvdoLevel();
                if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    /* We don't know evdo, use cdma */
                    level = cdmaLevel;
                } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    /* We don't know cdma, use evdo */
                    level = evdoLevel;
                } else {
                    /* We know both, use the lowest level */
                    //level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel;
                    level = cdmaLevel > evdoLevel ? cdmaLevel : evdoLevel;
                }
            }
            if (DBG) log("getLevel=" + level);
            return level;
        }

    getCdmaLevel( )获取CdmaLevel,同样也有getEvdoLevel( )函数,在上一个函数中,通过比较Evdo和Cdma的强度,来最终确定信号的显示强度,也就是我们在通知栏里看到的信号格数。

    public int getCdmaLevel() {
            final int cdmaDbm = getCdmaDbm();
            final int cdmaEcio = getCdmaEcio();
            int levelDbm;
            int levelEcio;
    
            if (cdmaDbm >= -75) levelDbm = SIGNAL_STRENGTH_GREAT;
            else if (cdmaDbm >= -85) levelDbm = SIGNAL_STRENGTH_GOOD;
            else if (cdmaDbm >= -95) levelDbm = SIGNAL_STRENGTH_MODERATE;
            else if (cdmaDbm >= -100) levelDbm = SIGNAL_STRENGTH_POOR;
            else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
    
            // Ec/Io are in dB*10
            if (cdmaEcio >= -90) levelEcio = SIGNAL_STRENGTH_GREAT;
            else if (cdmaEcio >= -110) levelEcio = SIGNAL_STRENGTH_GOOD;
            else if (cdmaEcio >= -130) levelEcio = SIGNAL_STRENGTH_MODERATE;
            else if (cdmaEcio >= -150) levelEcio = SIGNAL_STRENGTH_POOR;
            else levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
    
            int level = (levelDbm < levelEcio) ? levelDbm : levelEcio;
            if (DBG) log("getCdmaLevel=" + level + ",cdmaDbm=" + cdmaDbm + ",cdmaEcio=" +cdmaEcio);
            return level;
        }



  • 相关阅读:
    bugku web基础$_POST
    bugku web基础$_GET
    bugku 计算器
    bugku web2
    i春秋Musee de X
    i春秋Hello World
    i春秋登录
    i春秋Blog
    i春秋时间
    i春秋Hash
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3127440.html
Copyright © 2011-2022 走看看