Comment puis-je obtenir la direction du mouvement à l'aide d'un accéléromètre?
Je suis le développement d'une application Android et je voudrais savoir si il est possible de détecter la direction du mouvement d'un axe fixe. Par exemple, je veux mettre mon téléphone sur la table et la détection de la direction quand je la déplace (gauche, droite, haut et bas). La distance n'est pas nécessaire, je veux juste connaître la bonne direction.
source d'informationauteur Marcos Passos
Vous devez vous connecter pour publier un commentaire.
Oui.
À l'aide de la
SensorEventListener.onSensorChanged(SensorEvent event)
vous pouvez déterminer les valeurs fournies tout au long du X & Y de l'axe. Vous devez enregistrer ces valeurs et de les comparer à n'importe quelle nouvelle valeur que vous recevez des appels suivants à laonSensorChanged
méthode pour obtenir une valeur delta. Si la valeur delta sur un axe est positif alors que l'appareil est en se déplaçant d'une façon, si négatives de son passage à l'inverse.Vous aurez probablement besoin d'affiner à la fois la fréquence à laquelle vous recevez des événements d'accéléromètre et le seuil à partir duquel on tient compte de la valeur delta pour indiquer un changement de direction.
Voici un petit code d'exemple de ce dont je parle:
Ce code va seulement vous fournir avec la direction générale sur les axes X et Y que le téléphone a déménagé dans. Pour donner plus de précision de la détermination de la direction (par exemple, pour tenter d'imiter le mouvement d'une souris d'ordinateur), vous trouverez peut-être que d'un téléphone accéléromètre n'est pas adapté à l'usage.
Cette tentative, je voudrais tout d'abord définir le capteur de retard à
SensorManager.SENSOR_DELAY_FAST
et de créer une liste de plusieurs événements de l'histoire pour que je puisse détecter le mouvement dans le temps et ne pas être influencé par les légers mouvements dans la direction opposée qui se produisent souvent lors de la prise de mesures des accéléromètres à un niveau fin. Vous aussi, vous avez besoin de mesurer la quantité de temps passé à aider à calculer la mesure précise de mouvement comme suggéré dans vos commentaires.De ce que j'ai lu, avec les capteurs, on peut détecter uniquement les accélérations et de l'orientation du téléphone. Donc, vous pouvez facilement détecter le début du mouvement (et dans un sens) et l'arrêt du mouvement, puisque la vitesse de circulation est en train de changer, donc il y a accélération (lors de stopper l'accélération à l'encontre de la direction de la vitesse).
Si le téléphone est en mouvement à vitesse constante, les accéléromètres donnera une valeur de zéro (accélération linéaire qui soustrait de la gravité). Afin de savoir si le téléphone est en mouvement, vous devez calculer la vitesse à chaque instant, par
dans laquelle:
V(t0)
est la vitesse à l'instant précédent,V(t)
est la vitesse de courant instantanée,a
est l'accélération (tenir compte de l'accélération de la précédente instantanée ouaccélération moyenne entre précédente et actuelle instant).
Le problème est qu'en raison de l'incertitude des valeurs de capteur, vous pourriez vous retrouver en additionnant les petites erreurs à chaque instant, ce qui conduira à des erreurs valeurs de vélocité. Probablement que vous aurez à régler un filtre passe-bas pour les valeurs.