Question

Je joue autour avec l'Accéléromètre Android de retard en utilisant le SDK Android et Adobe AIR pour Android SDK sur mon Motorola Droid. Ce que j'ai remarqué est que l'accéléromètre fonctionne très bien, mais je me demandais s'il est possible de compenser d'une certaine façon pour que je ne dois pas utiliser l'appareil en position horizontale. En d'autres termes, je veux utiliser l'accéléromètre pour contrôler mon affichage visuel, mais l'initialiser (ou modifier d'une certaine manière) afin que je n'ai pas de le tenir parfaitement plat (pas beaucoup de plaisir d'avoir à se pencher sur le téléphone).

Quelqu'un sait comment je peux tenir l'appareil confortablement dans ma main, disons 45 degrés, et toujours utiliser l'accéléromètre pour fournir des lectures avant / arrière? Est-ce possible? Tous les exemples de cette disposition?

Était-ce utile?

La solution

Vous aurez besoin d'un peu de mathématiques de multiplication de matrice simple pour cela. « Calibrer » la rotation en prenant la matrice courante lorsque vous démarrez l'application et l'inverser, puis multiplier toutes les matrices suivantes avec elle -. Qui vous donnera le delta à la position de départ

Autres conseils

J'avais écrit une application longue depuis longtemps qui traitait des rotations relatives. J'ai oublié ce que le code a fait, mais de ce que je peux voir, il semble que -

1) j'obtenir la matrice de rotation initiale à l'aide - SensorManager.getRotationMatrix (R, I, gravity.clone (), geomagnetic.clone ()); (Gravité et géomagnétique sont les matrices de accleration et géomagnétiques respectives. J'sais pourquoi j'utilise des clones, mais il doit y avoir une raison.) 2) Maintenant, à tout moment, obtenir la matrice de rotation actuelle et l'appeler R. 3) Calcul de l'inverse de la matrice initiale et l'appeler « initialInverse ». 4) Multiplier R avec initialInverse (ou l'inverse, vous aurez à le comprendre). 5) Obtenez votre orientation finale à l'aide SensorManager.getOrientation (delta, valeurs)

Je suis désolé, mais je l'ai totalement oublié ce que fait le code ci-dessus. Je pense que je me souviens avoir lu les mots d'Euler Transform quelque part quand je l'ai écrit cette application, donc ce ce qu'il pourrait faire. Malheureusement, je ne peux pas vous donner le code complet depuis que je publierai probablement cette application sur le marché. Cependant, si vous avez besoin de plus amples informations, s'il vous plaît laissez-moi savoir -. Je vais regarder dans le code et vous revenir

Je travaille dans un projet avec la nature même où la fonction accéléromètre est pas limitée par la position. Ma façon de manipuler est très simple, initialiser l'accéléromètre à la lecture actuelle comme valeur par défaut. En d'autres termes, vous avez un bouton que vous appuyez une fois que vous avez le téléphone dans la bonne position, lorsque vous appuyez sur le bouton, les lectures actuelles de l'accéléromètre (mesures de G) sera votre référence (valeurs nulles), et apporter des modifications lorsque vous allez au-dessus ou en dessous de ces lectures ... Hope this helps personne ... hourras

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top