Přístup ke senzorům zařízení
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í řádek
manifest
:<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:
- Centrum nápovědy Google: Vyhledání a zlepšení přesnosti vaší polohy
- Stack Exchange Android Nadšenci: Jak mohu kalibrovat kompas na svém telefonu?
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í řádek
manifest
:<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í řádek
manifest
:<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.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro