Xamarin.Essentials: Détecter les shakes
La classe Accelerometer permet de superviser le capteur de type accéléromètre de l’appareil, 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.
Démarrage
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 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 modifications 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.