Sensoren

Sensoren laten uw app de relatie tussen een apparaat en de fysieke wereld eromheen weten. Sensoren kunnen uw app de richting, stand en beweging van het apparaat vertellen. Deze sensoren kunnen uw game-, augmented reality-app of utility-app nuttiger en interactiever maken door een unieke vorm van invoer te bieden, zoals door de beweging van het apparaat te gebruiken om de personages op het scherm te rangschikken of om te simuleren dat u in een cockpit zit en het apparaat als stuur gebruikt.

Bepaal in het algemeen vanaf het begin of uw app uitsluitend afhankelijk is van sensoren of dat sensoren alleen een extra controlemechanisme bieden. Een rijspel met behulp van een apparaat als virtueel stuurwiel kan bijvoorbeeld ook worden bestuurd via een scherm-GUI. Op deze manier werkt de app, ongeacht de sensoren die beschikbaar zijn op het systeem. Aan de andere kant kan een marmeren kanteldoolhof worden gecodeerd om alleen te werken aan systemen met de juiste sensoren. U moet de strategische keuze maken of u volledig wilt vertrouwen op sensoren. Houd er rekening mee dat een muis-/aanraakbesturing immersie inruilt voor meer controle.

Onderwerp Description
Kalibreersensoren Sensoren in een apparaat op basis van de magnetometer – het kompas, de inclinometer en oriëntatiesensor – kunnen door omgevingsfactoren kalibratie nodig zijn. De MagnetometerAccuracy opsomming kan helpen bij het bepalen van een actie-verloop wanneer uw apparaat kalibratie nodig heeft.
Sensororiëntatie Sensorgegevens uit de klassen OrientationSensor worden gedefinieerd door hun referentieassen. Deze assen worden bepaald door de liggende oriëntatie van het apparaat en draaien mee met het apparaat terwijl de gebruiker het draait.
De versnellingsmeter gebruiken Leer hoe u de versnellingsmeter gebruikt om te reageren op gebruikersbewegingen.
Het kompas gebruiken Leer hoe u het kompas kunt gebruiken om de huidige richting te bepalen.
De gyrometer gebruiken Meer informatie over het gebruik van de gyrometer om wijzigingen in gebruikersbewegingen te detecteren.
Gebruik de inclinometer Leer hoe u de hellingsmeter gebruikt om pitch, roll en yaw te bepalen.
De lichtsensor gebruiken Leer hoe u de omgevingslichtsensor gebruikt om veranderingen in verlichting te detecteren.
De oriëntatiesensor gebruiken Leer hoe u de oriëntatiesensoren kunt gebruiken om de stand van het apparaat te bepalen.

Sensorgroepering

Sommige sensoren ondersteunen het concept van batchverwerking. Dit varieert afhankelijk van de afzonderlijke sensor die beschikbaar is. Wanneer een sensor batchverwerking implementeert, worden verschillende gegevenspunten verzameld gedurende een opgegeven tijdsinterval en worden vervolgens alle gegevens tegelijk overgedragen. Dit verschilt van normaal gedrag waarbij een sensor zijn bevindingen rapporteert zodra er een leesing wordt uitgevoerd. Bekijk het volgende diagram dat laat zien hoe gegevens worden verzameld en vervolgens worden geleverd, eerst met normale levering en vervolgens met batchgewijze levering.

Verzameling van sensorbatches

Het belangrijkste voordeel voor sensorbatch is een langere levensduur van de batterij. Wanneer de gegevens niet onmiddellijk worden verzonden, bespaart dit op processorkracht en voorkomt u dat de gegevens onmiddellijk moeten worden verwerkt. Onderdelen van het systeem kunnen slapen totdat ze nodig zijn, wat een aanzienlijke energiebesparing genereert.

U kunt bepalen hoe vaak de sensor batches verzendt door de latentie aan te passen. De sensor Accelerometer heeft bijvoorbeeld de eigenschap ReportLatency. Wanneer deze eigenschap is ingesteld voor een toepassing, verzendt de sensor gegevens na de opgegeven hoeveelheid tijd. U kunt bepalen hoeveel gegevens worden verzameld over een bepaalde latentie door de eigenschap ReportInterval in te stellen.

Er zijn een paar kanttekeningen die u in gedachten moet houden bij het instellen van de latentie. De eerste kanttekening is dat elke sensor een MaxBatchSize heeft die het kan ondersteunen op basis van de sensor zelf. Dit is het aantal gebeurtenissen dat de sensor kan opslaan voordat deze wordt gedwongen om ze te verzenden. Als u MaxBatchSize vermenigvuldigt met ReportInterval, wordt hiermee de maximumwaarde reportLatency bepaald. Als u een hogere waarde opgeeft dan deze, wordt de maximale latentie gebruikt, zodat u geen gegevens kwijtraakt. Daarnaast kunnen meerdere toepassingen elke gewenste latentie instellen. Om aan de behoeften van alle toepassingen te voldoen, wordt de kortste latentieperiode gebruikt. Vanwege deze feiten komt de latentie die u in uw toepassing instelt mogelijk niet overeen met de waargenomen latentie.

Als een sensor batchrapportage gebruikt, wordt de huidige batch met gegevens gewist door GetCurrentReading aan te roepen en een nieuwe latentieperiode te starten.

Versnellingsmeter

De Accelerometer sensor meet G-krachtwaarden langs de X-, Y- en Z-assen van het apparaat en is ideaal voor eenvoudige toepassingen op basis van beweging. Houd er rekening mee dat G-force-waarden versnelling bevatten als gevolg van de zwaartekracht. Als het apparaat de SimpleOrientation van FaceUp heeft terwijl het op een tafel ligt, dan zou de accelerometer -1 G op de Z-as aangeven. Accelerometers meten dus niet noodzakelijkerwijs alleen coördinaatversnelling – de snelheid van verandering van snelheid. Wanneer u een versnellingsmeter gebruikt, moet u onderscheid maken tussen de zwaartekrachtvector en de lineaire versnellingsvector van beweging. Houd er rekening mee dat de zwaartekrachtvector moet normaliseren tot 1 voor een stationair apparaat.

De volgende diagrammen illustreren:

  • V1 = Vector 1 = Kracht als gevolg van zwaartekracht
  • V2 = Vector 2 = -Z-as van de apparaatbehuizing (wijst uit de achterkant van het scherm)
  • Θi = Kantelhoek (helling) = hoek tussen –Z-as van apparaatchassis en zwaartekrachtvector

Versnellingsmeter Versnellingsmetermeting

Apps die de versnellingsmetersensor kunnen gebruiken, bevatten een spel waarbij een marmer op het scherm rolt in de richting waarin u het apparaat kantelt (zwaartekrachtvector). Dit type functionaliteit komt sterk overeen met die van de Inclinometer en kan ook met die sensor worden gerealiseerd met behulp van een combinatie van kanteling en rol. Het gebruik van de zwaartekrachtvector van de accelerometer vereenvoudigt dit enigszins door een eenvoudig wiskundig gemanipuleerde vector te bieden voor apparaat kantelen. Een ander voorbeeld zou een app zijn die het geluid van een zweepslag produceert wanneer de gebruiker het apparaat door de lucht zwiept (lineaire versnellingsvector).

Zie De versnellingsmeter gebruiken voor een voorbeeld van een implementatie.

Activiteitssensor

De sensor Activiteit bepaalt de huidige status van het apparaat dat aan de sensor is gekoppeld. Deze sensor wordt vaak gebruikt in fitnesstoepassingen om bij te houden wanneer een gebruiker met een apparaat rent of loopt. Zie ActivityType voor een lijst met mogelijke activiteiten die door deze sensor-API kunnen worden gedetecteerd.

Zie het voorbeeld van de sensor voor activiteit voor een voorbeeld van een implementatie.

Hoogtemeter

De sensor Altimeter retourneert een waarde die de hoogte van de sensor aangeeft. Zo kunt u een verandering in hoogte bijhouden in termen van meters van zeeniveau. Een voorbeeld van een app die hiervan gebruik kan maken, is een hardloopapp die tijdens een hardloopsessie de hoogteverschillen bijhoudt om het aantal verbrande calorieën te berekenen. In dit geval kunnen deze sensorgegevens worden gecombineerd met de sensor Activiteit sensor om nauwkeurigere traceringsgegevens te bieden.

Zie de altimeter sample voor een voorbeeld van een implementatie.

Barometer

Met de sensor Barometer kan een toepassing barometrische metingen ophalen. Een weertoepassing kan deze informatie gebruiken om de huidige atmosferische druk te bieden. Dit kan worden gebruikt om gedetailleerdere informatie te bieden en potentiële weerswijzigingen te voorspellen.

Zie het voorbeeld barometervoorbeeld voor een voorbeeld van een implementatie.

Kompas

De Compass-sensor geeft een 2D-richting ten opzichte van het magnetische noorden op basis van het horizontale vlak van de aarde. De kompassensor mag niet worden gebruikt bij het bepalen van de specifieke apparaatstand of voor het weergeven van iets in de 3D-ruimte. Geografische omstandigheden kunnen een natuurlijke declinatie van de koers veroorzaken, dus sommige systemen ondersteunen zowel HeadingMagneticNorth als HeadingTrueNorth. Denk na over welke app uw voorkeur heeft, maar vergeet niet dat niet alle systemen een echte noordwaarde rapporteren. De gyrometer- en magnetometersensoren (een apparaat met de grootte van de magnetische sterkte) combineren hun gegevens om de kompaskop te produceren, wat het netto-effect heeft van het stabiliseren van de gegevens (magnetische veldsterkte is zeer instabiel door elektrische systeemonderdelen).

Kompasmetingen met betrekking tot magnetische noordpool

Apps die een kompas willen weergeven of door een kaart willen navigeren, gebruiken doorgaans de kompassensor.

Zie Het kompas gebruiken voor een voorbeeld van een implementatie.

Gyrometer

De Gyrometer sensor meet hoeksnelheid langs de X-, Y- en Z-assen. Deze zijn zeer nuttig in eenvoudige bewegingsgestuurde apps die zich niet bezighouden met de oriëntatie van het apparaat, maar waarbij het wel van belang is dat het apparaat met verschillende snelheden draait. Gyrometers kunnen last hebben van ruis in de data of van een constante afwijking op een of meer assen. U moet de versnellingsmeter uitlezen om te controleren of het apparaat in beweging is, zodat u kunt bepalen of de gyroscoop een bias heeft, en dit vervolgens dienovereenkomstig in uw app compenseren.

Gyrometer met kanteling, rol en gierstand

Een voorbeeld van een app die de gyrometersensor kan gebruiken, is een spel dat een roulettewiel draait op basis van een snelle draaiing van het apparaat.

Zie De gyrometer gebruiken voor een voorbeeld van een implementatie.

Inclinometer

De Inclinometer geeft de yaw-, pitch- en roll-waarden van een apparaat aan en werkt het beste met apps die belangrijk zijn voor de locatie van het apparaat in de ruimte. Pitch en roll zijn afgeleid uit de zwaartekrachtvector van de versnellingsmeter en uit de geïntegreerde gegevens van de gyroscoop. De gierhoek wordt bepaald op basis van magnetometer- en gyrometergegevens (vergelijkbaar met een kompasrichting). Inclinometers bieden geavanceerde oriëntatiegegevens op een toegankelijke en begrijpelijke manier. Gebruik inclinometers wanneer u apparaatstand nodig hebt, maar u hoeft de sensorgegevens niet te manipuleren.

Inclinometer met pitch-, roll- en yaw-gegevens

Apps die hun weergave aanpassen aan de stand van het apparaat, kunnen gebruikmaken van de inclinometersensor. Daarnaast zou een app die een vliegtuig weergeeft dat de gier-, stamp- en rolbewegingen van het apparaat volgt, ook gebruikmaken van de metingen van de inclinometer.

Zie De hellingsmeter gebruiken voor een voorbeeld van een implementatie.

Lichtsensor

De sensor LightSensor kan het omgevingslicht rondom de sensor bepalen. Hierdoor kan een app bepalen wanneer de lichtinstelling rond een apparaat is gewijzigd. Een gebruiker met een tablet kan bijvoorbeeld op een zonnige dag van binnen naar buiten lopen. Een slimme toepassing kan deze waarde gebruiken om het contrast tussen de achtergrond en het lettertype te vergroten dat wordt weergegeven. Hierdoor kan de inhoud nog steeds worden gelezen in de helderdere, buiteninstelling.

Zie De lichtsensor gebruiken voor een voorbeeld van een implementatie.

Oriëntatiesensor

De oriëntatie van het apparaat wordt uitgedrukt met zowel een quaternion als een rotatiematrix. De OrientationSensor biedt een hoge mate van nauwkeurigheid bij het bepalen hoe het apparaat zich in de ruimte bevindt ten opzichte van de absolute richting. De OrientationSensor-gegevens zijn afgeleid van de versnellingsmeter, gyrometer en magnetometer. Daarom kunnen zowel de inclinometer- als kompassensor worden afgeleid uit de quaternionwaarden. Quaternions en rotatiematrices lenen zich goed voor geavanceerde wiskundige manipulatie en worden vaak gebruikt in grafisch programmeren. Apps die complexe manipulatie gebruiken, zouden de oriëntatiesensor de voorkeur moeten geven, omdat veel transformaties zijn gebaseerd op quaternions en rotatiematrices.

Oriëntatiesensorgegevens

De oriëntatiesensor wordt vaak gebruikt in geavanceerde augmented reality-apps die een overlay op uw omgeving schilderen op basis van de richting die de achterkant van het apparaat aanwijst.

Zie De oriëntatiesensor gebruiken voor een voorbeeld van een implementatie.

Stappenteller

De sensor stappenteller houdt het aantal stappen bij dat wordt gezet door de gebruiker die het aangesloten apparaat bij zich draagt. De sensor is geconfigureerd om het aantal stappen gedurende een bepaalde periode bij te houden. Verschillende fitnesstoepassingen houden graag het aantal stappen bij om de gebruiker te helpen verschillende doelen te stellen en te bereiken. Deze informatie kan vervolgens worden verzameld en opgeslagen om de voortgang in de loop van de tijd weer te geven.

Zie het voorbeeld pedometervoorbeeld voor een voorbeeld van een implementatie.

Nabijheidssensor

De Proximity sensor kan worden gebruikt om aan te geven of objecten wel of niet door de sensor worden gedetecteerd. Naast het bepalen of een object binnen het bereik van het apparaat valt, kan de nabijheidssensor ook de afstand tot het gedetecteerde object bepalen. Een voorbeeld waarbij dit kan worden gebruikt, is met een toepassing die uit een slaapstand wil komen wanneer een gebruiker binnen een opgegeven bereik komt. Het apparaat kan zich in een energiezuinige slaapstand bevinden totdat de nabijheidssensor een object detecteert, waarna het naar een actievere toestand kan overgaan.

Zie het voorbeeld van de proximiteitssensor voor een voorbeeldimplementatie.

Eenvoudige oriëntatie

SimpleOrientationSensor detecteert de huidige kwadrantoriëntatie van het opgegeven apparaat, of het met de voorkant naar boven of naar beneden ligt. Het heeft zes mogelijke SimpleOrientation staten (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Een lezer-app die de weergave wijzigt op basis van het apparaat dat parallel of loodrecht op de grond wordt gehouden, gebruikt de waarden van simpleOrientationSensor om te bepalen hoe het apparaat wordt vastgehouden.

Zie het voorbeeld simple orientation sensor sample voor een voorbeeld van een implementatie.