CellSignalStrengthLte类似乎返回了一些没有关联getter的toString()
值。
以下是toString()
的示例:
CellSignalStrengthLte: ss=12 rsrp=-114 rsrq=-11 rssnr=2147483647 cqi=2147483647 ta=2147483647
该课程有4个获取者:getAsuLevel()
,getDbm()
,getLevel()
,getTimingAdvance()
以下是这些值返回的示例:
dbm: -114
asuLvl: 26
lvl: 2
timing adv: 2147483647
我们可以看到dbm
与rsrp
中的toString()
匹配。并且timingAdvance
与ta
匹配。但是其他任何值都不匹配使用toString()
我的问题是如何访问由ss
返回的其他值(rsrq
,rssnr
,toString()
}我当然可以从中获取值toString()并解析它以获取我感兴趣的值,但这似乎是倒退。由于toString()是一个表示对象的字符串,因此必须有一些其他方法可以从对象访问这些值。
答案 0 :(得分:1)
不幸的是,在CellSignalStrengthLte
中,为了获取这些额外字段,您必须解析toString()
或使用反射直接访问字段。对于生产应用程序,建议不采用这两种方式。
但是,您可以获取PhoneStateListener.onSignalStrengthsChanged(SignalStrength)
的更新以获取这些值。这样,您就可以使用公共API来获取信号信息。