Xamarin.Essentials:Żyroskop
Klasa Gyroscope umożliwia monitorowanie czujnika żyroskopowego urządzenia, który jest rotacją wokół trzech głównych osi urządzenia.
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 żyroskopu
Dodaj odwołanie do Xamarin.Essentials klasy:
using Xamarin.Essentials;
Funkcja Gyroscope działa przez wywołanie Start
metod i Stop
w celu nasłuchiwania zmian w żyroskopie. Wszelkie zmiany są wysyłane z powrotem za pośrednictwem ReadingChanged
zdarzenia w radia/s. Oto przykładowe użycie:
public class GyroscopeTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public GyroscopeTest()
{
// Register for reading changes.
Gyroscope.ReadingChanged += Gyroscope_ReadingChanged;
}
void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
var data = e.Reading;
// Process Angular Velocity X, Y, and Z reported in rad/s
Console.WriteLine($"Reading: X: {data.AngularVelocity.X}, Y: {data.AngularVelocity.Y}, Z: {data.AngularVelocity.Z}");
}
public void ToggleGyroscope()
{
try
{
if (Gyroscope.IsMonitoring)
Gyroscope.Stop();
else
Gyroscope.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
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.