cómo calcular el movimiento del teléfono en la dirección vertical desde el descanso?

Estoy desarrollando una aplicación que usa el sistema operativo Android, para lo cual necesito saber cómo puedo calcular el movimiento del dispositivo hacia arriba en la dirección vertical.

Por ejemplo, el dispositivo está en reposo (punto A), el usuario lo levanta en su mano (punto B), ahora hay un cambio de altura entre el punto A y el punto B, ¿cómo lo calcularía?

Ya revisé los artículos sobre sensores y acelerómetros, pero no pude encontrar nada que me ayudara con eso. ¿Alguien tiene alguna idea?

Si integras la aceleración dos veces, obtienes una posición, pero el error es horrible. Es inútil en la práctica. Aquí hay una explicación de por qué (Google Tech Talk) a las 23:20. Recomiendo este video.

Ahora, no necesitas nada preciso y esa es una historia diferente. La aceleración lineal está disponible después de la fusión del sensor, como se describe en el video. Ver Sensor. TYPE_LINEAR_ACCELERATION en SensorEvent . Primero probaría un filtro de paso alto para detectar un aumento repentino en la aceleración lineal a lo largo del eje vertical.

No tengo idea si es bueno para su aplicación.

En realidad, puede establecer (solo) la posición vertical sin medir la aceleración a lo largo del tiempo. Esto se logra midiendo el ángulo entre la dirección al centro de la tierra y la dirección al polo norte magnético.

Esto solo cambia (significativamente) cuando cambia la altitud (altura) del teléfono. Lo que debes hacer es usar el accelerometer y el magnetometer para obtener dos matrices flotantes [3], tratarlas como vectores, convertirlas en vectores unitarios, y luego el ángulo entre dos vectores unitarios es arccos (AxM).

Tenga en cuenta que es punto producto, es decir. math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2]) Cualquier cambio en este ángulo corresponde a un cambio en la altura. También tenga en cuenta que esto tendrá que ser calibrado a unidades reales y la relación de cambio en el ángulo a la altura será diferente en varias longitudes; Pero este es un método para obtener un valor absoluto de altura; aunque, por supuesto, el ángulo también se tuerce al experimentar aceleración, o cuando hay imanes cercanos 🙂

  1. puede correlacionarlo con el sensor de campo magnético en microTesla

  2. Puedes usar dist = integral de integral de aceleración ~ sigma ~ sumtoria = integral de velocidad + constante