Xamarin.Essentials:Accéléromètre

La classe Accelerometer permet de superviser le capteur de type accéléromètre de l’appareil, qui indique l’accélération de l’appareil dans un espace en trois dimensions.

Bien démarrer

Pour commencer à utiliser cette API, lisez le guide de prise en main pour Xamarin.Essentials vous assurer que la bibliothèque est correctement installée et configurée dans vos projets.

Utilisation de **Accelerometer**

Ajoutez une référence à Xamarin.Essentials votre classe :

using Xamarin.Essentials;

Pour écouter les changements d’accélération, il suffit d'appeler les méthodes Start et Stop. Toutes les variations peuvent être écoutées via l’événement ReadingChanged. Voici un exemple d’utilisation :


public class AccelerometerTest
{
    // Set speed delay for monitoring changes.
    SensorSpeed speed = SensorSpeed.UI;

    public AccelerometerTest()
    {
        // Register for reading changes, be sure to unsubscribe when finished
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
    }

    void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
        var data = e.Reading;
        Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
        // Process Acceleration X, Y, and Z
    }

    public void ToggleAccelerometer()
    {
        try
        {
            if (Accelerometer.IsMonitoring)
              Accelerometer.Stop();
            else
              Accelerometer.Start(speed);
        }
        catch (FeatureNotSupportedException fnsEx)
        {
            // Feature not supported on device
        }
        catch (Exception ex)
        {
            // Other error has occurred.
        }
    }
}

Les lectures de l’accéléromètre sont retournées en G. G est une unité de force gravitationnelle égale à celle exercée par le champ gravitationnelle de la Terre (9,81 m/s^2).

Le système de coordonnées est défini par rapport à l’écran du téléphone dans son orientation par défaut. Les axes ne sont pas intervertis quand l’orientation de l’écran de l’appareil change.

L’axe des X est horizontal et pointe vers la droite, l’axe des Y est vertical et pointe vers le haut et l’axe Z pointe vers l’extérieur de la face 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 est à plat sur une table et est poussé par son côté gauche vers la droite, la valeur d’accélération x est un nombre 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 est à plat sur une table et est poussé vers le ciel avec une accélération de A m/s^2, la valeur de l’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.

Vitesse de capteur

  • Le plus rapide : obtenir les données de capteur aussi rapidement que possible (aucune garantie de retour sur le thread d’interface utilisateur).
  • Jeu : débit adapté aux jeux (aucune garantie de retour sur le thread d’interface utilisateur).
  • Par défaut : taux par défaut adapté aux modifications d’orientation de l’écran.
  • UI : débit adapté à une interface utilisateur général.

Si votre gestionnaire d’événements ne garantit pas l’exécution sur le thread d’interface utilisateur et si le gestionnaire d’événements doit accéder aux éléments de l’interface utilisateur, utilisez la méthode MainThread.BeginInvokeOnMainThread pour exécuter ce code sur le thread d’interface utilisateur.

API

Retrouvez d’autres vidéos Xamarin sur Channel 9 et YouTube.