Xamarin.Essentials: Detekce zatřesení

Třída Accelerometer umožňuje monitorovat snímač akcelerometru zařízení, který indikuje zrychlení zařízení v trojrozměrném prostoru. Kromě toho vám umožní 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 úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Použití funkce Zjistit zatřesení

Přidejte do Xamarin.Essentials předmětu odkaz:

using Xamarin.Essentials;

Chcete-li zjistit zatřesení zařízení, musíte použít funkci Accelerometer voláním Start metod a Stop naslouchání změnám akcelerace a detekci zatřesení. Kdykoli se zjistí zatřesení, ShakeDetected událost se aktivuje. Doporučuje se použít Game nebo zrychlit SensorSpeed. Tady je ukázkové využ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 snímače

  • Nejrychlejší – co nejrychleji získejte data ze snímačů (není zaručeno, že se vrátíte na vlákno uživatelského rozhraní).
  • Hra – Rychlost vhodná pro hry (není zaručeno vrácení na vlákno uživatelského rozhraní).
  • Výchozí – Výchozí rychlost vhodná pro změny orientace obrazovky.
  • UŽIVATELSKÉ rozhraní – Rychlost vhodná pro obecné uživatelské rozhraní.

Pokud 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 metodu MainThread.BeginInvokeOnMainThread ke spuštění kódu ve vlákně uživatelského rozhraní.

Podrobnosti implementace

Rozhraní API pro detekci zatřesení používá k výpočtu zrychlení nezpracované čtení z akcelerometru. Pomocí jednoduchého mechanismu fronty zjistí, jestli v poslední polovině sekundy došlo k 3/4s nedávným událostem akcelerometru. Akcelerometr se vypočítá přidáním čtverečka X, Y a Z z akcelerometru a jeho porovnáním s konkrétním rozdílem.

rozhraní API

Další videa o Xamarinu najdete na Channel 9 a YouTube.