Přístup ke senzorům zařízení

Browse sample. Procházení ukázky

Zařízení mají k dispozici nejrůznější senzory. Některé senzory mohou detekovat pohyb, jiné změny v prostředí, jako je světlo. Monitorování a reakce na tyto senzory ztěžuje vaši aplikaci tak, aby se přizpůsobila způsobu, jakým se zařízení používá. Můžete také reagovat na změny senzorů a upozornit uživatele. V tomto článku najdete stručný přehled běžných senzorů podporovaných uživatelským rozhraním multiplatformních aplikací .NET (.NET MAUI).

Typy související se senzory Microsoft.Maui.Devices.Sensors zařízení jsou k dispozici v oboru názvů.

Rychlost snímače

Rychlost senzoru nastavuje rychlost, ve které senzor vrátí data do vaší aplikace. Při spuštění senzoru zadáte požadovanou rychlost senzoru pomocí výčtu SensorSpeed :

  • Fastest
    Získejte data ze snímačů co nejrychleji (není zaručeno vrácení ve vlákně uživatelského rozhraní).

  • Game
    Rychlost vhodná pro hry (není zaručeno vrácení na vlákno uživatelského rozhraní).

  • UI
    Rychlost vhodná pro obecné uživatelské rozhraní.

  • Default
    Výchozí rychlost vhodná pro změny orientace obrazovky.

Upozorňující

Monitorování příliš velkého počtu senzorů najednou může ovlivnit vrácení dat snímače rychlosti do vaší aplikace.

V .NET 8 SensorSpeed jsou intervaly identické na všech platformách:

  • Default používá interval 200 ms.
  • UI používá interval 60 ms.
  • Game používá interval 20 ms.
  • Fastest používá interval 5 min.

Obslužné rutiny událostí snímače

Obslužné rutiny událostí přidané do senzorů s GameFastest rychlostí nebo rychlostí nejsou zaručeny, že se budou spouštět ve vlákně uživatelského rozhraní. 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í.

Akcelerometr

Snímač akcelerometru měří zrychlení zařízení podél tří os. Data hlášená senzorem představují způsob, jakým uživatel zařízení přesouvá.

Rozhraní IAccelerometer poskytuje přístup k senzoru a je k dispozici prostřednictvím Accelerometer.Default vlastnosti. Rozhraní IAccelerometer i Accelerometer třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Začínáme

Pokud chcete získat přístup k funkcím akcelerometru, možná se vyžaduje následující nastavení specifické pro platformu:

Pokud vaše aplikace cílí na Android 12+ (ROZHRANÍ API 31+), systém umístí limit 200 Hz na obnovovací frekvenci dat z tohoto senzoru. Pokud vaše aplikace potřebuje shromažďovat data ze snímačů pomocí rychlosti senzoru FastestHIGH_SAMPLING_RATE_SENSORS , musíte deklarovat oprávnění. Oprávnění můžete nakonfigurovat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy přidejte následující atribut using sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následující řádekmanifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění HIGH_SAMPLING_RATE_SENSORS. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Poznámka:

Pokud uživatel vypne přístup k mikrofonu pomocí přepínačů zařízení, snímače pohybu a polohy jsou vždy omezené rychlostí bez ohledu na to, jestli deklarujete HIGH_SAMPLING_RATE_SENSORS oprávnění.

Monitorování senzoru akcelerometru

Pokud chcete zahájit monitorování senzoru akcelerometru, zavolejte metodu IAccelerometer.Start . .NET MAUI odesílá změny dat akcelerometru do vaší aplikace vyvoláním IAccelerometer.ReadingChanged události. IAccelerometer.Stop Pomocí metody zastavte monitorování senzoru. Můžete zjistit stav monitorování akcelerometru IAccelerometer.IsMonitoring s vlastností, což bude v true případě, že byl akcelerometr spuštěn a aktuálně monitorován.

Následující příklad kódu ukazuje monitorování akcelerometru pro změny:

public void ToggleAccelerometer()
{
    if (Accelerometer.Default.IsSupported)
    {
        if (!Accelerometer.Default.IsMonitoring)
        {
            // Turn on accelerometer
            Accelerometer.Default.ReadingChanged += Accelerometer_ReadingChanged;
            Accelerometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off accelerometer
            Accelerometer.Default.Stop();
            Accelerometer.Default.ReadingChanged -= Accelerometer_ReadingChanged;
        }
    }    
}

private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
    // Update UI Label with accelerometer state
    AccelLabel.TextColor = Colors.Green;
    AccelLabel.Text = $"Accel: {e.Reading}";
}

Čtení accelerometru jsou hlášena zpět v G. A G je jednotka gravitační síly, která je rovna závažnosti vynucované gravitačním polem země $(9,81 m/s^2)$.

Souřadnicový systém je definován vzhledem k obrazovce zařízení ve výchozí orientaci. Osy se při změně orientace obrazovky zařízení neprohodí.

Osa X je vodorovná a odkazuje vpravo, Osa Y je svislá a odkazuje nahoru a osa Z směřuje směrem k vnější části přední plochy obrazovky. V tomto systému mají souřadnice za obrazovkou záporné hodnoty Z .

Příklady:

  • Když zařízení leží ploché na tabulce a je nasdílené na levé straně směrem doprava, hodnota zrychlení X je kladná.

  • Když je zařízení v tabulce ploché, hodnota akcelerace je +1,00 G nebo $(+9,81 m/s^2)$, která odpovídá zrychlení zařízení $(0 m/s^2)$ minus síla závažnosti $(-9,81 m/s^2)$ a normalizovaná jako v G.

  • Když je zařízení na stole ploché a posune se k obloze s akcelerací A $m/s^2$, hodnota zrychlení se rovná $A+9,81$, což odpovídá zrychlení zařízení $(+A m/s^2)$ minus síla závažnosti $(-9,81 m/s^2)$ a normalizovaná v G.

Informace specifické pro platformu (Accelerometer)

Nejsou k dispozici žádné informace specifické pro platformu související se senzorem akcelerometru.

Barometr

Snímač barometru měří tlak okolního vzduchu. Data hlášená senzorem představují aktuální tlak vzduchu. Tato data se oznamují při prvním spuštění monitorování senzoru a následně pokaždé, když se tlak změní.

Rozhraní IBarometer poskytuje přístup k senzoru a je k dispozici prostřednictvím Barometer.Default vlastnosti. Rozhraní IBarometer i Barometer třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Pokud chcete začít monitorovat snímač barometru, zavolejte metodu IBarometer.Start . .NET MAUI odesílá čtení tlaku vzduchu do vaší aplikace vyvoláním IBarometer.ReadingChanged události. IBarometer.Stop Pomocí metody zastavte monitorování senzoru. Stav monitorování barometru můžete zjistit s IBarometer.IsMonitoring vlastností, což bude v true případě, že se barometr právě monitoruje.

Čtení tlaku je reprezentováno hectopascaly.

Následující příklad kódu ukazuje monitorování barometru pro změny:

public void ToggleBarometer()
{
    if (Barometer.Default.IsSupported)
    {
        if (!Barometer.Default.IsMonitoring)
        {
            // Turn on barometer
            Barometer.Default.ReadingChanged += Barometer_ReadingChanged;
            Barometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off barometer
            Barometer.Default.Stop();
            Barometer.Default.ReadingChanged -= Barometer_ReadingChanged;
        }
    }
}

private void Barometer_ReadingChanged(object sender, BarometerChangedEventArgs e)
{
    // Update UI Label with barometer state
    BarometerLabel.TextColor = Colors.Green;
    BarometerLabel.Text = $"Barometer: {e.Reading}";
}

Informace specifické pro platformu (Barometer)

Tato část popisuje podrobnosti implementace specifické pro platformu související se senzorem barometru.

Žádné podrobnosti implementace specifické pro platformu.

Kompas

Snímač kompasu monitoruje magnetické severní záhlaví zařízení.

Rozhraní ICompass poskytuje přístup k senzoru a je k dispozici prostřednictvím Compass.Default vlastnosti. Rozhraní ICompass i Compass třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Pokud chcete začít monitorovat snímač kompasu, zavolejte metodu ICompass.Start . .NET MAUI vyvolá ICompass.ReadingChanged událost, když se změní nadpis kompasu. ICompass.Stop Pomocí metody zastavte monitorování senzoru. Stav monitorování kompasu můžete zjistit pomocí ICompass.IsMonitoring vlastnosti, což bude v true případě, že je kompas aktuálně monitorován.

Následující příklad kódu ukazuje monitorování kompasu pro změny:

private void ToggleCompass()
{
    if (Compass.Default.IsSupported)
    {
        if (!Compass.Default.IsMonitoring)
        {
            // Turn on compass
            Compass.Default.ReadingChanged += Compass_ReadingChanged;
            Compass.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off compass
            Compass.Default.Stop();
            Compass.Default.ReadingChanged -= Compass_ReadingChanged;
        }
    }
}

private void Compass_ReadingChanged(object sender, CompassChangedEventArgs e)
{
    // Update UI Label with compass state
    CompassLabel.TextColor = Colors.Green;
    CompassLabel.Text = $"Compass: {e.Reading}";
}

Informace specifické pro platformu (Compass)

Tato část popisuje podrobnosti implementace specifické pro platformu související s funkcí kompasu.

Android neposkytuje rozhraní API pro načtení nadpisu kompasu. .NET MAUI používá senzory akcelerometru a magnetometru k výpočtu magnetického severního nadpisu, který doporučuje Google.

Ve výjimečných případech můžete vidět nekonzistentní výsledky, protože senzory je potřeba kalibrovat. Přepočítání kompasu v Androidu se liší podle modelu telefonu a verze Androidu. Budete muset hledat na internetu, jak převést kompas. Tady jsou dva odkazy, které vám můžou pomoct při rekalbrování kompasu:

Spouštění více senzorů z vaší aplikace současně může ovlivnit rychlost senzoru.

Filtr Lowpass

Vzhledem k tomu, jak jsou hodnoty kompasu androidu aktualizovány a vypočítány, může být potřeba hodnoty vyhladit. Lze použít filtr Lowpass, který průměruje sinusové a kosinusové hodnoty úhlů a lze ho zapnout pomocí Start přetížení metody, která přijímá bool applyLowPassFilter parametr:

Compass.Default.Start(SensorSpeed.UI, applyLowPassFilter: true);

Použije se jenom na platformě Android a parametr se v iOSu a Windows ignoruje. Další informace najdete v tomto komentáři k problému Na GitHubu.

Protřepejte

I když tento článek uvádí třepání jako senzor, není to. Akcelerometr se používá ke zjištění, kdy je zařízení zatřeseno.

Rozhraní IAccelerometer poskytuje přístup k senzoru a je k dispozici prostřednictvím Accelerometer.Default vlastnosti. Rozhraní IAccelerometer i Accelerometer třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Poznámka:

Pokud vaše aplikace potřebuje shromažďovat data snímačů akcelerometru pomocí rychlosti senzoru FastestHIGH_SAMPLING_RATE_SENSORS , musíte deklarovat oprávnění. Další informace naleznete v tématu Accelerometer.

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. Akcelerace se vypočítá přidáním čtverečka X, Y a Z ($x^2+y^2+z^2$) čtení z akcelerometru a porovnáním s konkrétní prahovou hodnotou.

Pokud chcete zahájit monitorování senzoru akcelerometru, zavolejte metodu IAccelerometer.Start . Když se zjistí zatřesení, IAccelerometer.ShakeDetected vyvolá se událost. IAccelerometer.Stop Pomocí metody zastavte monitorování senzoru. Můžete zjistit stav monitorování akcelerometru IAccelerometer.IsMonitoring s vlastností, což bude v true případě, že byl akcelerometr spuštěn a aktuálně monitorován.

Doporučuje se použít Game nebo zrychlit SensorSpeed.

Následující příklad kódu ukazuje monitorování akcelerometru ShakeDetected pro událost:

private void ToggleShake()
{
    if (Accelerometer.Default.IsSupported)
    {
        if (!Accelerometer.Default.IsMonitoring)
        {
            // Turn on accelerometer
            Accelerometer.Default.ShakeDetected += Accelerometer_ShakeDetected;
            Accelerometer.Default.Start(SensorSpeed.Game);
        }
        else
        {
            // Turn off accelerometer
            Accelerometer.Default.Stop();
            Accelerometer.Default.ShakeDetected -= Accelerometer_ShakeDetected;
        }
    }
}

private void Accelerometer_ShakeDetected(object sender, EventArgs e)
{
    // Update UI Label with a "shaked detected" notice, in a randomized color
    ShakeLabel.TextColor = new Color(Random.Shared.Next(256), Random.Shared.Next(256), Random.Shared.Next(256));
    ShakeLabel.Text = $"Shake detected";
}

Informace specifické pro platformu (Zatřesení)

Nejsou k dispozici žádné informace specifické pro platformu související se senzorem akcelerometru.

Gyroskop

Senzor gyroskopu měří úhlovou rychlost otáčení kolem tří primárních os zařízení.

Rozhraní IGyroscope poskytuje přístup k senzoru a je k dispozici prostřednictvím Gyroscope.Default vlastnosti. Rozhraní IGyroscope i Gyroscope třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Začínáme

Pokud chcete získat přístup k funkcím gyroskopu, možná se vyžaduje následující nastavení specifické pro platformu:

Pokud vaše aplikace cílí na Android 12+ (ROZHRANÍ API 31+), systém umístí limit 200 Hz na obnovovací frekvenci dat z tohoto senzoru. Pokud vaše aplikace potřebuje shromažďovat data ze snímačů pomocí rychlosti senzoru FastestHIGH_SAMPLING_RATE_SENSORS , musíte deklarovat oprávnění. Oprávnění můžete nakonfigurovat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy přidejte následující atribut using sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následující řádekmanifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění HIGH_SAMPLING_RATE_SENSORS. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Poznámka:

Pokud uživatel vypne přístup k mikrofonu pomocí přepínačů zařízení, snímače pohybu a polohy jsou vždy omezené rychlostí bez ohledu na to, jestli deklarujete HIGH_SAMPLING_RATE_SENSORS oprávnění.

Monitorování senzoru gyroskopu

Pokud chcete začít monitorovat senzor gyroskopu, zavolejte metodu IGyroscope.Start . .NET MAUI odesílá změny dat gyroskopu do vaší aplikace vyvoláním IGyroscope.ReadingChanged události. Data poskytnutá touto událostí se měří v radi/s (radian za sekundu). IGyroscope.Stop Pomocí metody zastavte monitorování senzoru. Stav monitorování gyroskopu můžete zjistit pomocí IGyroscope.IsMonitoring vlastnosti, což bude v true případě, že byl gyroskop spuštěn a aktuálně monitorován.

Následující příklad kódu ukazuje monitorování gyroskopu:

private void ToggleGyroscope()
{
    if (Gyroscope.Default.IsSupported)
    {
        if (!Gyroscope.Default.IsMonitoring)
        {
            // Turn on gyroscope
            Gyroscope.Default.ReadingChanged += Gyroscope_ReadingChanged;
            Gyroscope.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off gyroscope
            Gyroscope.Default.Stop();
            Gyroscope.Default.ReadingChanged -= Gyroscope_ReadingChanged;
        }
    }
}

private void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
    // Update UI Label with gyroscope state
    GyroscopeLabel.TextColor = Colors.Green;
    GyroscopeLabel.Text = $"Gyroscope: {e.Reading}";
}

Informace specifické pro platformu (Gyroskop)

Neexistují žádné informace specifické pro platformu související se senzorem gyroskopu.

Magnetometr

Snímač magnetometru označuje orientaci zařízení vzhledem k magnetickému poli Země.

Rozhraní IMagnetometer poskytuje přístup k senzoru a je k dispozici prostřednictvím Magnetometer.Default vlastnosti. Rozhraní IMagnetometer i Magnetometer třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Začínáme

Pro přístup k funkcím magnetometru se možná vyžaduje následující nastavení specifické pro platformu:

Pokud vaše aplikace cílí na Android 12+ (ROZHRANÍ API 31+), systém umístí limit 200 Hz na obnovovací frekvenci dat z tohoto senzoru. Pokud vaše aplikace potřebuje shromažďovat data ze snímačů pomocí rychlosti senzoru FastestHIGH_SAMPLING_RATE_SENSORS , musíte deklarovat oprávnění. Oprávnění můžete nakonfigurovat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy přidejte následující atribut using sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následující řádekmanifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění HIGH_SAMPLING_RATE_SENSORS. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Poznámka:

Pokud uživatel vypne přístup k mikrofonu pomocí přepínačů zařízení, snímače pohybu a polohy jsou vždy omezené rychlostí bez ohledu na to, jestli deklarujete HIGH_SAMPLING_RATE_SENSORS oprávnění.

Monitorování senzoru magnetometru

Pokud chcete zahájit monitorování senzoru magnetometru, zavolejte metodu IMagnetometer.Start . .NET MAUI odesílá změny magnetometru do aplikace vyvoláním IMagnetometer.ReadingChanged události. Data poskytnutá touto událostí se měří v $μT$ (mikroteslas). IMagnetometer.Stop Pomocí metody zastavte monitorování senzoru. Můžete zjistit stav monitorování magnetometru IMagnetometer.IsMonitoring s vlastností, což bude, true pokud byl magnetometr spuštěn a je aktuálně monitorován.

Následující příklad kódu ukazuje monitorování magnetometru:

private void ToggleMagnetometer()
{
    if (Magnetometer.Default.IsSupported)
    {
        if (!Magnetometer.Default.IsMonitoring)
        {
            // Turn on magnetometer
            Magnetometer.Default.ReadingChanged += Magnetometer_ReadingChanged;
            Magnetometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off magnetometer
            Magnetometer.Default.Stop();
            Magnetometer.Default.ReadingChanged -= Magnetometer_ReadingChanged;
        }
    }
}

private void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
{
    // Update UI Label with magnetometer state
    MagnetometerLabel.TextColor = Colors.Green;
    MagnetometerLabel.Text = $"Magnetometer: {e.Reading}";
}

Informace specifické pro platformu (Magnetometer)

Nejsou k dispozici žádné informace specifické pro platformu související se senzorem magnetometru.

Orientace

Senzor orientace monitoruje orientaci zařízení ve 3D prostoru.

Poznámka:

Tento senzor se nepoužívá k určení, jestli je zobrazení videa zařízení v režimu na výšku nebo na šířku. DeviceDisplay.Current.MainDisplayInfo.Orientation Místo toho použijte vlastnost. Další informace naleznete v tématu Informace o zobrazení zařízení.

Rozhraní IOrientationSensor poskytuje přístup k senzoru a je k dispozici prostřednictvím OrientationSensor.Default vlastnosti. Rozhraní IOrientationSensor i OrientationSensor třída jsou obsaženy v Microsoft.Maui.Devices.Sensors oboru názvů.

Pokud chcete začít monitorovat senzor orientace, zavolejte metodu IOrientationSensor.Start . .NET MAUI odesílá změny dat orientace do aplikace vyvoláním IOrientationSensor.ReadingChanged události. IOrientationSensor.Stop Pomocí metody zastavte monitorování senzoru. Pomocí vlastnosti můžete zjistit stav monitorování orientace IOrientationSensor.IsMonitoring , což bude v true případě, že byla orientace spuštěna a aktuálně monitorována.

Následující příklad kódu ukazuje monitorování senzoru orientace:

private void ToggleOrientation()
{
    if (OrientationSensor.Default.IsSupported)
    {
        if (!OrientationSensor.Default.IsMonitoring)
        {
            // Turn on orientation
            OrientationSensor.Default.ReadingChanged += Orientation_ReadingChanged;
            OrientationSensor.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off orientation
            OrientationSensor.Default.Stop();
            OrientationSensor.Default.ReadingChanged -= Orientation_ReadingChanged;
        }
    }
}

private void Orientation_ReadingChanged(object sender, OrientationSensorChangedEventArgs e)
{
    // Update UI Label with orientation state
    OrientationLabel.TextColor = Colors.Green;
    OrientationLabel.Text = $"Orientation: {e.Reading}";
}

IOrientationSensor čtení se ohlašují zpět ve formě Quaternion , která popisuje orientaci zařízení na základě dvou 3D souřadnicových systémů:

Zařízení (obecně telefon nebo tablet) má 3D souřadnicový systém s následujícími osami:

  • Osa X ukazuje vpravo od displeje v režimu na výšku.
  • Osa Y ukazuje na začátek zařízení v režimu na výšku.
  • Osa Z ukazuje mimo obrazovku.

3D souřadnicový systém Země má následující osy:

  • Osa X je tečná k povrchu Země a bodů na východ.
  • Osa Y je také tečná k povrchu Země a bodů na sever.
  • Osa Z je kolmá na povrch Země a směřuje nahoru.

Popisuje Quaternion otočení souřadnicového systému zařízení vzhledem ke souřadnicovém systému Země.

Hodnota Quaternion úzce souvisí s otáčením kolem osy. Pokud je osa otáčení normalizovaný vektor ($a_x, a_y, a_z$) a úhel otáčení je $\theta$, pak jsou součásti (X, Y, Z, W) kvazternionu:

$(a_x \times \sin(\theta/2), a_y \times \sin(\theta/2), a_z \times \sin(\theta/2), \cos(\theta/2))$

Jedná se o souřadnicové systémy na pravé straně, takže palcem pravé ruky ukazující kladným směrem osy otáčení, křivka prstů označuje směr otáčení pro kladné úhly.

Příklady:

  • Když zařízení leží v tabulce s obrazovkou směrem nahoru a horní částí zařízení (v režimu na výšku) směřujícím na sever, zarovnají se tyto dva souřadnicové systémy. Hodnota Quaternion představuje kvaternion identity (0, 0, 0, 1). Všechna otočení se dají analyzovat vzhledem k této pozici.

  • Když zařízení leží v tabulce s obrazovkou směrem nahoru a horní část zařízení (v režimu na výšku) směřující na západ, Quaternion hodnota je (0, 0, 0,707, 0,707). Zařízení bylo otočené o 90 stupňů kolem osy Z země.

  • Když je zařízení vzpřímené, aby horní (v režimu na výšku) odkazoval na oblohu a zadní část zařízení se na sever otočila o 90 stupňů kolem osy X. Hodnota Quaternion je (0,707, 0, 0, 0,707).

  • Pokud je zařízení umístěné tak, aby jeho levý okraj byl v tabulce a horní body na sever, bylo zařízení otočené kolem osy Y -90 stupňů (nebo 90 stupňů kolem záporné osy Y). Hodnota Quaternion je (0, -0,707, 0, 0,707).

Informace specifické pro platformu (orientace)

Nejsou k dispozici žádné informace specifické pro platformu související se senzorem orientace.