Pregunta

He estado jugando un poco con el acelerómetro androide de la tarde con el SDK de Android y Adobe AIR para Android SDK en mi Motorola Droid. Lo que he notado es que el acelerómetro funciona muy bien, pero me preguntaba si es posible compensar de alguna manera para que yo no tengo que usar el dispositivo en posición horizontal. En otras palabras, quiero utilizar el acelerómetro para controlar mi pantalla visual, pero inicializarlo (o modificar de alguna manera) de modo que yo no tengo que mantenerlo perfectamente plana (no es muy divertido tener que inclinarse por teléfono).

¿Alguien sabe cómo puedo mantener el dispositivo cómodamente en la mano, por ejemplo 45 grados, y todavía utilizar el acelerómetro para proporcionar adelante / atrás lecturas? es posible? Ningún ejemplo de este esta disponible?

¿Fue útil?

Solución

Se va a necesitar algo simple matemática de multiplicación de matrices para eso. "Calibrar" la rotación mediante la adopción de la matriz actual cuando se inicia la aplicación y invertirlo, y luego multiplicar todas las matrices posteriores con ella -. Que le dará el delta a la posición inicial

Otros consejos

Me había escrito una solicitud hace mucho tiempo que se ocupa de rotaciones relativas. He olvidado lo hizo el código, pero por lo que puedo ver, parece que -

1) consigo la matriz de rotación inicial utilizando - SensorManager.getRotationMatrix (R, I, gravity.clone (), geomagnetic.clone ()); (Gravedad y geomagnético son las respectivas matrices accleration y geomagnéticas No sé. Por eso uso clones pero tiene que haber alguna razón.) 2) Ahora en cualquier etapa, obtener la matriz de rotación actual y llamarlo R. 3) Calcular la inversa de la matriz inicial y lo llaman "initialInverse". 4) Multiplicar R con initialInverse (o al revés, que tendrá que averiguarlo). 5) Obtener su orientación final utilizando SensorManager.getOrientation (delta, valores)

Lo siento, pero he olvidado por completo lo que hace el código de seguridad. Creo que recuerdo haber leído las palabras de Euler Transform algún lugar cuando escribí esta aplicación, así que eso es lo que podría estar haciendo. Por desgracia, no puedo darle el código completo ya que probablemente voy a liberar esta aplicación en el mercado. Sin embargo, si necesita más información, por favor hágamelo saber -. Voy a mirar en el código y en contacto con usted

Estoy trabajando en un proyecto con la misma naturaleza que la función de acelerómetro no está limitado por la posición. Mi forma de manejo es muy sencillo, inicializar el acelerómetro con la lectura actual como predeterminado. En otras palabras, usted tiene un botón que se pulsa una vez que tenga el teléfono en la posición adecuada, pulsando el botón, las lecturas actuales del acelerómetro (medidas de G) será su referencia (valores cero), y los cambios que se cometen al está por encima o por debajo de esas lecturas ... Espero que esto ayude a nadie ... salud

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