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.