2016-05-19 15 views
0

Die Klasse CellSignalStrengthLte scheint einige Werte mit toString() zurückzugeben, die keine verknüpften Getter haben. HierCellSignalStrengthLte zeigt andere Werte in toString() an, als mit Gettern verfügbar sind

ist ein Beispiel für toString():

CellSignalStrengthLte: ss=12 rsrp=-114 rsrq=-11 rssnr=2147483647 cqi=2147483647 ta=2147483647 

Die Klasse verfügt über 4 Getter: getAsuLevel(), getDbm(), getLevel(), getTimingAdvance() hier ist ein Beispiel dafür, was diese Werte zurückgeben:

dbm: -114 
asuLvl: 26 
lvl: 2 
timing adv: 2147483647 

Wir können siehe dbm entspricht rsrp aus toString(). Und das timingAdvance stimmt mit ta überein. Aber keiner der anderen Werte etwas übereinstimmen, die mit dem toString()

gedruckt ist meine Frage, wie kann ich auf die anderen Werte (ss, rsrq, rssnr specicially), die von toString() zurückgegeben werden, ich könnte natürlich den Wert von toString erhalten() und analysiere es, um die Werte zu erhalten, die mich interessieren, aber das scheint rückwärts zu sein. Da toString() eine Zeichenfolge ist, die das Objekt sicher darstellt, muss es eine andere Möglichkeit geben, auf diese Werte vom Objekt aus zuzugreifen.

Antwort

1

Leider in CellSignalStrengthLte, um diese zusätzlichen Felder zu erhalten, müssen Sie eine toString() analysieren oder Reflektion verwenden, um direkt auf die Felder zuzugreifen. Für Produktions-Apps wird keines der beiden Verfahren empfohlen.

Aber Sie können Updates für PhoneStateListener.onSignalStrengthsChanged(SignalStrength) erhalten, um diese Werte zu erhalten. Auf diese Weise können Sie öffentliche APIs verwenden, um die Signalinformationen abzurufen.