Partager via


Accès aux capteurs d’appareil

Browse sample. Parcourir l’exemple

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 :

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.