0

La classe CellSignalStrengthLte semble renvoyer des valeurs avec toString() qui n'ont pas de getters associés.CellSignalStrengthLte affiche différentes valeurs dans toString() que celles disponibles avec les getters

Voici un exemple de toString():

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

La classe a 4 getters: getAsuLevel(), getDbm(), getLevel(), getTimingAdvance() voici un exemple de ce que ces valeurs reviennent:

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

Nous pouvons voir que dbm correspond avec rsrp du toString(). Et cela timingAdvance correspond à ta. Mais aucun des autres valeurs correspondent à tout ce qui est imprimé avec le toString()

Ma question est comment puis-je accéder aux autres valeurs (ss, rsrq, rssnr specicially) qui sont renvoyés par toString() je pouvais bien sûr obtenir la valeur de toString() et analyser pour obtenir les valeurs qui m'intéressent, mais cela semble en arrière. Comme toString() est une chaîne qui représente l'objet, il doit sûrement exister un autre moyen d'accéder à ces valeurs depuis l'objet.

Répondre

1

Malheureusement, dans CellSignalStrengthLte, afin d'obtenir ces champs supplémentaires, vous devrez analyser le toString() ou utiliser la réflexion pour accéder directement aux champs. Aucun moyen n'est recommandé pour les applications de production.

Mais, vous pouvez obtenir des mises à jour pour PhoneStateListener.onSignalStrengthsChanged(SignalStrength) pour obtenir ces valeurs. De cette façon, vous pouvez utiliser les API publiques pour obtenir les informations de signal.