Je suis actuellement en train de mettre en œuvre un compteur de vitesse en recevant des données d'orientation de mon téléphone. J'utilisedispositif rotatif constant - comment recevoir des données d'orientation valides?
SensorManager.getRotationMatrix(R, I, gravity, geomagnetic);
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
float azimuth = orientation[0];
double azimuthD = Math.toDegrees(azimuth);
if(azimuthD < 0) azimuthD = 360 + azimuthD;
Avec cela, je suis en mesure de recevoir les données de rotation de mon téléphone, comme azimut etc .. Quoi qu'il en soit, cela fonctionne très bien lorsque l'appareil est placé sur une table ou quelque chose. Mais en tournant autour d'un certain point (dans mon cas, l'appareil est fixé sur une roue et tourne à une certaine vitesse), les valeurs sont loin d'être précises. Je crois, puisque j'utilise la gravité et le capteur géomagnétique, il pourrait y avoir un conflit avec les forces qui influencent ces capteurs, tout en tournant. As the wheel turns, the rotation changes relative to a point, but the local device rotation stays the same.
Comment puis-je accéder à l'orientation de l'appareil pendant qu'il tourne sans générer trop de données bruyantes? J'en ai lu au sujet de la propriété "Sensor.TYPE_ROTATION_VECTOR", mais je n'arrivais pas à comprendre comment cela fonctionnait. J'ai aussi lu sur la possibilité de remapper le système de coordination, mais comment cela est-il censé aider, puisque mon téléphone n'est jamais vertical à l'étage plus comme avec un angle de 5 ° -10 °. J'apprécierais toute aide.
Cheers, viehlieb