Accès aux capteurs d’appareil
Les appareils ont toutes sortes de capteurs disponibles. Certains capteurs peuvent détecter le mouvement, d’autres changements dans l’environnement, tels que la lumière. La surveillance et la réaction à ces capteurs rend votre application dynamique en s’adaptant à la façon dont l’appareil est utilisé. Vous pouvez également répondre aux modifications apportées aux capteurs et alerter l’utilisateur. Cet article vous donne une brève vue d’ensemble des capteurs courants pris en charge par l’interface utilisateur d’application multiplateforme .NET (.NET MAUI).
Les types liés au capteur d’appareil sont disponibles dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Vitesse du capteur
La vitesse du capteur définit la vitesse dans laquelle un capteur retourne des données à votre application. Lorsque vous démarrez un capteur, vous fournissez la vitesse de capteur souhaitée avec l’énumération SensorSpeed :
Fastest
Obtenez les données du capteur aussi rapidement que possible (pas garanti pour revenir sur le thread d’interface utilisateur).Game
Taux adapté aux jeux (non garanti pour revenir sur le thread d’interface utilisateur).UI
Taux adapté à l’interface utilisateur générale.Default
Taux par défaut adapté aux modifications d’orientation de l’écran.
Avertissement
La surveillance d’un trop grand nombre de capteurs à la fois peut affecter les données du capteur de débit renvoyées à votre application.
Dans .NET 8, SensorSpeed les intervalles sont identiques sur toutes les plateformes :
- Default utilise un intervalle de 200 ms.
- UI utilise un intervalle de 60 ms.
- Game utilise un intervalle de 20 ms.
- Fastest utilise un intervalle de 5 ms.
Gestionnaires d’événements de capteur
Les gestionnaires d’événements ajoutés aux capteurs avec les vitesses ou Fastest les Game vitesses ne sont pas garantis pour s’exécuter sur le thread d’interface utilisateur. Si le gestionnaire d’événements doit accéder aux éléments de l’interface utilisateur, utilisez la MainThread.BeginInvokeOnMainThread
méthode pour exécuter ce code sur le thread d’interface utilisateur.
Accéléromètre
Le capteur d’accéléromètre mesure l’accélération de l’appareil le long de ses trois axes. Les données signalées par le capteur représentent la façon dont l’utilisateur déplace l’appareil.
L’interface IAccelerometer fournit l’accès au capteur et est disponible via la Accelerometer.Default propriété. L’interface et Accelerometer
la IAccelerometer
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Démarrage
Pour accéder à la fonctionnalité accéléromètre, la configuration spécifique à la plateforme suivante peut être requise :
Si votre application cible Android 12+ (API 31+), le système place une limite de 200 Hz sur le taux d’actualisation des données de ce capteur. Si votre application doit collecter des données de capteur à l’aide de la vitesse du Fastest capteur, vous devez déclarer l’autorisation HIGH_SAMPLING_RATE_SENSORS
. Vous pouvez configurer l’autorisation de la manière suivante :
Ajoutez l’autorisation basée sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez l’attribut d’assembly suivant après
using
les directives :[assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
- ou -
Mettez à jour le manifeste Android :
Ouvrez le fichier Platforms/Android/AndroidManifest.xml et ajoutez la ligne suivante dans le
manifest
nœud :<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
- ou -
Mettez à jour le manifeste Android dans l’éditeur de manifeste :
Dans Visual Studio, double-cliquez sur le fichier Platforms/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises case activée l’autorisation HIGH_SAMPLING_RATE_SENSORS. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Remarque
Si un utilisateur désactive l’accès au microphone à l’aide des bascules, des mouvements et des capteurs de position sont toujours limités à la vitesse, que vous déclariez l’autorisation HIGH_SAMPLING_RATE_SENSORS
.
Surveiller le capteur d’accéléromètre
Pour commencer à surveiller le capteur d’accéléromètre, appelez la IAccelerometer.Start méthode. .NET MAUI envoie des modifications de données d’accéléromètre à votre application en générant l’événement IAccelerometer.ReadingChanged . Utilisez la méthode pour arrêter la IAccelerometer.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance de l’accéléromètre avec la IAccelerometer.IsMonitoring propriété, ce qui sera true
si l’accéléromètre a été démarré et est actuellement surveillé.
L’exemple de code suivant illustre la surveillance de l’accéléromètre pour les modifications :
public void ToggleAccelerometer()
{
if (Accelerometer.Default.IsSupported)
{
if (!Accelerometer.Default.IsMonitoring)
{
// Turn on accelerometer
Accelerometer.Default.ReadingChanged += Accelerometer_ReadingChanged;
Accelerometer.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off accelerometer
Accelerometer.Default.Stop();
Accelerometer.Default.ReadingChanged -= Accelerometer_ReadingChanged;
}
}
}
private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
// Update UI Label with accelerometer state
AccelLabel.TextColor = Colors.Green;
AccelLabel.Text = $"Accel: {e.Reading}";
}
Les lectures d’accéléromètre sont signalées dans G. Un G est une unité de force de gravité égale à la gravité exercée par le champ gravitationnel de la terre $(9,81 m/s^2)$.
Le système de coordonnées est défini par rapport à l’écran de l’appareil dans son orientation par défaut. Les axes ne sont pas échangés lorsque l’orientation de l’écran de l’appareil change.
L’axe X est horizontal et pointe vers la droite, l’axe Y est vertical et pointe vers le haut et l’axe Z pointe vers l’extérieur du visage avant de l’écran. Dans ce système, les coordonnées derrière l’écran ont des valeurs Z négatives.
Exemples :
Lorsque l’appareil se trouve à plat sur une table et qu’il est poussé à gauche vers la droite, la valeur d’accélération X est positive.
Lorsque l’appareil se trouve à plat sur une table, la valeur d’accélération est +1,00 G ou $(+9,81 m/s^2)$, ce qui correspond à l’accélération de l’appareil $(0 m/s^2)$ moins la force de gravité $(-9,81 m/s^2)$ et normalisée comme dans G.
Lorsque l’appareil se trouve à plat sur une table et est poussé vers le ciel avec une accélération de A $m/s^2$, la valeur d’accélération est égale à $A+9,81$ qui correspond à l’accélération de l’appareil $(+A m/s^2)$ moins la force de gravité $(-9,81 m/s^2)$ et normalisée en G.
Informations spécifiques à la plateforme (Accéléromètre)
Il n’existe aucune information spécifique à la plateforme liée au capteur d’accéléromètre.
Barometer
Le capteur baromètre mesure la pression ambiante de l’air. Les données signalées par le capteur représentent la pression de l’air actuelle. Ces données sont signalées la première fois que vous commencez à surveiller le capteur, puis chaque fois que la pression change.
L’interface IBarometer fournit l’accès au capteur et est disponible via la Barometer.Default propriété. L’interface et Barometer
la IBarometer
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Pour commencer à surveiller le capteur baromètre, appelez la IBarometer.Start méthode. .NET MAUI envoie des lectures de pression de l’air à votre application en générant l’événement IBarometer.ReadingChanged . Utilisez la méthode pour arrêter la IBarometer.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance du baromètre avec la IBarometer.IsMonitoring propriété, ce qui sera true
si le baromètre est actuellement surveillé.
La lecture de la pression est représentée dans les hectopascals.
L’exemple de code suivant illustre la surveillance du baromètre pour les modifications :
public void ToggleBarometer()
{
if (Barometer.Default.IsSupported)
{
if (!Barometer.Default.IsMonitoring)
{
// Turn on barometer
Barometer.Default.ReadingChanged += Barometer_ReadingChanged;
Barometer.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off barometer
Barometer.Default.Stop();
Barometer.Default.ReadingChanged -= Barometer_ReadingChanged;
}
}
}
private void Barometer_ReadingChanged(object sender, BarometerChangedEventArgs e)
{
// Update UI Label with barometer state
BarometerLabel.TextColor = Colors.Green;
BarometerLabel.Text = $"Barometer: {e.Reading}";
}
Informations spécifiques à la plateforme (Baromètre)
Cette section décrit les détails d’implémentation spécifiques à la plateforme liés au capteur baromètre.
Aucun détail d’implémentation spécifique à la plateforme.
Compass
Le capteur de boussole surveille le cap magnétique nord de l’appareil.
L’interface ICompass fournit l’accès au capteur et est disponible via la Compass.Default propriété. L’interface et Compass
la ICompass
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Pour commencer à surveiller le capteur de boussole, appelez la ICompass.Start méthode. .NET MAUI déclenche l’événement ICompass.ReadingChanged lorsque le titre de boussole change. Utilisez la méthode pour arrêter la ICompass.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance de la boussole avec la ICompass.IsMonitoring propriété, ce qui sera true
si la boussole est actuellement surveillée.
L’exemple de code suivant illustre la surveillance de la boussole pour les modifications :
private void ToggleCompass()
{
if (Compass.Default.IsSupported)
{
if (!Compass.Default.IsMonitoring)
{
// Turn on compass
Compass.Default.ReadingChanged += Compass_ReadingChanged;
Compass.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off compass
Compass.Default.Stop();
Compass.Default.ReadingChanged -= Compass_ReadingChanged;
}
}
}
private void Compass_ReadingChanged(object sender, CompassChangedEventArgs e)
{
// Update UI Label with compass state
CompassLabel.TextColor = Colors.Green;
CompassLabel.Text = $"Compass: {e.Reading}";
}
Informations spécifiques à la plateforme (Compass)
Cette section décrit les détails d’implémentation spécifiques à la plateforme liés à la fonctionnalité boussole.
Android ne fournit pas d’API pour récupérer le titre de boussole. .NET MAUI utilise les capteurs d’accéléromètre et de magnétomètre pour calculer le titre magnétique nord, qui est recommandé par Google.
Dans de rares cas, vous voyez peut-être des résultats incohérents, car les capteurs doivent être étalonnés. La recalibraisation de la boussole sur Android varie selon le modèle de téléphone et la version Android. Vous devrez rechercher sur Internet sur la façon de recalibrer la boussole. Voici deux liens qui peuvent aider à recalibrarner la boussole :
- Centre d’aide Google : Rechercher et améliorer la précision de votre emplacement
- Passionnés d’Android Stack Exchange : Comment puis-je étalonner la boussole sur mon téléphone ?
L’exécution de plusieurs capteurs à partir de votre application en même temps peut affecter la vitesse du capteur.
Filtre lowpass
En raison de la façon dont les valeurs de boussole Android sont mises à jour et calculées, il peut être nécessaire de lissér les valeurs. Un filtre Lowpass peut être appliqué qui moyenne les valeurs de sinus et de cosinus des angles et peut être activé à l’aide de la Start
surcharge de méthode, qui accepte le bool applyLowPassFilter
paramètre :
Compass.Default.Start(SensorSpeed.UI, applyLowPassFilter: true);
Cela est appliqué uniquement sur la plateforme Android, et le paramètre est ignoré sur iOS et Windows. Pour plus d’informations, consultez ce commentaire de problème GitHub.
Mélanger
Même si cet article répertorie les tremblements en tant que capteur, ce n’est pas le cas. L’accéléromètre est utilisé pour détecter quand l’appareil est ébranlé.
L’interface IAccelerometer fournit l’accès au capteur et est disponible via la Accelerometer.Default propriété. L’interface et Accelerometer
la IAccelerometer
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Remarque
Si votre application doit collecter des données de capteur d’accéléromètre à l’aide de la vitesse du Fastest capteur, vous devez déclarer l’autorisation HIGH_SAMPLING_RATE_SENSORS
. Pour plus d’informations, consultez Accelerometer.
L’API de détection des secousses utilise des relevés bruts de l’accéléromètre pour calculer l’accélération. Elle utilise un simple mécanisme de file d’attente pour détecter si les 3/4 des événements d’accéléromètre récents se sont produits lors de la dernière demie-seconde. L’accélération est calculée en ajoutant le carré des lectures X, Y et Z ($x^2+y^2+z^2$) à partir de l’accéléromètre et en la comparant à un seuil spécifique.
Pour commencer à surveiller le capteur d’accéléromètre, appelez la IAccelerometer.Start méthode. Lorsqu’un shake est détecté, l’événement IAccelerometer.ShakeDetected est déclenché. Utilisez la méthode pour arrêter la IAccelerometer.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance de l’accéléromètre avec la IAccelerometer.IsMonitoring
propriété, ce qui sera true
si l’accéléromètre a été démarré et est actuellement surveillé.
Il est recommandé d’utiliser Game ou plus rapidement pour le SensorSpeed.
L’exemple de code suivant illustre la surveillance de l’accéléromètre pour l’événement ShakeDetected
:
private void ToggleShake()
{
if (Accelerometer.Default.IsSupported)
{
if (!Accelerometer.Default.IsMonitoring)
{
// Turn on accelerometer
Accelerometer.Default.ShakeDetected += Accelerometer_ShakeDetected;
Accelerometer.Default.Start(SensorSpeed.Game);
}
else
{
// Turn off accelerometer
Accelerometer.Default.Stop();
Accelerometer.Default.ShakeDetected -= Accelerometer_ShakeDetected;
}
}
}
private void Accelerometer_ShakeDetected(object sender, EventArgs e)
{
// Update UI Label with a "shaked detected" notice, in a randomized color
ShakeLabel.TextColor = new Color(Random.Shared.Next(256), Random.Shared.Next(256), Random.Shared.Next(256));
ShakeLabel.Text = $"Shake detected";
}
Informations spécifiques à la plateforme (Shake)
Il n’existe aucune information spécifique à la plateforme liée au capteur d’accéléromètre.
Gyroscope
Le capteur gyroscope mesure la vitesse de rotation angulaire autour des trois axes principaux de l’appareil.
L’interface IGyroscope fournit l’accès au capteur et est disponible via la Gyroscope.Default propriété. L’interface et Gyroscope
la IGyroscope
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Démarrage
Pour accéder à la fonctionnalité gyroscope, la configuration spécifique à la plateforme suivante peut être nécessaire :
Si votre application cible Android 12+ (API 31+), le système place une limite de 200 Hz sur le taux d’actualisation des données de ce capteur. Si votre application doit collecter des données de capteur à l’aide de la vitesse du Fastest capteur, vous devez déclarer l’autorisation HIGH_SAMPLING_RATE_SENSORS
. Vous pouvez configurer l’autorisation de la manière suivante :
Ajoutez l’autorisation basée sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez l’attribut d’assembly suivant après
using
les directives :[assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
- ou -
Mettez à jour le manifeste Android :
Ouvrez le fichier Platforms/Android/AndroidManifest.xml et ajoutez la ligne suivante dans le
manifest
nœud :<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
- ou -
Mettez à jour le manifeste Android dans l’éditeur de manifeste :
Dans Visual Studio, double-cliquez sur le fichier Platforms/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises case activée l’autorisation HIGH_SAMPLING_RATE_SENSORS. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Remarque
Si un utilisateur désactive l’accès au microphone à l’aide des bascules, des mouvements et des capteurs de position sont toujours limités à la vitesse, que vous déclariez l’autorisation HIGH_SAMPLING_RATE_SENSORS
.
Surveiller le capteur gyroscope
Pour commencer à surveiller le capteur gyroscope, appelez la IGyroscope.Start méthode. .NET MAUI envoie des modifications de données gyroscope à votre application en générant l’événement IGyroscope.ReadingChanged . Les données fournies par cet événement sont mesurées en rad/s (radian par seconde). Utilisez la méthode pour arrêter la IGyroscope.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance du gyroscope avec la IGyroscope.IsMonitoring propriété, qui sera true
si le gyroscope a été démarré et est actuellement surveillé.
L’exemple de code suivant illustre la surveillance du gyroscope :
private void ToggleGyroscope()
{
if (Gyroscope.Default.IsSupported)
{
if (!Gyroscope.Default.IsMonitoring)
{
// Turn on gyroscope
Gyroscope.Default.ReadingChanged += Gyroscope_ReadingChanged;
Gyroscope.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off gyroscope
Gyroscope.Default.Stop();
Gyroscope.Default.ReadingChanged -= Gyroscope_ReadingChanged;
}
}
}
private void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
// Update UI Label with gyroscope state
GyroscopeLabel.TextColor = Colors.Green;
GyroscopeLabel.Text = $"Gyroscope: {e.Reading}";
}
Informations spécifiques à la plateforme (Gyroscope)
Il n’existe aucune information spécifique à la plateforme liée au capteur gyroscope.
Magnétomètre
Le capteur de magnétomètre indique l’orientation de l’appareil par rapport au champ magnétique de la Terre.
L’interface IMagnetometer fournit l’accès au capteur et est disponible via la Magnetometer.Default propriété. L’interface et Magnetometer
la IMagnetometer
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Démarrage
Pour accéder à la fonctionnalité de magnétomètre, la configuration spécifique à la plateforme suivante peut être nécessaire :
Si votre application cible Android 12+ (API 31+), le système place une limite de 200 Hz sur le taux d’actualisation des données de ce capteur. Si votre application doit collecter des données de capteur à l’aide de la vitesse du Fastest capteur, vous devez déclarer l’autorisation HIGH_SAMPLING_RATE_SENSORS
. Vous pouvez configurer l’autorisation de la manière suivante :
Ajoutez l’autorisation basée sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez l’attribut d’assembly suivant après
using
les directives :[assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
- ou -
Mettez à jour le manifeste Android :
Ouvrez le fichier Platforms/Android/AndroidManifest.xml et ajoutez la ligne suivante dans le
manifest
nœud :<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
- ou -
Mettez à jour le manifeste Android dans l’éditeur de manifeste :
Dans Visual Studio, double-cliquez sur le fichier Platforms/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises case activée l’autorisation HIGH_SAMPLING_RATE_SENSORS. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Remarque
Si un utilisateur désactive l’accès au microphone à l’aide des bascules, des mouvements et des capteurs de position sont toujours limités à la vitesse, que vous déclariez l’autorisation HIGH_SAMPLING_RATE_SENSORS
.
Surveiller le capteur de magnétomètre
Pour commencer à surveiller le capteur de magnétomètre, appelez la IMagnetometer.Start méthode. .NET MAUI envoie des modifications de données de magnétomètre à votre application en générant l’événement IMagnetometer.ReadingChanged . Les données fournies par cet événement sont mesurées en $μT$ (microteslas). Utilisez la méthode pour arrêter la IMagnetometer.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance du magnétomètre avec la IMagnetometer.IsMonitoring propriété, qui sera true
si le magnétomètre a été démarré et est actuellement surveillé.
L’exemple de code suivant illustre la surveillance du magnétomètre :
private void ToggleMagnetometer()
{
if (Magnetometer.Default.IsSupported)
{
if (!Magnetometer.Default.IsMonitoring)
{
// Turn on magnetometer
Magnetometer.Default.ReadingChanged += Magnetometer_ReadingChanged;
Magnetometer.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off magnetometer
Magnetometer.Default.Stop();
Magnetometer.Default.ReadingChanged -= Magnetometer_ReadingChanged;
}
}
}
private void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
{
// Update UI Label with magnetometer state
MagnetometerLabel.TextColor = Colors.Green;
MagnetometerLabel.Text = $"Magnetometer: {e.Reading}";
}
Informations spécifiques à la plateforme (magnétomètre)
Il n’existe aucune information spécifique à la plateforme liée au capteur de magnétomètre.
Orientation
Le capteur d’orientation surveille l’orientation d’un appareil dans l’espace 3D.
Remarque
Ce capteur n’est pas utilisé pour déterminer si l’affichage vidéo de l’appareil est en mode portrait ou paysage. Utilisez plutôt la propriété DeviceDisplay.Current.MainDisplayInfo.Orientation
. Pour plus d’informations, consultez les informations d’affichage de l’appareil.
L’interface IOrientationSensor fournit l’accès au capteur et est disponible via la OrientationSensor.Default propriété. L’interface et OrientationSensor
la IOrientationSensor
classe sont contenues dans l’espace Microsoft.Maui.Devices.Sensors
de noms.
Pour commencer à surveiller le capteur d’orientation, appelez la IOrientationSensor.Start méthode. .NET MAUI envoie des modifications de données d’orientation à votre application en générant l’événement IOrientationSensor.ReadingChanged . Utilisez la méthode pour arrêter la IOrientationSensor.Stop surveillance du capteur. Vous pouvez détecter l’état de surveillance de l’orientation avec la IOrientationSensor.IsMonitoring propriété, qui sera true
si l’orientation a été démarrée et est actuellement surveillée.
L’exemple de code suivant illustre la surveillance du capteur d’orientation :
private void ToggleOrientation()
{
if (OrientationSensor.Default.IsSupported)
{
if (!OrientationSensor.Default.IsMonitoring)
{
// Turn on orientation
OrientationSensor.Default.ReadingChanged += Orientation_ReadingChanged;
OrientationSensor.Default.Start(SensorSpeed.UI);
}
else
{
// Turn off orientation
OrientationSensor.Default.Stop();
OrientationSensor.Default.ReadingChanged -= Orientation_ReadingChanged;
}
}
}
private void Orientation_ReadingChanged(object sender, OrientationSensorChangedEventArgs e)
{
// Update UI Label with orientation state
OrientationLabel.TextColor = Colors.Green;
OrientationLabel.Text = $"Orientation: {e.Reading}";
}
Les lectures IOrientationSensor
sont retournées sous la forme d’un Quaternion qui décrit l’orientation de l’appareil en fonction de deux systèmes de coordonnées 3D :
L’appareil (en général, un téléphone ou une tablette) dispose d’un système de coordonnées 3D avec les axes suivants :
- L’axe X positif pointe à droite de l’affichage en mode portrait.
- L’axe Y positif pointe vers le haut de l’appareil en mode portrait.
- L’axe Z positif pointe vers l’extérieur de l’écran.
Le système de coordonnées 3D de la terre a les axes suivants :
- L’axe X positif est tangent à la surface de la Terre et pointe vers l’est.
- L’axe Y positif est également tangent à la surface de la Terre et pointe vers le nord.
- L’axe Z positif est perpendiculaire à la surface de la Terre et pointe vers le haut.
Quaternion
décrit la rotation du système de coordonnées de l’appareil par rapport au système de coordonnées de la terre.
Une Quaternion
valeur est étroitement liée à la rotation autour d’un axe. Si un axe de rotation est le vecteur normalisé ($a_x, a_y, a_z$) et que l’angle de rotation est $\theta$, les composants (X, Y, Z, W) du quaternion sont :
$(a_x \times \sin(\theta/2), a_y \times \sin(\theta/2), a_z \times \sin(\theta/2), \cos(\theta/2))$
Il s’agit de systèmes de coordonnées droitiers, donc avec le pouce de la main droit pointée dans le sens positif de l’axe de rotation, la courbe des doigts indique la direction de rotation des angles positifs.
Exemples :
Lorsque l’appareil se trouve à plat sur une table avec son écran vers le haut, avec le bord supérieur de l’appareil (en mode portrait) pointant vers le nord, les deux systèmes de coordonnées sont alignés. La valeur
Quaternion
représente le quaternion d’identité (0, 0, 0, 1). Toutes les rotations peuvent être analysées par rapport à cette position.Lorsque l’appareil se trouve à plat sur une table avec son écran vers le haut, avec le bord supérieur de l’appareil (en mode portrait) pointant vers l’ouest, la valeur
Quaternion
est (0, 0, 0.707, 0.707). L’appareil a été pivoté de 90 degrés autour de l’axe Z de la terre.Lorsque l’appareil est maintenu à la verticale afin que le haut (en mode portrait) pointe vers le ciel et que l’arrière de l’appareil soit face au nord, l’appareil a été pivoté de 90 degrés autour de l’axe X. La valeur
Quaternion
est (0.707, 0, 0, 0.707).Si l’appareil est positionné de sorte que son bord gauche se trouve sur une table et que les points supérieurs nord, l’appareil a été pivoté à -90 degrés autour de l’axe Y (ou 90 degrés autour de l’axe Y négatif). La valeur
Quaternion
est (0, -0.707, 0, 0.707).
Informations spécifiques à la plateforme (Orientation)
Il n’existe aucune information spécifique à la plateforme liée au capteur d’orientation.