Quand utiliser l'accéléromètre gyroscope sur Android
est-il correct de supposer que la plupart des appareils utilisateurs auront un gyroscope? En d'autres termes, vais-je exclure un nombre important de personnes en utilisant un gyroscope dans mon application?
je fais une application de Livre de contes pour enfants et je veux que l'utilisateur soit en mesure d'incliner leur appareil autour de l'axe de lacet pour déplacer une chaise berçante d'avant en arrière. C'est une petite partie de l'application et il n'a pas à être très précis. Est-il un capteur que je devrais utiliser plus de l'autre?
5 réponses
Utilisateur de couverture:
la plupart des appareils ont à la fois un gyroscope et un accéléromètre, mais presque tous les appareils ont un accéléromètre. En particulier les appareils plus anciens et les moins chers n'ont pas de gyroscope. N'oubliez pas que puisque c'est une application pour enfants, peut-être que les parents ne veulent pas que les petits utilisent leur superbe tablette de 700$, et vont probablement utiliser moins cher. Les appareils moins chers ont tendance à ne pas avoir de gyroscopes. So +1 pour le accéléromètre.
expérience utilisateur
l'accéléromètre mesure l'accélération dans le système de coordonnées tridimensionnel. Dans la plupart des cas (lorsque l'utilisateur ne fait pas sauter ou lancer l'appareil) la plus grande partie de l'accélération de la gravité. Avec la pesanteur seule, il est très facile de déterminer l'inclinaison et les mouvements légers. De plus, vous avez le capteur de gravité du logiciel pour éliminer les mouvements étranges, et L'accélération linéaire pour éliminer la Gravité. Le Gyroscope détecte la rotation. Il est plus sensible, plus précis et produit des événements plus rapidement que l'accéléromètre, mais il semble être un surmenage pour cette usecase. Si vous voulez faire un jeu de course en 3D ou un simulateur de vol, ce serait une victoire pour le gyroscope, mais pour une application pour enfants, c'est trop.
Utilisation De La Batterie
Pas de concours ici. Le gyroscope utilise 3-30 fois plus de batterie (peut-être plus, selon sur le périphérique), tandis que l'accéléromètre est très doux sur la batterie. De plus, pour la plupart des utilisateurs, l'accéléromètre est déjà actif (pour faire tourner l'écran automatiquement) de sorte qu'il n'y a pas d'utilisation de batterie de capteur ici. +1 pour l'accéléromètre
programmation
capteurs sont assez facile et simple à mettre en œuvre dans les applications Android. Puisque le gyroscope détecte la vitesse de rotation, il donne toutes les valeurs 0 si l'appareil est laissé immobile (et peut-être un peu de bruit dans la gamme de +-0,01 rad/s), donc vous n'avez besoin que d'un petit bloc if
pour rejeter les mouvements très légers (par exemple lorsque les valeurs du gyroscope sont inférieures à 0,2 rad/s). Avec l'accéléromètre, vous avez besoin de quelques calculs supplémentaires pour déterminer l'orientation du dispositif et quel axe est en fait celui qui nécessite plus d'attention pour déterminer la direction du mouvement. Ce n'est pas difficile à faire, mais cela ajoute quelques lignes supplémentaires de code et de débogage à votre ligne de travail. +1 pour le gyroscope.
Conclusion
pour une simple application kids, l'accéléromètre est la solution. Je n'aurais pas penser. Puisque vous ne vous souciez pas beaucoup de précision, vous éliminez en fait les points gagnés par le gyroscope.
je pense que ces capteurs sont ceux à considérer (je cite du livre "Reto Meier, Professional Android 4 Application Development" ici):
-
capteur.TYPE_ACCELEROMETER-accéléromètre à trois axes qui renvoie l'accélération du courant sur trois axes en m/ s2 (mètres par seconde, par seconde).)
-
capteur.TYPE_GYROSCOPE-un gyroscope à trois axes qui renvoie la vitesse de l'appareil rotation sur trois axes en radians/ seconde. Vous pouvez intégrer la vitesse de rotation dans le temps pour déterminer l'orientation actuelle de l'appareil; cependant, il est généralement préférable d'utiliser cette combinaison avec d'autres capteurs (généralement les accéléromètres) pour fournir une orientation asmookée et corrigée.
-
capteur.TYPE_ROTATION_VECTOR-renvoie l'orientation de l'appareil comme une combinaison d'un angle autour d'un axe. Il est généralement utilisé comme une entrée à la méthode getRotationMatrixFromVector du Gestionnaire de capteur pour convertir le vecteur de rotation retourné dans une matrice de rotation. Le capteur vectoriel de rotation est généralement mis en œuvre comme un capteur virtuel qui peut combiner et corriger les résultats obtenus à partir de plusieurs capteurs, tels que les accéléromètres et les gyroscopes, pour fournir une matrice de rotation plus lisse.
fin de citation... Vous pouvez trouver l'implémentation par défaut pour un capteur donné Tapez en utilisant la méthode getDefaultSensor, par exemple:
Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
si cela renvoie null, l'appareil n'a pas le capteur donc vous savez de ne pas essayer de l'utiliser. Je m'attends à ce que la majorité des appareils possèdent ces capteurs (probablement l'accéléromètre) puisqu'ils sont ceux utilisés pour détecter la rotation de l'écran.
je crois que la plupart des téléphones ont la capacité de basculer. J'ai un téléphone de 2 ans cheep qui était de 45$ quand il était neuf, et fonctionne sous android 2.1, il penche et change de perspective.
J'ai aussi une tablette pour trois ans, et il s'incline.
Je dirais que vous êtes en sécurité en supposant que l'inclinaison sera là.
presque tous (ou même tous) les téléphones auront un accéléromètre. Mais ils n'ont pas tous un gyroscope. Quelqu'un a fait une liste non exhaustive de téléphone avec gyrosope ici: quels téléphones Android là-bas ont un gyroscope?
si vous pouvez réussir à le faire fonctionner en utilisant seulement l'accéléromètre, il est certain que plus d'appareils supporteront votre application, mais je ne peux pas vraiment vous dire à quel point cette différence est grande
au fil du temps, le nombre et les types de capteurs disponibles dans un appareil android "typique" ont changé de façon assez spectaculaire. Mais certains moyens de mesurer l'orientation de l'appareil est parmi les capacités plus anciennes. Il semblerait que la bonne approche consiste à tester à l'exécution les nouveaux capteurs et à revenir aux anciens, tout en traitant avec élégance le cas où l'information n'est tout simplement pas disponible.
Le Capteur Overiew le document de développeur a un tableau montrant quand des types de capteurs spécifiques ont été pour la première fois disponibles au niveau de L'API Android. Mais notez que cela reflète simplement la capacité de ce niveau D'API à parler de ce type de données; un périphérique spécifique pourrait encore manquer le matériel requis.
il semble que l'accéléromètre et le gyroscope soient parmi les capteurs les plus anciens et qu'ils soient probablement présents dans la plupart des combinés.
en ce moment (décembre, 2013) le developer dashboard montre que tous les appareils android accédant à la boutique Play, sauf 1,6%, sont version 2.3 ou plus récente (API 10 ou plus récente). Que les données sont basées uniquement sur la version 2.2 ou des appareils plus récents en utilisant le magasin, les appareils de plus de 2,2 étaient seulement environ 1% de tous les appareils s'enregistrant dans N'importe quel serveur Google en août 2013. Cette page contient des informations sur la résolution de l'affichage de l'appareil, mais ne semble pas couvrir les autres caractéristiques des appareils. Je ne pouvais pas trouver un tableau de bord spécifiquement couverts quels capteurs sont disponibles dans la nature.