手机网络信号强度的单位是 dBm (毫瓦分贝),一般用负数表示。
正常手机信号变化范围是从 -110dBm (差)到 -50dBm (好)之间,如果比 -50dBm 还小的话,说明你就站在基站的附近。
2G,3G,4G 获得信号强度的方式都是重写 PhoneStateListener 的 onSignalStrengthsChanged() 方法,当信号强度发生改变的时候就会触发这个事件,我们可以在这个事件里获取信号强度。
关于 dBm,还有一个定公式:
12dBm = -113 + 2 * asu #2G
dBm = -140 + asu #4G
上面公式中的 asu 是英文 alone signal unit 的简写,是 google 为 android 设备定义的信号强度单位。,其中 dBm 是通用单位,asu 是安卓手机特有单位。
dBm 是一个表示功率绝对值的值(也可以认为是以 1mW 功率为基准的一个比值),计算公式为:10log (功率值/1mw)。
如果功率 P 为 1mw,折算为 dBm 后为 0dBm。对于 0.01mW 的功率,按 dBm 单位进行折算后的值应为:10log(0.01/1) = -20dBm。
这个数值越大,表明信号越好。由于手机信号强度一般较小,折算成为 dBm 一般都是负数。