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

Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.