3 信号格的获取
MobileSignalController
@Override
public int getCurrentIconId() {
if (mCurrentState.iconGroup == TelephonyIcons.CARRIER_NETWORK_CHANGE) {
return SignalDrawable.getCarrierChangeState(getNumLevels());
} else if (mCurrentState.connected) {
int level = mCurrentState.level; //信号强度等级,即信号格
if (mConfig.inflateSignalStrengths) { //系统默认false,不走该分支
level++;
}
return SignalDrawable.getState(level, getNumLevels(),
mCurrentState.inetCondition == 0);
} else if (mCurrentState.enabled) {
return SignalDrawable.getEmptyState(getNumLevels());
} else {
return 0;
}
}
对于mCurrentState.level 信号格的等级获取是在函数updateTelephony方法中有
if (mCurrentState.connected) {
if (!mSignalStrength.isGsm

本文深入探讨Android 8.1中信号强度的表示方式,包括MobileSignalController的角色,以及如何获取和理解dBm和dB信号等级。通过dBm和dB的关系,解释了信号强度的计算,并介绍了asu作为Google Android特有的信号单位,与dBm的转换公式:dBm = -113 + 2*asu。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=81566244&d=1&t=3&u=ba346deec9a54568987f6b2d403acc9f)
832

被折叠的 条评论
为什么被折叠?



