Pregunta

¿Hay una manera de detectar si un iPhone acostada en una mesa boca arriba está rotando ?. Soy consciente de que este tipo de movimiento no es reportado por el acelerómetro y tampoco es informé al - shouldAutorotateToInterfaceOrientation (BOOL):. (UIInterfaceOrientation) Método interfaceOrientation

¿Hay una manera de detectar variaciones de ángulo de rotación para el teléfono de esta manera ?. Gracias.

¿Fue útil?

Solución

El vector de gravedad será constante a medida que gira sobre una mesa plana para que no se ve nada en los acelerómetros. Se podría seguir los cambios de rumbo de la brújula para detectar esta rotación, pero sólo en un iPhone 3G S. Véase CLLocationManager para más detalles, ver los métodos de rumbo.

Editar - Con un iPhone 4 se puede detectar la rotación usando los giroscopios. Hay una nueva clase en el IOS 4 llamado CMMotionManager para conseguir velocidad de rotación de los autogiros.

Otros consejos

Cuando el teléfono está parado la suma de los vectores de aceleración debe ser 1. Cuando el teléfono está girando (suponiendo que el sensor está fuera de centro) la suma de los vectores debe ser más que 1 y (con suerte) algo constante.

Si nos fijamos en la decadencia de esa curva, yo no estaría sorprendido si esa forma es lo suficientemente distintivo para ser utilizado para determinar si el teléfono está girando o no.

alt text

Este es el AccelerometerGraph aplicación de ejemplo de Apple.

Creo que se puede hacer si el iPhone tiene una brújula. Aparte de eso, no creo que sea posible o fiable.

Esto realmente dependerá de la ubicación del acelerómetro en el dispositivo, sólo probado esto mediante la aplicación de ejemplo accelerometergraph en un iTouch 2g y se puede ver la aceleración inicial en el eje X e Y (2g no tiene la acelerómetro en el centro del dispositivo, supongo). Así que en cierto sentido se podría detectar la rotación, sin embargo creo que el reto sería diferenciador que la aceleración de la aceleración direccional. Y estoy seguro de los valores cambiarían si Apple coloca el acelerómetro en diferentes lugares en diferentes modelos. Hay definitally no habría ninguna manera de hacerlo a través de shouldAutorotateToInterfaceOrientation, recomiendo que cargue la aplicación de ejemplo accelerometergraph en el SDK y experimentar con los vectores de aceleración para ver si se puede aislar un vector de rotación de forma fiable en varios dispositivos.

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