Como eliminar la gravedad del acelerometro

825 views
Skip to first unread message

Oscardroid

unread,
Jul 10, 2011, 7:01:17 AM7/10/11
to desarrolladores-android
Estoy programando una aplicacion y quiero medir la aceleracion lineal
del acelerometro(Sin la Gravedad), solo que Android 2.2 mide la
aceleracion total(El problema se soluciona en Android 2.3 pero tengo
que usar Android 2.2)
En http://developer.android.com/reference/android/hardware/SensorEvent.html
pero no lo entiendo bien dado que no se de donde sacar los valores de
gravity[0], gravity[1] y gravity[2]

Me podeis ayudar a quitar la gravedad de alguna manera?gracias

Juan de Dios Maldonado Sánchez

unread,
Jul 10, 2011, 7:37:49 AM7/10/11
to desarrollad...@googlegroups.com
Si te refieres al código que aparece en:


Que hace un filtro paso bajo para aislar la fuerza de la gravedad y luego quita cada componente de la misma a la aceleración obtenida desde el sensor. Lo que te falta hacer es definir dos vectores de tres "long" en la clase SensorEvent:

protected long[] gravity = new long[3];
protected long[] linear_acceleration = new long[3];

Luego, en el onSensorChanged, empiezas a escribir tu código desde justo después de que se hayan asignado las tres componentes de la aceleración lineal. (Al final del todo)

La aceleración lineal en X la obtienes con linear_acceleration[0], la de Y la tienes con linear_acceleration[1], y la Z con linear_acceleration[2].

NOTA: Mucho cuidado y no hagas mucho caso de esos valores (Sólo de si son 0, <0 o >0, ya que habrá dispositivos que muestreen más rápido y otros más despacio.

Saludos.

2011/7/10 Oscardroid <lanz...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.


Oscar Pacheco

unread,
Jul 10, 2011, 9:16:04 AM7/10/11
to desarrollad...@googlegroups.com
Pero y con que valores inicializas gravity y linear_acceleration ??

protected long[] gravity = new long[3];
protected long[] linear_acceleration = new long[3];

Juan de Dios Maldonado Sánchez

unread,
Jul 10, 2011, 9:44:27 AM7/10/11
to desarrollad...@googlegroups.com
Ahí lo estás viendo. Se inician como un vector de tres elementos "long" con valor cero.

Luego en el código se le asigna el valor a cada una de las posiciones de cada vector. Justo después es cuando ya puedes empezar a utilizarlos.

2011/7/10 Oscar Pacheco <lanz...@gmail.com>
Reply all
Reply to author
Forward
0 new messages