Xamarin.Essentials: Détecter les secousses

La classe Accelerometer vous permet de surveiller le capteur accéléromètre de l’appareil, ce qui indique l’accélération de l’appareil dans un espace en trois dimensions. De plus, elle vous permet d’enregistrer des événements quand l’utilisateur secoue l’appareil.

Bien démarrer

Pour commencer à utiliser cette API, lisez le guide de prise en main pour Xamarin.Essentials vous assurer que la bibliothèque est correctement installée et configurée dans vos projets.

Utilisation de la détection de secousses

Ajoutez une référence à Xamarin.Essentials dans votre classe :

using Xamarin.Essentials;

Pour détecter une secousse de l’appareil, vous devez utiliser la fonctionnalité d’accéléromètre en appelant les méthodes Start et Stop pour écouter les modifications d’accélération et détecter une secousse. Chaque fois qu’une secousse est détectée, un événement ShakeDetected se déclenche. Il est recommandé d’utiliser Game ou une version plus rapide pour SensorSpeed. Voici un exemple d’utilisation :


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

Vitesse de capteur

  • Le plus rapide : obtenir les données de capteur aussi rapidement que possible (aucune garantie de retour sur le thread d’interface utilisateur).
  • Jeu : débit adapté aux jeux (aucune garantie de retour sur le thread d’interface utilisateur).
  • Par défaut : taux par défaut adapté aux changements d’orientation de l’écran.
  • UI : débit adapté à une interface utilisateur général.

Si votre gestionnaire d’événements ne garantit pas l’exécution sur le thread d’interface utilisateur et si le gestionnaire d’événements doit accéder aux éléments de l’interface utilisateur, utilisez la méthode MainThread.BeginInvokeOnMainThread pour exécuter ce code sur le thread d’interface utilisateur.

Informations d’implémentation

L’API de détection des secousses utilise des relevés bruts de l’accéléromètre pour calculer l’accélération. Elle utilise un simple mécanisme de file d’attente pour détecter si les 3/4 des événements d’accéléromètre récents se sont produits lors de la dernière demie-seconde. L’accélération se calcule en additionnant le carré des relevés X, Y et Z de l’accéléromètre, puis en le comparant à un seuil spécifique.

API

Retrouvez d’autres vidéos Xamarin sur Channel 9 et YouTube.