Xamarin.Essentials: MagnétomètreXamarin.Essentials: Magnetometer

La classe Magnetometer vous permet de surveiller le capteur de magnétomètre du périphérique qui indique l’orientation du périphérique par rapport à champ magnétique de la terre.The Magnetometer class lets you monitor the device's magnetometer sensor which indicates the device's orientation relative to Earth's magnetic field.

Prise en mainGet started

Pour commencer à utiliser cette API, lisez le Guide de prise en main de Xamarin.Essentials pour vérifier que la bibliothèque est correctement installée et configurée dans vos projets.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Utilisation de MagnetometerUsing Magnetometer

Ajoutez une référence à Xamarin.Essentials dans votre classe :Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

La fonctionnalité de magnétomètre appelle les méthodes Start et Stop pour écouter les changements relatifs au magnétomètre.The Magnetometer functionality works by calling the Start and Stop methods to listen for changes to the magnetometer. Toutes les modifications sont renvoyées par l'événement ReadingChanged.Any changes are sent back through the ReadingChanged event. Voici un exemple d’utilisation :Here is sample usage:


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

    public MagnetometerTest()
    {
        // Register for reading changes.
        Magnetometer.ReadingChanged += Magnetometer_ReadingChanged;
    }

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

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

Toutes les données sont retournées dans μT (microteslas).All data is returned in µT (microteslas).

Vitesse de capteurSensor Speed

  • Le plus rapide : obtenir les données de capteur aussi rapidement que possible (aucune garantie de retour sur le thread d’interface utilisateur).Fastest – Get the sensor data as fast as possible (not guaranteed to return on UI thread).
  • Jeu : débit adapté aux jeux (aucune garantie de retour sur le thread d’interface utilisateur).Game – Rate suitable for games (not guaranteed to return on UI thread).
  • Normal : débit par défaut adapté aux changements d’orientation de l’écran.Normal – Default rate suitable for screen orientation changes.
  • UI : débit adapté à une interface utilisateur général.UI – Rate suitable for general user interface.

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.If your event handler is not guaranteed to run on the UI thread, and if the event handler needs to access user-interface elements, use the MainThread.BeginInvokeOnMainThread method to run that code on the UI thread.

APIAPI