Xamarin.Essentials: Wykryj wstrząs
Klasa Accelerometer umożliwia monitorowanie czujnika akcelerometru urządzenia, który wskazuje przyspieszenie urządzenia w przestrzeni trójwymiarowej. Ponadto umożliwia rejestrowanie zdarzeń, gdy użytkownik potrząsa urządzeniem.
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 funkcji Detect Shake
Dodaj odwołanie do Xamarin.Essentials klasy:
using Xamarin.Essentials;
Aby wykryć wstrząs urządzenia, należy użyć funkcji akcelerometru, wywołując Start
metody i Stop
w celu nasłuchiwania zmian przyspieszenia i wykrywania wstrząsu. Za każdym razem, gdy zostanie wykryty wstrząs, ShakeDetected
zdarzenie zostanie wyzwolone. Zaleca się użycie Game
funkcji lub szybszej dla elementu SensorSpeed
. Oto przykładowe użycie:
public class DetectShakeTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.Game;
public DetectShakeTest()
{
// Register for reading changes, be sure to unsubscribe when finished
Accelerometer.ShakeDetected += Accelerometer_ShakeDetected ;
}
void Accelerometer_ShakeDetected (object sender, EventArgs e)
{
// Process shake event
}
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.
}
}
}
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.
Szczegóły implementacji
Interfejs API wykrywania wstrząsu używa nieprzetworzonych odczytów z akcelerometru do obliczania przyspieszenia. Używa prostego mechanizmu kolejki do wykrywania, czy 3/4. części ostatnich zdarzeń akcelerometru miały miejsce w ciągu ostatniej połowy sekundy. Przyspieszanie jest obliczane przez dodanie kwadratu odczytów X, Y i Z z akcelerometru i porównania go z określonym threashold.
interfejs API
Powiązany film wideo
Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.