Domanda

Ho giocato in giro con l'accelerometro Android di ritardo utilizzando l'SDK Android e Adobe AIR per Android SDK sul mio Motorola Droid. Quello che ho notato è che l'accelerometro funziona bene, ma mi chiedevo se è possibile compensare in qualche modo in modo che io non devo utilizzare il dispositivo in posizione orizzontale. In altre parole, voglio utilizzare l'accelerometro per controllare il mio visualizzazione, ma inizializzare (o modificare in qualche modo) in modo che io non devo tenerlo perfettamente piatta (non è molto divertente dover appoggiarsi al telefono).

Qualcuno sa come posso tenere il dispositivo comodamente in mano, diciamo 45 gradi, e ancora utilizzare l'accelerometro per fornire in avanti / indietro letture? È possibile? Eventuali esempi di questo questo disponibile?

È stato utile?

Soluzione

Si avrà bisogno di un po 'di semplice matematica moltiplicazione di matrici per questo. "Calibra" la rotazione prendendo la matrice corrente quando si avvia l'applicazione e invertito esso, quindi moltiplicare tutte le matrici successive con esso -. Che vi darà il delta alla posizione di partenza

Altri suggerimenti

I aveva scritto un'applicazione molto tempo fa che si occupava di rotazioni relative. Ho dimenticato quello che il codice ha fatto, ma da quello che posso vedere, sembra che -

1) ottengo la matrice di rotazione iniziale utilizzando - SensorManager.getRotationMatrix (R, I, gravity.clone (), geomagnetic.clone ()); (Gravità e geomagnetico sono i rispettivi accleration e geomagnetiche matrici. Non so il motivo per cui io uso cloni ma ci deve essere qualche ragione.) 2) Ora in qualsiasi momento, ottenere la matrice di rotazione corrente e chiamare R. 3) Calcolare l'inversa della matrice iniziale e chiamare "initialInverse". 4) Moltiplicare R con initialInverse (o viceversa, dovrete capirlo). 5) Ottenere il vostro orientamento finale utilizzando SensorManager.getOrientation (delta, valori)

mi dispiace ma ho completamente dimenticato quello che il codice di cui sopra fa. Credo di ricordare leggendo le parole di Eulero Trasforma qualche parte, quando ho scritto questa applicazione, quindi questo è quello che potrebbe fare. Purtroppo non posso dare il codice completo da quando io probabilmente la rilascio app nel mercato. Tuttavia, se avete bisogno di qualche informazione in più, per favore fatemelo sapere -. Cercherò in codice e tornare a voi

Sto lavorando ad un progetto con la natura simile in cui la funzione di accelerometro non è limitato dalla posizione. Il mio modo di gestire è molto semplice, inizializzare l'accelerometro con la lettura corrente come predefinito. In altre parole, si dispone di un pulsante che si preme una volta che hai il telefono in posizione corretta, alla pressione del tasto, le attuali letture dell'accelerometro (misure di G) sarà il vostro riferimento (valori zero), e cambiamenti fanno quando si va sopra o sotto quelle letture ... Spero che questo aiuti a nessuno ... evviva

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