Senzory

Senzory vaší aplikace znají vztah mezi zařízením a fyzickým světem kolem něj. Senzory můžou aplikaci informovat o směru, orientaci a pohybu zařízení. Tyto senzory můžou pomoct, aby vaše hra, aplikace rozšířené reality nebo aplikace utility byla užitečnější a interaktivnější tím, že poskytují jedinečnou formu vstupu, jako je například použití pohybu zařízení k uspořádání znaků na obrazovce nebo k simulaci v kokpitu a použití zařízení jako volantu.

Obecně platí, že se od počátku rozhodněte, jestli bude vaše aplikace záviset výhradně na senzorech nebo jestli senzory budou nabízet pouze další kontrolní mechanismus. Například řízení hry pomocí zařízení jako virtuálního volantu může být alternativně řízeno prostřednictvím grafického uživatelského rozhraní na obrazovce – tímto způsobem funguje aplikace bez ohledu na senzory dostupné v systému. Na druhou stranu lze naprogramovat mramorové nakloněné bludiště tak, aby fungovalo pouze na systémech, které mají příslušné senzory. Musíte zvolit strategickou volbu, zda se plně spoléhat na senzory. Všimněte si, že schéma ovládání myši/dotykového ovládání obchoduje ponořování pro větší kontrolu.

Téma Description
Kalibrace senzorů Senzory v zařízení založeném na magnetometru – kompasu, inclinometru a senzoru orientace – mohou být kvůli environmentálním faktorům potřeba kalibrace. Výčtový typ MagnetometerAccuracy vám může pomoci rozhodnout, jak postupovat, když vaše zařízení potřebuje kalibraci.
Orientace snímače Data snímačů z tříd OrientationSensor jsou definována jejich referenčními osami. Tyto osy jsou definovány orientací zařízení na šířku a otáčejí se spolu se zařízením, když jím uživatel otáčí.
Použití akcelerometru Přečtěte si, jak pomocí akcelerometru reagovat na pohyb uživatelů.
Použití kompasu Naučte se používat kompas k určení aktuálního nadpisu.
Použití gyrometru Naučte se používat gyrometr k detekci změn v pohybu uživatelů.
Použití inclinometeru Naučte se, jak používat sklonoměr k určení náklonu, klonění a vybočení.
Použití světelného senzoru Naučte se používat senzor okolního světla k detekci změn osvětlení.
Použití senzoru orientace Naučte se používat senzory orientace k určení orientace zařízení.

Dávkové zpracování senzorů

Některé senzory podporují koncept dávkování. To se bude lišit v závislosti na dostupném jednotlivém senzoru. Když senzor implementuje dávkování, shromažďuje několik bodů dat v zadaném časovém intervalu a pak přenáší všechna tato data najednou. To se liší od normálního chování, kdy senzor hlásí své závěry, jakmile provede čtení. Podívejte se na následující diagram, který ukazuje, jak se data shromažďují a pak doručují, nejprve s normálním doručením a pak s dávkovým doručováním.

Dávkový sběr dat ze senzorů

Hlavní výhodou dávkování senzorů je prodloužení životnosti baterie. Pokud se data neodesílají okamžitě, ušetří se výkon procesoru a zabrání okamžitému zpracování dat. Části systému mohou spát, dokud nebudou potřeba, což vygeneruje významné úspory energie.

Můžete ovlivnit, jak často senzor odesílá dávky úpravou latence. Například senzor Accelerometer má vlastnost ReportLatency. Pokud je tato vlastnost nastavena pro aplikaci, senzor odešle data po zadané době. Nastavením vlastnosti ReportInterval můžete určit, kolik dat se kumuluje nad danou latencí.

Existuje několik upozornění, které je potřeba mít na paměti, pokud jde o nastavení latence. První výhrada je, že každý senzor podporuje MaxBatchSize v závislosti na daném senzoru. Jedná se o počet událostí, které může senzor uložit do mezipaměti předtím, než je nucen odeslat. Pokud vynásobíte MaxBatchSize hodnotou ReportInterval, určuje maximální hodnotu ReportLatency . Pokud zadáte vyšší hodnotu, použije se maximální latence, abyste nepřišli o data. Kromě toho může každá aplikace nastavit požadovanou latenci. Aby bylo možné splnit potřeby všech aplikací, použije se nejkratší období latence. Vzhledem k těmto skutečnostem nemusí latence nastavená ve vaší aplikaci odpovídat pozorované latenci.

Pokud senzor používá dávkové hlášení, volání GetCurrentReading vymaže aktuální dávku dat a zahájí novou prodlevu.

Akcelerometr

Senzor Accelerometer měří hodnoty G-force podél os X, Y a Z zařízení a je skvělý pro jednoduché aplikace založené na pohybu. Všimněte si, že hodnoty G-force zahrnují zrychlení z důvodu závažnosti. Pokud je zařízení na stole a má orientaci SimpleOrientationFaceUp, akcelerometr by na ose Z ukázal -1 G. Akcelerometry tedy nemusí nutně měřit pouze zrychlení souřadnic – rychlost změny rychlosti. Při použití akcelerometru nezapomeňte rozlišovat mezi gravitačním vektorem od závažnosti a vektorem lineární akcelerace od pohybu. Všimněte si, že gravitační vektor by měl normalizovat na 1 pro statické zařízení.

Následující diagramy znázorňují:

  • V1 = Vektor 1 = Gravitační síla
  • V2 = vektor 2 = osa -Z skříně zařízení (směřuje od zadní strany obrazovky)
  • Θi = Úhel naklonění (sklon) = úhel mezi osou –Z skříně zařízení a vektorem závažnosti

Akcelerometr Měření akcelerometru

Aplikace, které můžou používat senzor akcelerometru, zahrnují hru, ve které se kulička na obrazovce zavrtá ve směru, ve kterém nakloníte zařízení (gravitační vektor). Tento typ funkcionality se velmi podobá funkcionalitě senzoru Inclinometer a lze jí dosáhnout i pomocí tohoto senzoru při využití kombinace náklonu a klopení. Použití gravitačního vektoru z akcelerometru to poněkud zjednodušuje, protože poskytuje vektor, se kterým lze při určování náklonu zařízení snadno matematicky pracovat. Dalším příkladem by byla aplikace, která dělá praskající zvuk, když uživatel flikne zařízení vzduchem (lineární akcelerační vektor).

Příklad implementace najdete v tématu Použití akcelerometru.

Senzor aktivity

Senzor Activity určuje aktuální stav zařízení připojeného k senzoru. Tento senzor se často používá v aplikacích fitness ke sledování, kdy uživatel, který nese zařízení, běží nebo chodí. Seznam možných aktivit, které lze zjistit tímto rozhraním API snímače, najdete v tématu ActivityType.

Příklad implementace najdete v ukázce senzoru aktivity .

Výškoměr

Senzor Altimeter vrátí hodnotu označující výšku senzoru. To vám umožní sledovat změnu v nadmořské výšce z hlediska metrů od moře. Příkladem aplikace, která by to mohla využívat, je aplikace pro běhání, která během běhu sleduje změny nadmořské výšky, aby mohla vypočítat spálené kalorie. V tomto případě je možné tato data senzoru kombinovat s senzorem Aktivita a poskytnout přesnější informace o sledování.

Příklad implementace najdete v ukázce altimeter.

Barometr

Senzor Barometer umožňuje aplikaci získat barometrické čtení. Aplikace pro počasí může tyto informace použít k poskytnutí aktuálního atmosférického tlaku. Dá se použít k poskytování podrobnějších informací a k předpovídání potenciálních změn počasí.

Příklad implementace najdete v ukázce barometru.

Kompas

Snímač Compass vrací 2D směr vzhledem k magnetickému severu v horizontální rovině Země. Snímač kompasu by neměl být použit při určování konkrétní orientace zařízení nebo pro reprezentaci čehokoli v 3D prostoru. Zeměpisné útvary mohou způsobit přirozenou deklinaci směru, takže některé systémy podporují jak HeadingMagneticNorth, tak HeadingTrueNorth. Zvažte, čemu vaše aplikace dává přednost, ale pamatujte, že ne všechny systémy budou hlásit hodnotu zeměpisného severu. Senzory gyrometru a magnetometru (zařízení, které měří velikost magnetické síly) kombinují svá data, aby vytvořily směr kompasu, který má čistý účinek stabilizace dat (síla magnetického pole je velmi nestabilní kvůli součástem elektrického systému).

Čtení kompasů v souvislosti s magnetickým severním pólem

Aplikace, které chtějí zobrazit kompas nebo procházet mapu, obvykle používají snímač kompasu.

Příklad implementace naleznete v tématu Použití kompasu.

gyrometr

Senzor Gyrometer měří úhlové rychlosti podél os X, Y a Z. To jsou velmi užitečné v jednoduchých aplikacích založených na pohybu, které se nezajímají o orientaci zařízení, ale záleží na otáčení zařízení v různých rychlostech. Gyroskopy mohou trpět šumem v datech nebo konstantním posunem na jedné či více osách. Měli byste získávat údaje z akcelerometru, abyste ověřili, zda se zařízení pohybuje, a určili, zda gyrometr vykazuje odchylku; tu pak ve své aplikaci odpovídajícím způsobem kompenzujte.

Gyrometr s náklonem, kloněním a stáčením

Příkladem aplikace, která by mohla používat senzor gyrometru, je hra, která rotuje kolo rulety na základě rychlého rotačního jerku zařízení.

Příklad implementace naleznete v tématu Použití gyrometru.

Sklonoměr

Senzor Inclinometer udává hodnoty odklonění (yaw), klopení (pitch) a náklonu (roll) zařízení a nejlépe funguje s aplikacemi, které potřebují znát, jak je zařízení orientováno v prostoru. Náklon a klonění se určují na základě gravitačního vektoru akcelerometru a integrací dat z gyroskopu. Úhel vybočení se určuje na základě údajů z magnetometru a gyrometru (podobně jako směr kompasu). Inclinometers nabízejí data pokročilé orientace snadno čitelným a srozumitelným způsobem. Inclinometry používejte v případě, že potřebujete orientaci zařízení, ale nemusíte manipulovat s daty snímačů.

Sklonoměr s údaji o náklonu, klopení a vybočení

Aplikace, které mění zobrazení tak, aby odpovídaly orientaci zařízení, můžou používat senzor inclinometru. Také aplikace, která zobrazuje letadlo odpovídající vybočení, klopení a náklonu zařízení, by také využívala údaje ze sklonoměru.

Příklad implementace naleznete v tématu Použití inclinometer.

Světelný senzor

Senzor LightSensor je schopen určit okolní světlo obklopující senzor. To umožňuje aplikaci určit, kdy se změnilo nastavení světla kolem zařízení. Například uživatel s tabletovým zařízením může přejít z interiéru ven za slunečného dne. Inteligentní aplikace může tuto hodnotu použít ke zvýšení kontrastu mezi pozadím a vykresleným písmem. Díky tomu bude obsah stále čitelný v jasnějším, venkovním nastavení.

Příklad implementace najdete v tématu Použití senzoru světla.

Senzor orientace

Orientace zařízení se vyjadřuje kvaternionem i maticí otáčení. OrientationSensor nabízí vysokou přesnost při určování, jak je zařízení orientováno v prostoru vzhledem k absolutnímu směru. Data OrientationSensor jsou odvozena z akcelerometru, gyrometru a magnetometru. Proto lze oba senzory kelinometru i kompasu odvozovat z kvaternionových hodnot. Kvaterniony a matice rotace se dobře hodí pro pokročilou matematickou manipulaci a často se používají v grafickém programování. Aplikace využívající složitou manipulaci by měly upřednostňovat senzor orientace, protože mnoho transformací je založeno na kvaternionech a maticích otočení.

Data snímače orientace

Senzor orientace se často používá v pokročilých aplikacích rozšířené reality, které přes vaše okolí promítají překryvnou vrstvu podle směru, kterým míří zadní strana zařízení.

Příklad implementace najdete v tématu Použití senzoru orientace.

Krokoměr

Senzor Pedometer sleduje počet kroků provedených uživatelem, který provádí připojené zařízení. Senzor je nakonfigurovaný tak, aby sledoval počet kroků v daném časovém období. Některé fitness aplikace sledují počet ušlých kroků, aby uživateli pomohly stanovit a dosáhnout různých cílů. Tyto informace se pak dají shromažďovat a ukládat, aby zobrazovaly průběh v průběhu času.

Příklad implementace najdete v ukázce pedometru.

Snímač přiblížení

Senzor Proximity lze použít k indikaci, zda jsou objekty detekovány senzorem. Kromě určení, zda je objekt v dosahu zařízení, může senzor blízkosti také určit vzdálenost od zjištěného objektu. Jedním z příkladů, kde se to dá použít, je aplikace, která chce vycházet ze stavu spánku, když uživatel spadá do zadaného rozsahu. Zařízení může být ve stavu spánku s nízkým výkonem, dokud senzor blízkosti nezjistí objekt a pak může vstoupit do aktivnějšího stavu.

Příklad implementace najdete v ukázce senzoru proximity.

Jednoduchá orientace

SimpleOrientationSensor detekuje orientaci zadaného zařízení v aktuálním kvadrantu nebo zda je otočeno lícem nahoru či lícem dolů. Má šest možných stavů SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Aplikace pro čtení, která změní zobrazení na základě zařízení, které se drží paralelně nebo kolmo k zemi, použije hodnoty z SimpleOrientationSensor k určení způsobu držení zařízení.

Příklad implementace najdete v ukázce senzoru orientace simple.