Xamarin.Essentials: Magnetometer

Třída Magnetometer umožňuje monitorovat senzor magnetometru zařízení, který označuje orientaci zařízení vzhledem k magnetickému poli Země.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Použití magnetometru

Přidejte do Xamarin.Essentials předmětu odkaz:

using Xamarin.Essentials;

Funkce magnetometru funguje voláním Start metod a Stop nasloucháním změn magnetometru. Všechny změny se posílají zpět prostřednictvím ReadingChanged události. Tady je ukázkové využití:


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.
        }
    }
}

Všechna data se vrací v μT (mikroteslas).

Rychlost snímače

  • Nejrychlejší – co nejrychleji získejte data ze snímačů (není zaručeno, že se vrátíte na vlákno uživatelského rozhraní).
  • Hra – Rychlost vhodná pro hry (není zaručeno vrácení na vlákno uživatelského rozhraní).
  • Výchozí – Výchozí rychlost vhodná pro změny orientace obrazovky.
  • UŽIVATELSKÉ rozhraní – Rychlost vhodná pro obecné uživatelské rozhraní.

Pokud obslužná rutina události není zaručena spuštění ve vlákně uživatelského rozhraní a pokud obslužná rutina události potřebuje přístup k prvkům uživatelského rozhraní, použijte metodu MainThread.BeginInvokeOnMainThread ke spuštění kódu ve vlákně uživatelského rozhraní.

rozhraní API