Domanda

C'è un modo per rilevare se un iphone sdraiati in un tavolo a faccia in su è in rotazione ?. Mi rendo conto che questo tipo di movimento non è riportato da l'accelerometro e non è nemmeno riferito al - shouldAutorotateToInterfaceOrientation (BOOL):. (UIInterfaceOrientation) Metodo interfaceOrientation

C'è un modo per rilevare variazioni angolari per il telefono rotante questo modo ?. Grazie.

È stato utile?

Soluzione

Il vettore di gravità sarà costante mentre ruota su una superficie piana in modo da non vedere nulla sulle accelerometri. Si potrebbe seguire prua bussola modifiche per rilevare questa rotazione, ma solo su un iPhone 3G S. Vedere la CLLocationManager per i dettagli, osservare i metodi di intestazione.

Modifica - Con un iPhone 4 è possibile rilevare la rotazione con i giroscopi. C'è una nuova classe in iOS 4 chiamato CMMotionManager per ottenere velocità di rotazione dai giroscopi.

Altri suggerimenti

Quando il telefono è fermo dalla somma dei vettori di accelerazione dovrebbe essere +1. Quando il telefono è in rotazione (assumendo che il sensore è fuori centro) la somma dei vettori deve essere superiore a 1 e (si spera) piuttosto costante.

Se si guarda il decadimento di quella curva, non sarei sorpreso se che forma è abbastanza distintivo per essere utilizzato per determinare se il telefono è in rotazione oppure no.

alt text

Questo è il rel campione AccelerometerGraph app da Apple.

Credo che si potrebbe fare se l'iPhone ha una bussola. Diverso da quello che io non credo che sarà possibile o affidabile.

Questo sarebbe veramente dipenderà dalla posizione dell'accelerometro sul dispositivo, ho appena provato questo utilizzando l'applicazione di esempio accelerometergraph su un iTouch 2g e si può vedere l'accelerazione iniziale sull'asse x ed y (2g non ha la accelerometro nel centro del dispositivo immagino). Quindi, in un certo senso si potrebbe rilevare la rotazione, ma penso che la sfida sarebbe stata differenziando che l'accelerazione da un'accelerazione direzionale. E sono sicuro che i valori cambierebbero se mela posta l'accelerometro in diverse posizioni su diversi modelli. Non ci sarebbe definitally essere alcun modo di farlo via shouldAutorotateToInterfaceOrientation, vi consiglio di caricare l'applicazione di esempio accelerometergraph nel SDK e sperimentare con i vettori di accelerazione per vedere se è possibile isolare un vettore di rotazione in modo affidabile su più dispositivi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top