Sensorer

Sensorer meddelar din app relationen mellan en enhet och den fysiska världen runt den. Sensorer kan berätta för din app enhetens riktning, orientering och rörelse. Dessa sensorer kan göra ditt spel, appen för förhöjd verklighet eller verktygsappen mer användbar och interaktiv genom att tillhandahålla en unik form av indata, till exempel att använda enhetens rörelse för att ordna tecknen på skärmen eller simulera att vara i en cockpit och använda enheten som ratt.

Som en allmän regel kan du från början bestämma om din app enbart ska vara beroende av sensorer eller om sensorer bara erbjuder ytterligare en kontrollmekanism. Till exempel kan ett körspel som använder en enhet som en virtuell ratt styras via ett gui på skärmen – på så sätt fungerar appen oavsett vilka sensorer som är tillgängliga i systemet. Å andra sidan kan en marmorlutningslabyrint kodas för att endast fungera på system som har lämpliga sensorer. Du måste göra det strategiska valet om du vill förlita dig helt på sensorer. Observera att ett kontrollschema för mus/pekskärm ger större kontroll på bekostnad av inlevelse.

Topic Description
Kalibrera sensorer Sensorer i en enhet baserat på magnetometern – kompassen, inlinometern och orienteringssensorn – kan bli i behov av kalibrering på grund av miljöfaktorer. Uppräkningen MagnetometerAccuracy kan hjälpa dig att avgöra hur du bör agera när din enhet behöver kalibreras.
Sensorns orientering Sensordata från klasserna OrientationSensor definieras av deras referensaxlar. Dessa axlar definieras av enhetens liggande orientering och roteras med enheten när användaren vänder den.
Använd accelerometern Lär dig hur du använder accelerometern för att reagera på användarens rörelser.
Använd kompassen Lär dig hur du använder kompassen för att fastställa den aktuella rubriken.
Använd gyrometern Lär dig hur du använder gyrometern för att identifiera ändringar i användarflytten.
Använd inlinometern Lär dig hur du använder inklinometern för att avgöra stampning, rullning och girning.
Använd ljussensorn Lär dig hur du använder sensorn för omgivande ljus för att upptäcka förändringar i belysningen.
Använd orienteringssensorn Lär dig hur du använder orienteringssensorerna för att fastställa enhetens orientering.

Batchbearbetning av sensordata

Vissa sensorer stöder begreppet batchbearbetning. Detta varierar beroende på vilken sensor som är tillgänglig. När en sensor implementerar batchbearbetning samlar den in flera datapunkter under ett angivet tidsintervall och överför sedan alla dessa data samtidigt. Detta skiljer sig från normalt beteende där en sensor rapporterar sina resultat så snart den utför en läsning. Tänk på följande diagram som visar hur data samlas in och sedan levereras, först med normal leverans och sedan med batchleverans.

Sensorsamling

Den främsta fördelen med batchning av sensordata är längre batteritid. När data inte skickas omedelbart sparas processorkraften och förhindrar att data behöver bearbetas omedelbart. Delar av systemet kan sova tills de behövs, vilket genererar betydande energibesparingar.

Du kan påverka hur ofta sensorn skickar batchar genom att justera svarstiden. Till exempel har sensorn Accelerometer egenskapen ReportLatency. När den här egenskapen har angetts för ett program skickar sensorn data efter den angivna tiden. Du kan styra hur mycket data som ackumuleras under en viss svarstid genom att ange egenskapen ReportInterval .

Det finns ett par varningar att tänka på när det gäller att ställa in svarstiden. Den första varningen är att varje sensor har en MaxBatchSize som den kan stödja baserat på själva sensorn. Det här är antalet händelser som sensorn kan cachelagras innan den tvingas skicka dem. Om du multiplicerar MaxBatchSize med ReportInterval avgör det maximala ReportLatency-värdet . Om du anger ett högre värde än detta används den maximala svarstiden så att du inte förlorar data. Dessutom kan flera program ange en önskad svarstid. För att uppfylla behoven för alla program används den kortaste svarstiden. På grund av dessa fakta kanske svarstiden som du anger i ditt program inte matchar den observerade svarstiden.

Om en sensor använder batchrapportering rensar anropet GetCurrentReading den aktuella databatchen och startar en ny svarstidsperiod.

Accelerometer

Sensorn Accelerometer mäter G-force-värden längs X-, Y- och Z-axlarna på enheten och är perfekt för enkla rörelsebaserade program. Observera att G-force-värden inkluderar acceleration på grund av gravitation. Om enheten har SimpleOrientation av FaceUp i en tabell, skulle accelerometern läsa -1 G på Z-axeln. Därför mäter accelerometrar inte nödvändigtvis bara koordinatacceleration – hastighetsändringen. När du använder en accelerometer, se till att skilja mellan gravitationsvektorn från gravitationen och den linjära accelerationsvektorn från rörelse. Observera att gravitationsvektorn bör normaliseras till 1 för en stationär enhet.

Följande diagram illustrerar:

  • V1 = Vektor 1 = Kraft på grund av gravitation
  • V2 = Vector 2 = -Z axel för enhetens chassi (pekar från baksidan av skärmen)
  • Θi = Lutningsvinkel (lutning) = vinkel mellan –Z-axeln för enhetens chassi och gravitationsvektor

Accelerometer Accelerometer-mätning

Appar som kan använda accelerometersensorn inkluderar ett spel där en marmor på skärmen rullar i den riktning du lutar enheten (gravitationsvektor). Den här typen av funktionalitet motsvarar nära funktionen hos Inclinometer och kan även åstadkommas med den sensorn genom att använda en kombination av lutning och rullning. Med hjälp av accelerometerns gravitationsvektor förenklas detta något genom att tillhandahålla en lätt matematiskt manipulerad vektor för enhetslutning. Ett annat exempel skulle vara en app som ger ifrån sig ljudet av en pisksnärt när användaren snärtar enheten genom luften (linjär accelerationsvektor).

Ett exempel på implementering finns i Använda accelerometern.

Aktivitetssensor

Sensorn Activity avgör aktuell status för enheten som är ansluten till sensorn. Den här sensorn används ofta i träningsappar för att registrera om en användare som bär en enhet springer eller går. Se ActivityType för en lista över möjliga aktiviteter som kan identifieras av detta sensor-API.

Exempelimplementering finns i activity sensor sample.

Höjdmätare

Sensorn Altimeter returnerar ett värde som anger sensorns höjd. På så sätt kan du hålla reda på en höjdförändring när det gäller meter från havsnivån. Ett exempel på en app som skulle kunna använda detta är en löparapp som håller reda på höjdskillnaderna under en löprunda för att beräkna hur många kalorier som förbränns. I det här fallet kan dessa sensordata kombineras med sensorn Activity för att ge mer exakt spårningsinformation.

Ett exempel på implementering finns i exemplet altimeter.

Barometer

Sensorn Barometer gör att ett program kan hämta barometriska avläsningar. Ett väderprogram kan använda den här informationen för att tillhandahålla det aktuella atmosfäriska trycket. Detta kan användas för att ge mer detaljerad information och förutsäga potentiella väderförändringar.

Ett exempel på implementering finns i exemplet barometer.

Kompass

Compass-sensorn returnerar en 2D-kurs i förhållande till magnetisk norr utifrån jordens horisontalplan. Kompasssensorn ska inte användas för att fastställa specifik enhetsorientering eller för att representera något i 3D-utrymme. Geografiska funktioner kan orsaka naturlig deklination i rubriken, så vissa system stöder både HeadingMagneticNorth och HeadingTrueNorth. Tänk på vilken app du föredrar, men kom ihåg att inte alla system rapporterar ett verkligt nordvärde. Sensorerna gyroskop och magnetometer (en enhet som mäter magnetfältets styrka) kombinerar sina data för att ge kompassriktningen, vilket sammantaget stabiliserar data (magnetfältets styrka är mycket instabil på grund av komponenter i det elektriska systemet).

Kompassavläsningar i fråga om magnetisk nordpol

Appar som vill visa en kompassros eller navigera på en karta använder vanligtvis kompasssensorn.

Ett exempel på implementering finns i Använda kompassen.

Gyrometer

Sensorn Gyrometer mäter vinkelavvikelser längs X-, Y- och Z-axlarna. Dessa är mycket användbara i enkla rörelsebaserade appar som inte bryr sig om enhetens orientering utan bryr sig om att enheten roterar i olika hastigheter. Gyrometer kan drabbas av brus i data eller en konstant bias längs en eller flera av axlarna. Du bör fråga accelerometern för att kontrollera om enheten rör sig för att avgöra om gyrometern lider av en bias och sedan kompensera i enlighet med detta i din app.

Gyrometer med tonhöjd, rulle och gäsp

Ett exempel på en app som kan använda gyrometersensorn är ett spel som sätter ett roulettehjul i snurrning utifrån en snabb vridrörelse med enheten.

Ett exempel på implementering finns i Använda gyrometern.

Inklinometer

Sensorn Inclinometer anger värdena för yaw, pitch och roll och fungerar bäst med appar som bryr sig om hur enheten ligger i rymden. Pitch- och rollvinklarna beräknas utifrån accelerometerns gravitationsvektor och genom integrering av data från gyrometern. Girvinkeln bestäms utifrån data från magnetometer och gyrometer (liknande kompassriktning). Inlinometer erbjuder avancerade orienteringsdata på ett enkelt och begripligt sätt. Använd inlinometer när du behöver enhetens orientering men inte behöver manipulera sensordata.

Inklinometer med gir-, roll- och stampdata

Appar som ändrar sin vy så att de matchar enhetens orientering kan använda lutningssensorn. Dessutom skulle en app som visar ett flygplan som motsvarar enhetens gir, stigning och roll också använda inklinometeravläsningarna.

Ett exempel på implementering finns i Använda inlinometern.

Ljussensor

Sensorn LightSensor kan bestämma det omgivande ljuset som omger sensorn. Detta gör det möjligt för en app att avgöra när ljusinställningen som omger en enhet har ändrats. En användare med en surfplatta kan till exempel gå från inomhusmiljö till utomhus en solig dag. Ett smart program kan använda det här värdet för att öka kontrasten mellan bakgrunden och teckensnittet som återges. Det skulle göra innehållet fortfarande läsbart i den ljusare utomhusinställningen.

Ett exempel på implementering finns i Använda ljussensorn.

Orienteringssensor

Enhetens orientering uttrycks genom både quaternion och en rotationsmatris. OrientationSensor erbjuder hög precision vid bestämning av hur enheten är orienterad i förhållande till omgivningen med avseende på absolut riktning. OrientationSensor-data härleds från accelerometern, gyrometern och magnetometern. Därför kan både inlinometern och kompasssensorerna härledas från quaternion-värdena. Quaternions och rotationsmatriser lämpar sig väl för avancerad matematisk manipulation och används ofta i grafisk programmering. Appar som använder komplex manipulering bör gynna orienteringssensorn eftersom många transformeringar baseras på quaternions och rotationsmatriser.

Orienteringssensordata

Orienteringssensorn används ofta i avancerade appar för förstärkt verklighet som lägger ett överlägg på din omgivning baserat på i vilken riktning enhetens baksida pekar.

Ett exempel på implementering finns i Använda orienteringssensorn.

Stegräknare

Sensorn Pedometer håller reda på antalet steg som användaren utför med den anslutna enheten. Sensorn är konfigurerad för att hålla reda på antalet steg under en viss tidsperiod. Flera träningsprogram vill hålla reda på hur många steg som vidtagits för att hjälpa användaren att ställa in och nå olika mål. Den här informationen kan sedan samlas in och lagras för att visa förloppet över tid.

Ett exempel på implementering finns i exemplet pedometer.

Närhetssensor

Sensorn Proximity kan användas för att ange om objekt identifieras av sensorn eller inte. Förutom att avgöra om ett objekt ligger inom enhetens räckvidd kan närhetssensorn också fastställa avståndet till det identifierade objektet. Ett exempel där detta kan användas är med ett program som vill komma ut ur ett viloläge när en användare kommer inom ett angivet intervall. Enheten kan vara i ett energisnålt viloläge tills närhetssensorn upptäcker ett objekt och först då gå in i ett mer aktivt läge.

Exempelimplementering finns i proximity sensor sample.

Enkel orientering

SimpleOrientationSensor identifierar den aktuella kvadrantorienteringen för den angivna enheten eller den är uppåt eller nedåtvänd. Den har sex möjliga tillstånd SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

En läsarapp som ändrar sin visning baserat på att enheten hålls parallell eller vinkelrät mot marken använder värdena från SimpleOrientationSensor för att avgöra hur enheten hålls.

Ett exempel på implementering finns i simple orientation sensor sample.