Capteurs
Les capteurs informent votre application de la relation entre un appareil et le monde physique qui l’entoure. Les capteurs peuvent indiquer à votre application la direction, l’orientation et le mouvement de l’appareil. Ces capteurs peuvent aider à rendre votre jeu, votre application de réalité augmentée ou l’application utilitaire plus utile et interactive en fournissant une forme unique d’entrée, comme l’utilisation du mouvement de l’appareil pour organiser les caractères à l’écran ou pour simuler l’être dans un cockpit et l’utilisation de l’appareil comme volant.
En règle générale, déterminez dès le départ si votre application dépend exclusivement des capteurs ou si les capteurs offrent simplement un mécanisme de contrôle supplémentaire. Par exemple, un jeu de conduite à l’aide d’un appareil en tant que volant virtuel peut également être contrôlé par le biais d’une interface graphique graphique à l’écran, de cette façon, l’application fonctionne indépendamment des capteurs disponibles sur le système. D’autre part, un labyrinthe d’inclinaison de marbre peut être codé pour fonctionner uniquement sur les systèmes qui ont les capteurs appropriés. Vous devez faire le choix stratégique de s’il faut s’appuyer entièrement sur des capteurs. Notez qu’un schéma de contrôle tactile/souris échange l’immersion pour un meilleur contrôle.
Sujet | Description |
---|---|
Étalonner des capteurs | Les capteurs d’un appareil basé sur le magnétomètre ( la boussole, l’inclinomètre et le capteur d’orientation) peuvent devenir nécessaires à l’étalonnage en raison de facteurs environnementaux. L’énumération MagnetometerAccuracy peut aider à déterminer un cours d’action lorsque votre appareil a besoin d’étalonnage. |
Orientation de capteur | Les données de capteur des classes OrientationSensor sont définies par leurs axes de référence. Ces axes sont définis par l’orientation paysage de l’appareil et pivotent avec l’appareil au fur et à mesure que l’utilisateur le transforme. |
Utiliser l’accéléromètre | Découvrez comment utiliser l’accéléromètre pour répondre au mouvement de l’utilisateur. |
Utiliser la boussole | Découvrez comment utiliser la boussole pour déterminer le titre actuel. |
Utiliser le gyromètre | Découvrez comment utiliser le gyromètre pour détecter les changements dans le mouvement utilisateur. |
Utiliser l’inclinomètre | Découvrez comment utiliser l’inclinomètre pour déterminer la hauteur, le rouleau et le lacet. |
Utiliser le capteur lumineux | Découvrez comment utiliser le capteur de lumière ambiante pour détecter les changements d’éclairage. |
Utiliser le capteur d’orientation | Découvrez comment utiliser les capteurs d’orientation pour déterminer l’orientation de l’appareil. |
Traitement par lots de capteurs
Certains capteurs prennent en charge le concept de traitement par lots. Cela varie en fonction du capteur individuel disponible. Lorsqu’un capteur implémente le traitement par lots, il collecte plusieurs points de données sur un intervalle de temps spécifié, puis transfère toutes ces données à la fois. Cela diffère du comportement normal où un capteur signale ses résultats dès qu’il effectue une lecture. Considérez le diagramme suivant qui montre comment les données sont collectées, puis livrées, d’abord avec la livraison normale, puis avec la livraison par lot.
L’avantage principal pour le traitement par lots de capteurs est de prolonger la durée de vie de la batterie. Lorsque les données ne sont pas envoyées immédiatement, cela enregistre sur la puissance du processeur et empêche le traitement immédiat des données. Les parties du système peuvent dormir jusqu’à ce qu’elles soient nécessaires, ce qui génère une économie d’énergie significative.
Vous pouvez influencer la fréquence à laquelle le capteur envoie des lots en ajustant la latence. Par exemple, le capteur Accelerometer a la propriété ReportLatency. Lorsque cette propriété est définie pour une application, le capteur envoie des données après la durée spécifiée. Vous pouvez contrôler la quantité de données accumulées sur une latence donnée en définissant la propriété ReportInterval.
Il existe quelques mises en garde à garder à l’esprit en ce qui concerne la définition de la latence. La première mise en garde est que chaque capteur a un MaxBatchSize qu’il peut prendre en charge en fonction du capteur lui-même. Il s’agit du nombre d’événements que le capteur peut mettre en cache avant qu’il ne soit forcé de les envoyer. Si vous multipliez MaxBatchSize par ReportInterval, qui détermine la valeur de reportLatency maximale. Si vous spécifiez une valeur supérieure à celle-ci, la latence maximale sera utilisée afin de ne pas perdre de données. En outre, plusieurs applications peuvent chacun définir une latence souhaitée. Pour répondre aux besoins de toutes les applications, la période de latence la plus courte sera utilisée. En raison de ces faits, la latence que vous définissez dans votre application peut ne pas correspondre à la latence observée.
Si un capteur utilise la création de rapports par lots, l’appel de GetCurrentReading efface le lot actuel de données et démarre une nouvelle période de latence.
Accéléromètre
Le capteur Accelerometer mesure les valeurs de force G le long des axes X, Y et Z de l’appareil et est idéal pour les applications simples basées sur les mouvements. Notez que les valeurs de force G incluent l’accélération en raison de la gravité. Si l’appareil a la SimpleOrientation de FaceUp sur une table, l’accéléromètre lit -1 G sur l’axe Z. Ainsi, les accéléromètres ne mesurent pas nécessairement l’accélération de coordonnées : le taux de changement de vitesse. Lorsque vous utilisez un accéléromètre, veillez à différencier le vecteur gravitationnel de la gravité et le vecteur d’accélération linéaire du mouvement. Notez que le vecteur gravitationnel doit normaliser à 1 pour un appareil stationnaire.
Les diagrammes suivants illustrent :
- V1 = Vecteur 1 = Force due à la gravité
- V2 = Vecteur 2 = -Z axe du châssis de l’appareil (pointe vers l’arrière de l’écran)
- Θi = Angle d’inclinaison (inclinaison) = angle entre l’axe Z du châssis de l’appareil et le vecteur de gravité
Les applications susceptibles d’utiliser le capteur d’accéléromètre incluent un jeu où une bille sur l’écran roule dans le sens où vous inclinez l’appareil (vecteur gravitationnel). Ce type de fonctionnalité reflète étroitement celui de l’Inclinomètre et peut également être effectué avec ce capteur à l’aide d’une combinaison de tangage et de rouleau. L’utilisation du vecteur de gravité de l’accéléromètre simplifie cela quelque peu en fournissant un vecteur facilement manipulé mathématiquement pour l’inclinaison de l’appareil. Un autre exemple serait une application qui rend le son de craquage d’un fouet lorsque l’utilisateur fait glisser l’appareil à travers l’air (vecteur d’accélération linéaire).
Pour obtenir un exemple d’implémentation, consultez l’exemple d’accéléromètre.
Capteur d’activité
Le capteur d’activité détermine l’état actuel de l’appareil attaché au capteur. Ce capteur est fréquemment utilisé dans les applications de fitness pour suivre quand un utilisateur transportant un appareil est en cours d’exécution ou de marche. Consultez ActivityType pour obtenir la liste des activités possibles qui peuvent être détectées par cette API de capteur.
Pour obtenir un exemple d’implémentation, consultez l’exemple de capteur d’activité.
Altimètre
Le capteur Altimeter retourne une valeur qui indique l’altitude du capteur. Cela vous permet de suivre un changement d’altitude en termes de mètres du niveau de la mer. L’un des exemples d’une application qui peut l’utiliser serait une application en cours d’exécution qui effectue le suivi des modifications d’élévation pendant une exécution pour calculer les calories brûlées. Dans ce cas, ces données de capteur peuvent être combinées avec le capteur d’activité pour fournir des informations de suivi plus précises.
Pour obtenir un exemple d’implémentation, consultez l’exemple d’altimètre.
Barometer
Le capteur Baromètre permet à une application d’obtenir des lectures barométriques. Une application météorologique pourrait utiliser ces informations pour fournir la pression atmosphérique actuelle. Cela pourrait être utilisé pour fournir des informations plus détaillées et prédire les changements météorologiques potentiels.
Pour obtenir un exemple d’implémentation, consultez l’exemple de baromètre.
Compass
Le capteur Compass retourne un titre 2D par rapport au nord magnétique basé sur le plan horizontal de la terre. Le capteur de boussole ne doit pas être utilisé pour déterminer l’orientation spécifique de l’appareil ou pour représenter quoi que ce soit dans l’espace 3D. Les caractéristiques géographiques peuvent entraîner une déclinaison naturelle dans le titre, de sorte que certains systèmes prennent en charge HeadingMagneticNorth et HeadingTrueNorth. Pensez à laquelle votre application préfère, mais n’oubliez pas que tous les systèmes ne signalent pas une valeur nord réelle. Les capteurs gyromètre et magnétomètre (appareil mesurant la grandeur de la force magnétique) combinent leurs données pour produire le titre de boussole, qui a l’effet net de stabiliser les données (la force du champ magnétique est très instable en raison des composants du système électrique).
Les applications qui souhaitent afficher une boussole rose ou naviguer sur une carte utilisent généralement le capteur de boussole.
Pour obtenir un exemple d’implémentation, consultez l’exemple de boussole.
Gyrometer
Le capteur Gyromètre mesure les vitesses angulaires le long des axes X, Y et Z. Ils sont très utiles dans les applications simples basées sur les mouvements qui ne se préoccupent pas de l’orientation de l’appareil, mais s’intéressent à la rotation de l’appareil à différentes vitesses. Les gyromètres peuvent souffrir de bruit dans les données ou d’un biais constant le long d’un ou plusieurs axes. Vous devez interroger l’accéléromètre pour vérifier si l’appareil se déplace pour déterminer si le gyromètre souffre d’un biais, puis compenser en conséquence dans votre application.
Un exemple d’application qui pourrait utiliser le capteur gyromètre est un jeu qui tourne une roulette en fonction d’une rotation rapide de l’appareil.
Pour obtenir un exemple d’implémentation, consultez l’exemple de gyromètre.
Inclinometer
Le capteur Inclinomètre spécifie les valeurs de lacet, de tangage et de rouleau d’un appareil et fonctionne le mieux avec les applications qui s’intéressent à la façon dont l’appareil est situé dans l’espace. Le tangage et le rouleau sont dérivés en prenant le vecteur de gravité de l’accéléromètre et en intégrant les données du gyromètre. Le lacet est établi à partir des données de magnétomètre et de gyromètre (similaire au titre de boussole). Les inclinomètres offrent des données d’orientation avancées d’une manière facilement digestible et compréhensible. Utilisez des inclinomètres lorsque vous avez besoin de l’orientation de l’appareil, mais n’avez pas besoin de manipuler les données du capteur.
Les applications qui modifient leur vue pour correspondre à l’orientation de l’appareil peuvent utiliser le capteur inclinomètre. En outre, une application qui affiche un avion qui correspond au lacet, au tangage et au rouleau de l’appareil utiliserait également les lectures d’inclinomètre.
Pour obtenir un exemple d’implémentation, consultez l’exemple d’inclinomètre https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometer.
Capteur lumineux
Le capteur de lumière est capable de déterminer la lumière ambiante entourant le capteur. Cela permet à une application de déterminer quand le paramètre lumineux entourant un appareil a changé. Par exemple, un utilisateur disposant d’un appareil d’ardoise peut marcher de l’intérieur à l’extérieur pendant une journée ensoleillée. Une application intelligente peut utiliser cette valeur pour augmenter le contraste entre l’arrière-plan et la police affichée. Cela rendait le contenu toujours lisible dans le cadre plus lumineux et extérieur.
Pour obtenir un exemple d’implémentation, consultez l’exemple de capteur de lumière.
Capteur d’orientation
L’orientation de l’appareil est exprimée à la fois par quaternion et par une matrice de rotation. OrientationSensor offre un degré élevé de précision pour déterminer comment l’appareil est situé dans l’espace par rapport au titre absolu. Les données OrientationSensor sont dérivées de l’accéléromètre, du gyromètre et du magnétomètre. Par conséquent, les capteurs d’inclinomètre et de boussole peuvent être dérivés des valeurs de quaternion. Les quaternions et les matrices de rotation se prêtent bien à la manipulation mathématique avancée et sont souvent utilisées dans la programmation graphique. Les applications qui utilisent une manipulation complexe doivent favoriser le capteur d’orientation, car de nombreuses transformations sont basées sur des quaternions et des matrices de rotation.
Le capteur d’orientation est souvent utilisé dans les applications de réalité augmentée avancées qui peintnt une superposition sur vos environs en fonction de la direction vers l’arrière de l’appareil pointe.
Pour obtenir un exemple d’implémentation, consultez l’exemple de capteur d’orientation.
Podomètre
Le capteur Pedomètre effectue le suivi du nombre d’étapes effectuées par l’utilisateur qui transporte l’appareil connecté. Le capteur est configuré pour suivre le nombre d’étapes sur une période donnée. Plusieurs applications de fitness aiment suivre le nombre d’étapes effectuées afin d’aider l’utilisateur à définir et à atteindre différents objectifs. Ces informations peuvent ensuite être collectées et stockées pour afficher la progression au fil du temps.
Pour obtenir un exemple d’implémentation, consultez l’exemple de pedomètre.
Capteur de proximité
Le capteur de proximité peut être utilisé pour indiquer si des objets sont détectés ou non par le capteur. En plus de déterminer si un objet se trouve dans la plage de l’appareil, le capteur de proximité peut également déterminer la distance avec l’objet détecté. Un exemple où cela peut être utilisé est avec une application qui souhaite émerger d’un état de veille lorsqu’un utilisateur se trouve dans une plage spécifiée. L’appareil peut être dans un état de veille à faible alimentation jusqu’à ce que le capteur de proximité détecte un objet, puis puisse entrer dans un état plus actif.
Pour obtenir un exemple d’implémentation, consultez l’exemple de capteur de proximité.
Orientation simple
SimpleOrientationSensor détecte l’orientation actuelle du quadrant de l’appareil spécifié ou il est face-haut ou face vers le bas. Il a six états SimpleOrientation possibles (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).
Une application de lecture qui modifie son affichage en fonction de l’appareil maintenu parallèle ou perpendiculaire au sol utilise les valeurs de SimpleOrientationSensor pour déterminer la façon dont l’appareil est conservé.
Pour obtenir un exemple d’implémentation, consultez l’exemple de capteur d’orientation simple.