2017-09-10 9 views
0

J'utilise l'accéléromètre dans mon application et l'activité est toujours en mode paysage. L'axe x est utilisé pour accélérer (imaginez quelque chose comme un jeu de course) et l'axe y est utilisé pour contrôler la direction à gauche et à droite. Maintenant, j'ai le problème suivant:Les valeurs de l'accéléromètre x et y sont échangées sur les smartphones et les tablettes

Sur mon smartphone en mode paysage, l'axe x est le plus court et l'axe y le plus long. La caméra est positionnée sur le côté le plus court.

Sur ma tablette, les axes sont inversés. L'appareil photo est également sur le côté le plus long. Cela signifie que l'axe x est le plus court (droite/gauche) et l'axe y est le plus long (arrière/avant). Cela signifie que l'utilisateur doit incliner la tablette vers la gauche et la droite pour accélérer et vers l'arrière et vers l'avant pour contrôler la direction. Ce n'est pas ce que je veux.

Quelqu'un peut-il me dire un moyen de savoir si l'axe est l'inverse? J'ai pensé à détecter si nous avions une tablette ou un smartphone mais il y a aussi des tablettes où l'axe (et donc la position de la caméra aussi) sont les mêmes que sur mon smartphone.

Edit: J'ai fait une petite photo avec de la peinture (je sais que je ne suis pas un bon peintre ^^). J'espère que vous comprenez mieux mon problème. Le premier est le smartphone, le bas est la tablette - les deux en mode paysage. Le cercle est la caméra qui montre que l'axe y est toujours là où se trouve la caméra.

enter image description here

Répondre

0

Je résolu mon problème en obtenant l'orientation par défaut du périphérique et l'utiliser pour déterminer si je dois utiliser x ou y pour la vitesse.

Voir https://stackoverflow.com/a/9888357/1794338 pour obtenir l'orientation par défaut de l'appareil