Xamarin.Essentials: Detekovat protřepávání

Třída akcelerometr vám umožňuje monitorovat snímač akcelerometru zařízení, který indikuje zrychlení zařízení v trojrozměrném prostoru. Kromě toho umožňuje registrovat události, když uživatel zařízení zatřese.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Pomocí detekce zatřesení

Do třídy přidejte odkaz Xamarin.Essentials :

using Xamarin.Essentials;

Chcete-li zjistit, jak se zařízení má vytřesit, musíte použít funkci akcelerometr voláním Start metod a, Stop aby naslouchala změnám v akceleraci a zjistila protřepání. Pokaždé, když je zjištěna třepačka, ShakeDetected událost se aktivuje. Doporučuje se používat Game nebo rychlejší pro SensorSpeed . Zde je ukázka použití:


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

Rychlost senzoru

  • Nejrychlejší – Získejte data senzorů co nejrychleji (nezaručujeme návrat ve VLÁKNĚ uživatelského rozhraní).
  • Hra – sazba vhodná pro hry (nezaručujeme návrat ve VLÁKNĚ uživatelského rozhraní).
  • Výchozí – výchozí sazba je vhodná pro změny orientace obrazovky.
  • Uživatelské rozhraní – sazba vhodná pro obecné uživatelské rozhraní.

Pokud vaše obslužná rutina události není zaručena spuštění ve vlákně uživatelského rozhraní a pokud obslužná rutina události potřebuje přístup k prvkům uživatelského rozhraní, použijte MainThread.BeginInvokeOnMainThread metodu ke spuštění tohoto kódu ve vlákně uživatelského rozhraní.

Podrobnosti implementace

ROZHRANÍ detekce protřepení používá nezpracované čtení z akcelerometru k výpočtu akcelerace. K detekci, jestli během poslední poloviny sekundy nastala 3/4ths posledních událostí akcelerometru, se používá jednoduchý mechanismus fronty. Akcelerace se vypočítá přidáním čtverce z hodnoty měřičů X, Y a Z akcelerometru na konkrétní threashold.

rozhraní API

Další videa Xamarin najdete na webu Channel 9 a YouTube.