Xamarin.Essentials: Akcelerometr

Klasa Sensorometer umożliwia monitorowanie czujnika akceleratora urządzenia, który wskazuje orientację urządzenia względem pola magnetycznego Ziemi.

Rozpoczęcie pracy

Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik Wprowadzenie dla programu , aby upewnić się, że biblioteka jest poprawnie zainstalowana i zainstalowana w projektach.

Korzystanie z usługi Flashometer

Dodaj odwołanie do klasy Xamarin.Essentials w klasie :

using Xamarin.Essentials;

Funkcja Platformometer działa przez wywołanie metod Start i Stop w celu nasłuchiwowania zmian w liczniku. Wszelkie zmiany są wysyłane z powrotem za pośrednictwem ReadingChanged zdarzenia. Oto przykładowe użycie:


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

Wszystkie dane są zwracane w μT (mikrousługi).

Szybkość czujnika

  • Najszybsze — pobierz dane z czujników tak szybko, jak to możliwe (nie gwarantuje to powrotu w wątku interfejsu użytkownika).
  • Game — szybkość odpowiednia dla gier (nie ma gwarancji powrotu w wątku interfejsu użytkownika).
  • Default — domyślna szybkość odpowiednia dla zmian orientacji ekranu.
  • Interfejs użytkownika — szybkość odpowiednia dla ogólnego interfejsu użytkownika.

Jeśli nie ma gwarancji, że program obsługi zdarzeń zostanie uruchomiony w wątku interfejsu użytkownika, a program obsługi zdarzeń musi uzyskać dostęp do elementów interfejsu użytkownika, MainThread.BeginInvokeOnMainThread użyj metody , aby uruchomić ten kod w wątku interfejsu użytkownika.

interfejs API