Xamarin.Essentials: rileva shake

La classe Accelerometer consente di monitorare il sensore dell'accelerometro del dispositivo, che indica l'accelerazione del dispositivo nello spazio tridimensionale. Inoltre, consente di registrare gli eventi quando l'utente scuote il dispositivo.

Operazioni preliminari

Per iniziare a usare questa API, leggere la guida introduttiva per Xamarin.Essentials assicurarsi che la libreria sia installata e configurata correttamente nei progetti.

Uso di Rileva scuotimento

Aggiungere un riferimento a Xamarin.Essentials nella classe :

using Xamarin.Essentials;

Per rilevare uno scuotimento del dispositivo è necessario usare la funzionalità Accelerometer chiamando i metodi Start e Stop per ascoltare i cambi di accelerazione e rilevare lo scuotimento. Ogni volta che viene rilevato uno scuotimento, viene generato l'evento ShakeDetected. È consigliabile usare Game o un valore superiore per SensorSpeed. Utilizzo di esempio:


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

Velocità del sensore

  • Fastest - Ottenere i dati del sensore il più velocemente possibile (non è garantita la restituzione sul thread dell'interfaccia utente).
  • Game - Velocità adatta ai giochi (non è garantita la restituzione sul thread dell'interfaccia utente).
  • Impostazione predefinita: frequenza predefinita adatta alle modifiche dell'orientamento dello schermo.
  • UI - Velocità adatta per l'interfaccia utente generale.

Se non è garantito che il gestore eventi venga eseguito sul thread dell'interfaccia utente e se il gestore eventi deve accedere a elementi dell'interfaccia utente, usare il metodo MainThread.BeginInvokeOnMainThread per eseguire il codice sul thread dell'interfaccia utente.

Dettagli dell'implementazione

L'API di rilevamento scuotimento calcola l'accelerazione usando letture non elaborate dell'accelerometro. Usa un semplice meccanismo di inserimento in coda per rilevare se i 3/4 dei recenti eventi dell'accelerometro si sono verificati nell'ultimo mezzo secondo. L'accelerazione viene calcolata aggiungendo il quadrato delle letture X, Y e Z eseguite dall'accelerometro e confrontando i valori con una soglia specifica.

API

Altri video di Xamarin sono disponibili su Channel 9 e YouTube.