Question

Je dois construire une boussole pour mon application.

À la lecture de la documentation, il semble qu'il ya deux manières raisonnables de faire ceci:

  • Méthode Sensor.TYPE_ORIENTATION: Ceci est la façon facile de le faire. Le problème est qu'il est inexact. Quand je compare ma lecture avec Snaptic Compass il est environ 10-15 au large degress qui, pour mes fins est inacceptable.
  • Sensor.TYPE_ACCELEROMETER, Sensor.TYPE_MAGNETIC_FIELD et getRotationMatrix () en conjonction avec la méthode remapCoordinateSystem () et GetOrientation (): La documentation dit que ce "est généralement plus précis". Le problème est quel que soit le retard que j'enregistre avec écoute la boussole devient fou même lorsque l'appareil est à l'arrêt sur une surface plane.

Toutes les suggestions pour résoudre ce problème sera grandement apprécié.

Était-ce utile?

La solution

On dirait mob1lejunkie a compris cela déjà, mais juste pour référence, permettez-moi de mentionner que la question ici est déclinaison magnétique (la différence entre le nord magnétique et le nord). Vous pouvez essayer un modèle en ligne de la NOAA pour avoir une idée de ce que la différence est dans votre partie du monde.

applications comprend un modèle appelé GeomagneticField qui peut être utilisé pour calculer la déclinaison approximative donné une latitude, longitude et altitude. Alors, ce que je crois que vous devez faire pour calculer le vrai nord est lu le valeur azimut de Sensor.TYPE_ORIENTATION puis ajouter à cette GeomagneticField.getDeclination ().

Autres conseils

Il est l'inconvénient des pièces compactes faites pour les téléphones. A 5000 $ IMU que nous utilisons a en ce moment une erreur de +/- 2 degrés et dans cette gamme, il semble fou aussi.

Essayer éloigner de l'interférence, les surfaces métalliques, et voir si elle améliore. Sinon, je déteste briser les mauvaises nouvelles, mais c'est le matériel.

Avez-vous vu cela?

http://developer.android.com/reference/android/hardware /SensorManager.html

http://groups.google .com / groupe / android-développeurs / browse_thread / fil / bbb0e8b97c673cf9 / 5c16bc2e49f6e972? LNK = raot

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top