手机信号强度

本文详细介绍了Android手机如何查看和理解信号强度,包括ASU与dBm的关系,以及信号条的含义。通过logcat和RIL接口,展示了Android系统内部处理信号强度更新的流程,从RILConstants到GsmServiceStateTracker,再到PhoneStateListener,最后到StatusBarPolicy更新信号图标的过程。
摘要由CSDN通过智能技术生成

  在android手机上,通过“设置”-“关于手机”-“状态”-“信号强度”可以查看到手机的信号强度,显示出如“-87 dBm 13 asu”这样的数据。ASU与dBm之间的关系是:dBm=-113+(2*ASU)。

  在你手机屏幕上方显示的信号条永远不会是最好的方法来确定你手机的信号,无论你用什么手机都一样。Android也是,用很粗的条来展示很强的信号,但这些条仅仅表示最高的信号。或许你并不熟悉,信号通常是以dBm度量的。dBm是每毫瓦特的电磁波产生的功率。-60dBm的信号接近完美,-112dBm就很容易掉线,如果你在 -87dBm以上,Android会显示一个4格的满信号。

  android界面UI信号显示是通过RIL对通讯模块发送AT命令来实现的,如AT+CSQ,我们查看一般可以通过 logcat -b radio来获取一些RIL的实时信息,可以通过关键字“CSQ”查找radio.log,查看手机信号强度。log如:AT< +CSQ: 14,99  这里的14就是ASU值,在4.0源码中有SignalStrength.java类,其中有ASU值转换为几格信号的方法:

403
    public int getGsmLevel() {
404
        int level;
405
 
406
        // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5
407
        // asu = 0 (-113dB or less) is very weak
408
        // signal, its better to show 0 bars to the user in such cases.
409
        // asu = 99 is a special case, where the signal strength is unknown.
410
        int asu = getGsmSignalStrength();
411
        if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
412
        else if (asu >= 12) level = SIGNAL_STRENGTH_GREAT;
413
        else if (asu >= 8)  level = SIGNAL_STRENGTH_GOOD;
414
        else if (asu >= 5)  level = SIGNAL_STRENGTH_MODERATE;
415
        else level = SIGNAL_STRENGTH_POOR;
416
        if (DBG) log("getGsmLevel=" + level);
417
        return level;
418
    }

-----------------------------------------------------------------------------------------

以下是从网上找到的相关资料。

  在RILConstants.java中找到:
int RIL_UNSOL_SIGNAL_STRENGTH = 1009;

在RIL.java中找到与其相关的代码:
private void
processUnsolicited (Parcel p) {
…….
case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break;
…..
case RIL_UNSOL_SIGNAL_STRENGTH:
// Note this is set to “verbose” because it happens
// frequently
if (RILJ_LOGV) unsljLogvRet(response, ret);

if (m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值