Xamarin.Essentials:Magnétomètre
La classe Magnetometer vous permet de superviser le capteur magnétométrique de l’appareil, qui indique l’orientation de l’appareil par rapport au champ magnétique terrestre.
Démarrage
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 du magnétomètre
Ajoutez une référence à Xamarin.Essentials votre classe :
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. Toutes les variations peuvent être écoutées via l’événement ReadingChanged
. Voici un exemple d’utilisation :
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 en μT (microteslas).
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.