Pregunta

Tengo que construir la brújula para mi aplicación.

A partir de la lectura de la documentación parece que hay dos formas razonables de hacer esto:

    Método
  • Sensor.TYPE_ORIENTATION: Esta es la forma más fácil de hacerlo. El problema con esto es que no es exacto. Cuando comparo mi lectura con Snaptic brújula es de unos 10-15 Degress fuera, que para mis propósitos es inaceptable.
  • Sensor.TYPE_ACCELEROMETER, Sensor.TYPE_MAGNETIC_FIELD y getRotationMatrix () en conjunción con remapCoordinateSystem () y getOrientation () Método: La documentación dice que este "es generalmente más preciso". El problema es que, independientemente de la demora me registro con el oyente la brújula se vuelve loco, incluso cuando el dispositivo está parado sobre una superficie plana.

¿Alguna sugerencia para la solución de este problema será muy apreciada.

¿Fue útil?

Solución

Las apariencias como mob1lejunkie ha dado cuenta de esto ya, pero sólo para referencia futura, permítanme mencionar que la cuestión aquí es declinación magnética (la diferencia entre el norte magnético y el norte verdadero). Usted puede probar un modelo de línea de la NOAA para tener una idea de lo que la diferencia que está en su parte del mundo.

Android incluye un modelo llamado GeomagneticField que se puede utilizar para calcular la declinación aproximada dada una latitud, longitud y altitud. Por lo tanto, lo que yo creo que hay que hacer para calcular el norte verdadero se lee la valor azimut desde Sensor.TYPE_ORIENTATION y luego añadir a que GeomagneticField.getDeclination ().

Otros consejos

Es el lado negativo de las piezas compactas hechas para los teléfonos. Un IMU $ 5000 que estamos usando en este momento tiene un error de +/- 2 grados y en ese rango parece volverse loco también.

Probar alejándose de interferencia, las superficies de metal, y ver si mejora. Si no es así, no me gusta romper las malas noticias, pero eso es el hardware.

¿Usted ha visto estos?

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

http://groups.google .com / grupo / android-desarrolladores / browse_thread / hilo / bbb0e8b97c673cf9 / 5c16bc2e49f6e972? lnk = raot

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top