web-dev-qa-db-fra.com

Quelle est la différence entre les capteurs "gravité" et "accélération" dans Android?

Quelle est la différence entre les capteurs de gravité et d'accélération dans Android? De mon point de vue, la valeur physique est la même dans les deux cas.

Lequel mesure la force agissant sur la masse unitaire à l'intérieur de l'appareil?

[~ # ~] ajout [~ # ~]

La question est: quelle quantité physique est mesurée par ces capteurs? Selon principe d'équivalence l'accélération et la gravité sont indiscernables et la seule façon de mesurer les deux est par l'équilibre des ressorts habituel (mais 3d).

22
Suzan Cioc

Le capteur d'accélération vous rend la somme de toutes les forces appliquées à votre appareil, tandis que le capteur de gravité ne renvoie que l'influence de la gravité. Si vous souhaitez exclure la gravité de l'accélération, vous pouvez utiliser un filtre passe-haut ou simplement soustraire les valeurs du capteur de gravité des valeurs du capteur d'accélération - vous ne savez pas quelle méthode donne une meilleure précision.

Une autre méthode pourrait être d'utiliser Sensor.TYPE_LINEAR_ACCELERATION, qui donne exactement (accélération - gravité), mais vous devez vérifier s'il est disponible sur l'appareil. J'ai trouvé quelques appareils qui ont un capteur ACCELERATION qui fonctionne, mais aucune réponse des capteurs GRAVITY ou LINEAR_ACCELERATION.

11
lenik

Ce lien peut être utile: http://www.sensorplatforms.com/which-sensors-in-Android-gets-direct-input-what-are-virtual-sensors

L'extrait suivant résume la réponse à votre question:

"La liste ... comprend à la fois des capteurs physiques et des types de capteurs avec des valeurs dérivées de capteurs physiques, parfois appelés capteurs virtuels ... Les types de capteurs virtuels (gravité, accélération linéaire et vecteur de rotation) fournissent des valeurs dérivées en combinant les résultats à partir de capteurs physiques intelligemment ... Le vecteur de rotation est une combinaison de l'accéléromètre, du magnétomètre et parfois du gyroscope pour déterminer l'angle tridimensionnel le long duquel le Android dispositif établit par rapport à la Coordonnées du cadre terrestre. En connaissant le vecteur de rotation d'un appareil, les données de l'accéléromètre peuvent être séparées en gravité et en accélération linéaire. "

Ce lien https://stackoverflow.com/a/8238389/604964 indique également que les valeurs de gravité sont calculées à l'aide d'un filtre Butterworth.

3
cesarsalgado