Xamarin.Essentials: MagnetómetroXamarin.Essentials: Magnetometer

La clase Magnetometer permite supervisar el sensor de magnetómetro del dispositivo, que indica la orientación del dispositivo con respecto al campo magnético de la Tierra.The Magnetometer class lets you monitor the device's magnetometer sensor which indicates the device's orientation relative to Earth's magnetic field.

Primeros pasosGet started

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.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.

Uso de MagnetometerUsing Magnetometer

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

La funcionalidad Magnetometer funciona mediante una llamada a los métodos Start y Stop para realizar escuchas de los cambios en el magnetómetro.The Magnetometer functionality works by calling the Start and Stop methods to listen for changes to the magnetometer. Los cambios se enviarán a través del evento ReadingChanged.Any changes are sent back through the ReadingChanged event. A continuación le mostramos un ejemplo de uso: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.
        }
    }
}

Todos los datos se devuelven en µ (microteslas).All data is returned in µ (microteslas).

Velocidad de sensorSensor Speed

  • Más rápido: obtener los datos del sensor tan rápido como sea posible (no se garantiza la devolución en el subproceso de interfaz de usuario).Fastest – Get the sensor data as fast as possible (not guaranteed to return on UI thread).
  • Juego: velocidad adecuada para juegos (no se garantiza la devolución en el subproceso de interfaz de usuario).Game – Rate suitable for games (not guaranteed to return on UI thread).
  • Normal: velocidad predeterminada adecuada para los cambios de orientación de pantalla.Normal – Default rate suitable for screen orientation changes.
  • Interfaz de usuario: velocidad adecuada para la interfaz de usuario general.UI – Rate suitable for general user interface.

Si no se garantiza la ejecución del controlador de eventos en el subproceso de interfaz de usuario y si el controlador de eventos necesita tener acceso a elementos de la interfaz de usuario, use el método MainThread.BeginInvokeOnMainThread para ejecutar ese código en el subproceso de interfaz de usuario.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