Xamarin.Essentials: Magnetómetro
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.
Primeros pasos
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.
Uso de Magnetometer
Agregue una referencia a Xamarin.Essentials en la clase:
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. Los cambios se enviarán a través del evento ReadingChanged
. A continuación le mostramos un ejemplo de uso:
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 µT (microteslas).
Velocidad de sensor
- 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).
- Juego: velocidad adecuada para juegos (no se garantiza la devolución en el subproceso de interfaz de usuario).
- Predeterminado: velocidad predeterminada adecuada para los cambios de orientación de pantalla.
- Interfaz de usuario: velocidad adecuada para la interfaz de usuario general.
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.