以百分比显示Android的getGsmSignalStrength()值

PC.*_*PC. 4 android gsm signal-strength

根据getGsmSignalStrength()的相应dBm值,比例似乎是线性的.(请参阅此处的 dBm值).但我观察到,在几乎所有应用中,这个比例都没有用作线性比例.

例如,考虑Android的src StatusBarPolicy :: updateSignalStrength

signal strength = 0 or 99 -> no signal
signal strength >= 12 -> very good signal
signal strength >= 8 -> good signal
signal strength >= 5 -> poor signal
signal strength <5 -> very poor signal
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我找出我可以用百分比显示信号强度的比例.

bri*_*tey 5

从您提供的链接:

0 -113 dBm或更低
1 -111 dBm
2 ... 30 -109 ... -53 dBm
31 -51 dBm或更高

99未知或不可检测

这意味着你有一个范围或-113到-51,或-62dBm.要将其转换为百分比,您可以获取您收到的值(0-31,99),找出相应的dBm是什么,然后找到与-113的差值并除以62.

例如,0 = -113dBm.与-113的差值= 0. 0/62 = 0%.1 = -111dBm.与-113 = 2. 2/62~3%的差异.30 = -53dBm.与-113 = 60.60/62~97%的差异.

你需要的唯一特殊情况是99,应该像0一样处理.

  • 实际上,它甚至更简单.取该值除以31. 0/31 = 0. 1/31~3%.三十一分之三十〜97%.99仍然是一个特例. (2认同)