Xamarin.Essentials: Erkennen einer Schüttelbewegung

Mit der Accelerometer -Klasse können Sie den Sensor für die Beschleunigungsmessung des Geräts überwachen, der die Beschleunigung des Geräts im dreidimensionalen Raum angibt. Außerdem können Sie Ereignisse einrichten, die ausgelöst werden, wenn der Benutzer das Gerät schüttelt.

Erste Schritte

Lesen Sie zum Einstieg in die Verwendung dieser API den Leitfaden mit ersten Schritte für Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.

Verwenden der Erkennung von Schüttelbewegungen

Fügen Sie in Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:

using Xamarin.Essentials;

Zum Erkennen von Schüttelbewegungen des Geräts müssen Sie die Beschleunigungsmesserfunktionalität verwenden, indem Sie die Methoden Start und Stop aufrufen, um auf Änderungen an der Beschleunigung zu lauschen und das Schütteln zu erkennen. Jedes Mal, wenn eine Schüttelbewegung erkannt wird, wird ein ShakeDetected-Ereignis ausgelöst. Es wird empfohlen, Game oder schneller für die SensorSpeed zu verwenden. Sie können sie z.B. wie folgt verwenden:


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.
        }
    }
}

Sensorgeschwindigkeit

  • Schnellste: Ruft die Sensordaten so schnell wie möglich ab (in einem UI-Thread ist eine Rückgabe nicht garantiert).
  • Spiel: Für Spiele geeignete Übertragungsrate (in einem UI-Thread ist eine Rückgabe nicht garantiert).
  • Standard: Für Änderungen der Bildschirmausrichtung geeignete Standardübertragungsrate.
  • UI: Für allgemeine Benutzeroberflächenaktionen geeignete Übertragungsrate.

Wenn für Ihren Ereignishandler die Ausführung im UI-Thread nicht garantiert werden kann und der Ereignishandler auf Benutzeroberflächenelemente zugreifen muss, verwenden Sie die Methode MainThread.BeginInvokeOnMainThread, um diesen Code im UI-Thread auszuführen.

Implementierungsdetails

Die API zum Erkennen von Schüttelbewegungen verwendet unformatierte Messwerte vom Beschleunigungsmesser, um die Beschleunigung zu berechnen. Sie nutzt einen einfachen Warteschlangenmechanismus, um zu ermitteln, ob 3/4 der letzten Beschleunigungsmesserereignisse in der letzten halben Sekunde aufgetreten sind. Die Beschleunigung wird durch Addieren der X-, Y- und Z-Messwerte des Beschleunigungsmessers zum Quadrat und Vergleichen mit einem bestimmten Schwellenwert berechnet.

API

Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.