Xamarin.Essentials:Akcelerometr
Klasa Accelerometer umożliwia monitorowanie czujnika akcelerometru urządzenia, który wskazuje przyspieszenie urządzenia w przestrzeni trójwymiarowej.
Rozpocznij
Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.
Korzystanie z akcelerometru
Dodaj odwołanie do Xamarin.Essentials klasy:
using Xamarin.Essentials;
Funkcja akcelerometru działa przez wywołanie Start
metod i Stop
w celu nasłuchiwania zmian przyspieszenia. Wszelkie zmiany są wysyłane z powrotem za pośrednictwem ReadingChanged
zdarzenia. Oto przykładowe użycie:
public class AccelerometerTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public AccelerometerTest()
{
// Register for reading changes, be sure to unsubscribe when finished
Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
}
void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
var data = e.Reading;
Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
// Process Acceleration X, Y, and Z
}
public void ToggleAccelerometer()
{
try
{
if (Accelerometer.IsMonitoring)
Accelerometer.Stop();
else
Accelerometer.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
Odczyty akcelerometru są zgłaszane z powrotem w G. G jest jednostką siły grawitacyjnej równej tej wywieranej przez pole grawitacyjne ziemi (9,81 m/s^2).
Układ współrzędnych jest zdefiniowany względem ekranu telefonu w domyślnej orientacji. Osie nie są zamieniane po zmianie orientacji ekranu urządzenia.
Oś X jest pozioma i wskazuje po prawej stronie, oś Y jest pionowa i wskazuje w górę, a oś Z wskazuje na zewnątrz przedniej powierzchni ekranu. W tym systemie współrzędne za ekranem mają ujemne wartości Z.
Przykłady:
Gdy urządzenie znajduje się płasko na tabeli i jest wypychane po lewej stronie w kierunku prawej, wartość x przyspieszenia jest dodatnia.
Gdy urządzenie znajduje się płasko w tabeli, wartość przyspieszenia wynosi +1,00 G lub (+9,81 m/s^2), co odpowiada przyspieszaniu urządzenia (0 m/s^2) minus siłą grawitacji (-9,81 m/s^2) i znormalizowaną jak w G.
Gdy urządzenie znajduje się płasko na tabeli i jest przesuwane w kierunku nieba z przyspieszeniem M/s^2, wartość przyspieszenia jest równa A+9,81, która odpowiada przyspieszaniu urządzenia (+A m/s^2) minus siła grawitacji (-9,81 m/s^2) i znormalizowana w G.
Szybkość czujnika
- Najszybsze — jak najszybciej pobierz dane czujnika (nie ma gwarancji powrotu do wątku interfejsu użytkownika).
- Gra — stawka odpowiednia dla gier (nie ma gwarancji powrotu do wątku interfejsu użytkownika).
- Ustawienie domyślne — częstotliwość domyślna odpowiednia dla zmian orientacji ekranu.
- Interfejs użytkownika — szybkość odpowiednia dla ogólnego interfejsu użytkownika.
Jeśli program obsługi zdarzeń nie ma gwarancji, że zostanie uruchomiony w wątku interfejsu użytkownika, a program obsługi zdarzeń musi uzyskać dostęp do elementów interfejsu użytkownika, użyj MainThread.BeginInvokeOnMainThread
metody , aby uruchomić ten kod w wątku interfejsu użytkownika.
interfejs API
Powiązany film wideo
Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.