Bu bölümde sensör eksenleri, temel sensörler ve kompozit sensörler (aktivite, tutum, kalibre edilmemiş ve etkileşim) açıklanmaktadır.
Sensör eksenleri
Birçok sensörden gelen sensör olayı değerleri, cihaza göre statik olan belirli bir çerçevede ifade edilir.
Mobil cihaz eksenleri
Sensör API'si yalnızca ekranın doğal yönüne bağlıdır (cihazın ekran yönü değiştiğinde eksenler değiştirilmez.
Otomotiv eksenleri
Android Automotive uygulamalarında eksenler araç gövdesine göre tanımlanır. Araç referans çerçevesinin başlangıç noktası arka aksın merkezidir. Araç referans çerçevesi şu şekilde yönlendirilir:
- X ekseni sağa işaret eder ve aracın simetri düzlemine dik olan yatay bir düzlemdedir.
- Y ekseni ileriyi gösterir ve yatay bir düzlemdedir.
Araç referans çerçevesi sağ yönlü bir koordinat sistemidir. Bu nedenle Z ekseni yukarıyı gösterir.
Referans çerçevesinin Z ekseni yerçekimine göre hizalanmıştır; bu, X ekseninin ve Y ekseninin her ikisinin de yatay olduğu anlamına gelir. Sonuç olarak Y ekseni her zaman ön akstan geçmeyebilir.
Temel sensörler
Temel sensör türleri, temsil ettikleri fiziksel sensörlere göre adlandırılır. Bu sensörler, verileri tek bir fiziksel sensörden aktarır (diğer sensörlerden veri üreten kompozit sensörlerin aksine). Temel sensör türlerine örnekler şunları içerir:
-
SENSOR_TYPE_ACCELEROMETER
-
SENSOR_TYPE_GYROSCOPE
-
SENSOR_TYPE_MAGNETOMETER
Ancak temel sensörler, temeldeki fiziksel sensörlere eşit değildir ve bunlarla karıştırılmamalıdır. Temel sensörden gelen veriler fiziksel sensörün ham çıktısı değildir çünkü düzeltmeler (önyargı telafisi ve sıcaklık telafisi gibi) uygulanır.
Örneğin, aşağıdaki kullanım durumlarında temel sensörün özellikleri, temeldeki fiziksel sensörün özelliklerinden farklı olabilir:
- 1 derece/sn'lik bir sapma aralığına sahip olacak şekilde derecelendirilmiş bir jiroskop çipi.
- Fabrika kalibrasyonu, sıcaklık telafisi ve sapma telafisi uygulandıktan sonra, Android sensörünün gerçek sapması azaltılacaktır; bu, sapmanın 0,01 derece/sn'nin altında olmasının garanti edildiği bir noktaya kadar olabilir.
- Bu durumda, altta yatan sensörün veri sayfasında 1 derece/sn söylenmesine rağmen Android sensörünün 0,01 derece/sn'nin altında bir önyargıya sahip olduğunu söylüyoruz.
- 100 uW güç tüketimine sahip bir barometre.
- Oluşturulan verilerin çipten SoC'ye taşınması gerektiğinden, barometre Android sensöründen veri toplamanın gerçek güç maliyeti çok daha yüksek olabilir, örneğin 1000 uW.
- Bu durumda barometre çip uçlarında ölçülen güç tüketimi 100uW olmasına rağmen Android sensörün 1000 uW güç tüketimine sahip olduğunu söylüyoruz.
- Kalibre edildiğinde 100 uW tüketen, ancak kalibre ederken daha fazla tüketen bir manyetometre.
- Kalibrasyon rutini, jiroskopun etkinleştirilmesini, 5000 uW tüketilmesini ve bazı algoritmaların çalıştırılmasını gerektirebilir ve bu da 900 uW'a daha mal olur.
- Bu durumda (manyetometre) Android sensörünün maksimum güç tüketiminin 6000 uW olduğunu söylüyoruz.
- Bu durumda, ortalama güç tüketimi daha kullanışlı bir ölçümdür ve HAL aracılığıyla sensörün statik özelliklerinde rapor edilen de budur.
İvmeölçer
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
uyanmayan bir sensör döndürür
Bir ivmeölçer sensörü, cihazın üç sensör ekseni boyunca hızlanmasını bildirir. Ölçülen ivme hem fiziksel ivmeyi (hız değişimini) hem de yer çekimini içerir. Ölçüm, Sensor_event_t.acceleration'ın x, y ve z alanlarında raporlanır.
Tüm değerler SI birimleri (m/s^2) cinsindendir ve cihazın ivmesinden üç sensör ekseni boyunca yer çekimi kuvveti çıkarılarak ölçülür.
İşte örnekler:
- Serbest düşüşte (x, y, z) normu 0'a yakın olmalıdır.
- Cihaz masa üzerinde düz bir şekilde durup sol tarafı sağa doğru itildiğinde x ivme değeri pozitif olur.
- Cihaz bir masa üzerinde düz bir şekilde durduğunda z boyunca ivme değeri +9,81'dir; bu da cihazın ivmesi (0 m/s^2) eksi yer çekimi kuvvetine (-9,81 m/s^2) karşılık gelir.
- Cihaz bir masa üzerinde düz bir şekilde durduğunda ve gökyüzüne doğru itildiğinde, ivme değeri +9,81'den büyüktür; bu, cihazın ivmesi (+A m/s^2) eksi yer çekimi kuvvetine (-9,81 m) karşılık gelir. /s^2).
Okumalar aşağıdakiler kullanılarak kalibre edilir:
- Sıcaklık telafisi
- Çevrimiçi önyargı kalibrasyonu
- Çevrimiçi terazi kalibrasyonu
Akış sırasında değerlerde sıçramalara neden olmamak için sapma ve ölçek kalibrasyonu yalnızca sensör devre dışıyken güncellenmelidir.
İvme ölçer ayrıca, sensors_event_t.acceleration.status
aracılığıyla okumalarının ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager
SENSOR_STATUS_*
sabitlerine bakın.
Ortam sıcaklığı
Raporlama modu: Değişiklik halinde
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
uyanmayan bir sensör döndürür
Bu sensör ortam (oda) sıcaklığını santigrat derece cinsinden sağlar.
Manyetik alan sensörü
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
uyanmayan bir sensör döndürür
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
Bir manyetik alan sensörü (manyetometre olarak da bilinir), üç sensör ekseni boyunca ölçülen ortam manyetik alanını bildirir.
Ölçüm, sensors_event_t.magnetic
x, y ve z alanlarında raporlanır ve tüm değerler mikro Tesla (uT) cinsindendir.
Manyetometre ayrıca, sensors_event_t.magnetic.status
aracılığıyla okumalarının ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager
SENSOR_STATUS_*
sabitlerine bakın.
Okumalar aşağıdakiler kullanılarak kalibre edilir:
- Sıcaklık telafisi
- Fabrikada (veya çevrimiçi) yumuşak demir kalibrasyonu
- Çevrimiçi sert demir kalibrasyonu
Jiroskop
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
uyanmayan bir sensör döndürür
Bir jiroskop sensörü, cihazın üç sensör ekseni etrafındaki dönüş hızını bildirir.
Dönme saat yönünün tersine pozitiftir (sağ kural). Yani, orijin üzerinde konumlandırılmış bir cihaza x, y veya z ekseni üzerindeki pozitif bir konumdan bakan bir gözlemci, eğer cihaz saat yönünün tersine dönüyor gibi görünüyorsa, pozitif dönüş rapor edecektir. Bunun, pozitif dönmenin standart matematiksel tanımı olduğunu ve yuvarlanmanın havacılık tanımıyla uyuşmadığını unutmayın.
Ölçüm, sensors_event_t.gyro
x, y ve z alanlarında raporlanır ve tüm değerler saniye başına radyan (rad/s) cinsindendir.
Okumalar aşağıdakiler kullanılarak kalibre edilir:
- Sıcaklık telafisi
- Fabrika (veya çevrimiçi) terazi telafisi
- Çevrimiçi önyargı kalibrasyonu (sapmayı ortadan kaldırmak için)
Jiroskop ayrıca, sensors_event_t.gyro.status
aracılığıyla okumalarının ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager
SENSOR_STATUS_*
sabitlerine bakın.
Jiroskop, manyetometrelere ve ivmeölçerlere dayalı olarak taklit edilemez; çünkü bu, yerel tutarlılığın ve duyarlılığın azalmasına neden olur. Her zamanki jiroskop çipine dayanmalıdır.
Kalp atış hızı
Raporlama modu: Değişiklik halinde
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
uyanmayan bir sensör döndürür
Kalp atış hızı sensörü, cihaza dokunan kişinin mevcut kalp atış hızını bildirir.
Dakika başına atış (BPM) cinsinden mevcut kalp atış hızı, sensors_event_t.heart_rate.bpm
dosyasında rapor edilir ve sensörün durumu, sensors_event_t.heart_rate.status
dosyasında raporlanır. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager
SENSOR_STATUS_*
sabitlerine bakın. Özellikle ilk aktivasyonda cihazın gövde üzerinde olmadığı bilinmediği sürece ilk olayın durum alanı SENSOR_STATUS_UNRELIABLE
olarak ayarlanmalıdır. Bu sensör açık olduğundan, olaylar yalnızca son olaydan bu yana heart_rate.bpm
veya heart_rate.status
değiştiğinde oluşturulur. Olaylar her sampling_period
hızından daha hızlı üretilmez.
sensor_t.requiredPermission
her zaman SENSOR_PERMISSION_BODY_SENSORS
şeklindedir.
Işık
Raporlama modu: Değişiklik halinde
getDefaultSensor(SENSOR_TYPE_LIGHT)
uyanmayan bir sensör döndürür
Bir ışık sensörü mevcut aydınlatmayı SI lüks birimleri cinsinden bildirir.
Ölçüm, sensors_event_t.light
dosyasında raporlanır.
Yakınlık
Raporlama modu: Değişiklik halinde
Genellikle uyandırma sensörü olarak tanımlanır
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
bir uyandırma sensörü döndürür
Yakınlık sensörü, sensörden en yakın görünür yüzeye olan mesafeyi bildirir.
Android 4.4'e kadar yakınlık sensörleri her zaman uyandırma sensörleriydi ve yakınlıkta bir değişiklik algılandığında SoC'yi uyandırıyordu. Android 4.4'ten sonra, telefon görüşmeleri yaparken ekranı açıp kapatmak için kullanılan sensör olduğundan, ilk olarak bu sensörün uyandırma sürümünü uygulamanızı öneririz.
Ölçüm, sensors_event_t.distance
cinsinden santimetre cinsinden raporlanır. Bazı yakınlık sensörlerinin yalnızca ikili "yakın" veya "uzak" ölçümü desteklediğini unutmayın. Bu durumda sensör, "uzak" durumda kendi sensor_t.maxRange
değerini ve "yakın" durumda ise sensor_t.maxRange
değerinden daha düşük bir değeri bildirir.
Basınç
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_PRESSURE)
uyanmayan bir sensör döndürür
Bir basınç sensörü (barometre olarak da bilinir) atmosferik basıncı hektopaskal (hPa) cinsinden bildirir.
Okumalar kullanılarak kalibre edilir
- Sıcaklık telafisi
- Fabrika önyargı kalibrasyonu
- Fabrika ölçekli kalibrasyon
Barometre genellikle yükseklik değişikliklerini tahmin etmek için kullanılır. Mutlak yüksekliği tahmin etmek için deniz seviyesi basıncı (hava durumuna bağlı olarak değişen) referans olarak kullanılmalıdır.
Bağıl nem
Raporlama modu: Değişiklik halinde
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
uyanmayan bir sensör döndürür
Bağıl nem sensörü, bağıl ortam hava nemini ölçer ve yüzde cinsinden bir değer verir.
Kompozit sensör tipleri
Kompozit sensör, bir veya daha fazla fiziksel sensörden gelen verileri işleyerek ve/veya birleştirerek veri üretir. (Temel sensör olmayan herhangi bir sensöre kompozit sensör denir.) Kompozit sensör örnekleri şunları içerir:
- Genellikle bir ivme ölçere dayalı olan ancak güç tüketimi ve doğruluğun kabul edilebilir olması durumunda diğer sensörlere de dayanabilen adım dedektörü ve önemli hareket .
- Bir ivmeölçer ve jiroskopa dayalı oyun döndürme vektörü .
- Kalibre edilmemiş jiroskop , jiroskop taban sensörüne benzer, ancak sapma kalibrasyonu ölçümde düzeltilmek yerine ayrı olarak raporlanır.
Temel sensörlerde olduğu gibi kompozit sensörlerin özellikleri de nihai verilerinin özelliklerinden gelir. Örneğin, bir oyun döndürme vektörünün güç tüketimi muhtemelen ivmeölçer çipinin, jiroskop çipinin, veriyi işleyen çipin ve veriyi taşıyan otobüslerin güç tüketiminin toplamına eşittir. Başka bir örnek olarak, bir oyun döndürme vektörünün kayması, fiziksel sensör özelliklerine olduğu kadar kalibrasyon algoritmasının kalitesine de bağlıdır.
Aşağıdaki tabloda mevcut kompozit sensör tipleri listelenmektedir. Her kompozit sensör bir veya daha fazla fiziksel sensörden gelen verilere dayanır. Kötü bir kullanıcı deneyimi sağladıklarından, sonuçları yaklaşık olarak tahmin etmek için temeldeki diğer fiziksel sensörleri seçmekten kaçının.
Sensör tipi | Kategori | Temel fiziksel sensörler | Raporlama modu |
---|---|---|---|
Davranış | İvmeölçer, jiroskop, manyetometre KULLANILMAMALIDIR | Sürekli | |
Davranış | İvmeölçer, manyetometre, jiroskop KULLANILMAMALIDIR | Sürekli | |
Bakış hareketi | Etkileşim | Tanımsız | Tek atış |
Davranış | İvmeölçer, jiroskop | Sürekli | |
Kalibre edilmemiş | Jiroskop | Sürekli | |
Aktivite | İvmeölçer, jiroskop (varsa) veya manyetometre (jiroskop yoksa) | Sürekli | |
Kalibre edilmemiş | Manyetometre | Sürekli | |
Yönlendirme (kullanımdan kaldırıldı) | Davranış | İvmeölçer, manyetometre, jiroskop (varsa) | Sürekli |
Etkileşim | Tanımsız | Tek atış | |
Davranış | İvmeölçer, manyetometre, jiroskop | Sürekli | |
Aktivite | İvmeölçer (veya çok düşük güçte olduğu sürece başka bir) | Tek atış | |
Aktivite | İvmeölçer | Değişim sırasında | |
Aktivite | İvmeölçer | Özel | |
Aktivite | İvmeölçer | Özel | |
Etkileşim | Tanımsız | Tek atış |
= Düşük güç sensörü
Etkinlik kompozit sensörleri
Doğrusal ivme
Temel fiziksel sensörler: İvmeölçer ve (varsa) jiroskop (veya jiroskop yoksa manyetometre)
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
uyanmayan bir sensör döndürür
Doğrusal bir hızlanma sensörü, yerçekimi hariç olmak üzere cihazın sensör çerçevesindeki doğrusal hızlanmasını bildirir.
Çıktı kavramsal olarak şu şekildedir: ivmeölçerin çıktısı eksi yerçekimi sensörünün çıktısı. sensors_event_t.acceleration
x, y ve z alanlarında m/s^2 cinsinden raporlanır.
Cihaz hareketsizken tüm eksenlerdeki okumalar 0'a yakın olmalıdır.
Cihazda bir jiroskop varsa, doğrusal ivme sensörü jiroskopu ve ivme ölçeri giriş olarak kullanmalıdır.
Cihazda bir jiroskop yoksa doğrusal hızlanma sensörü, giriş olarak ivmeölçer ve manyetometreyi kullanmalıdır.
Önemli hareket
Temel fiziksel sensör: İvmeölçer (veya düşük güçte olduğu sürece başka bir sensör)
Raporlama modu: Tek seferlik
Düşük güç
Bu sensörün yalnızca uyandırma sürümünü uygulayın.
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
bir uyandırma sensörü döndürür
Önemli bir hareket dedektörü, önemli bir hareket algılandığında tetiklenir: kullanıcının konumunda bir değişikliğe yol açabilecek bir hareket.
Bu tür önemli hareketlere örnekler:
- Yürüyüş veya bisiklete binme
- Hareket halindeki bir arabada, otobüste veya trende oturmak
Önemli hareketi tetiklemeyen durumlara örnekler:
- Telefon cebinde ve kişi hareket etmiyor
- Telefon masanın üzerinde ve yakındaki trafik veya çamaşır makinesi nedeniyle masa biraz sallanıyor
Yüksek seviyede, konum belirlemede güç tüketimini azaltmak için önemli hareket dedektörü kullanılır. Lokalizasyon algoritmaları cihazın statik olduğunu tespit ettiğinde, kullanıcı konum değiştirdiğinde cihazı uyandırmak için önemli hareketlere güvendikleri düşük güç moduna geçebilirler.
Bu sensör düşük güçlü olmalıdır. Güç tüketimi için küçük miktarda yanlış negatifle sonuçlanabilecek bir ödünleşim yapar. Bu birkaç nedenden dolayı yapılır:
- Bu sensörün amacı güç tasarrufu sağlamaktır.
- Kullanıcı hareket etmediğinde bir olayın tetiklenmesi (yanlış pozitif), güç açısından maliyetli olduğundan bundan kaçınılmalıdır.
- Kullanıcı hareket ederken bir olayın tetiklenmemesi (yanlış negatif), tekrar tekrar yapılmadığı sürece kabul edilebilir. Kullanıcı 10 saniyedir yürüyorsa bu 10 saniye içinde bir olayın tetiklenmemesi kabul edilemez.
Her sensör olayı, sensors_event_t.data[0]
dosyasında 1
rapor eder.
Adım dedektörü
Temel fiziksel sensör: İvmeölçer (+ düşük güç olduğu sürece muhtemelen diğerleri)
Raporlama modu: Özel (atılan adım başına bir olay)
Düşük güç
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
uyanmayan bir sensör döndürür
Adım dedektörü, kullanıcı tarafından her adım atıldığında bir olay üretir.
sensors_event_t.timestamp
olayının zaman damgası, ayağın yere çarptığı zamana karşılık gelir ve hızlanmada yüksek bir değişime neden olur.
Adım sayacıyla karşılaştırıldığında adım algılayıcının gecikme süresi daha düşük olmalıdır (iki saniyeden az). Hem adım dedektörü hem de adım sayacı kullanıcının ne zaman yürüdüğünü, koştuğunu ve merdivenlerden yukarı çıktığını algılar. Kullanıcı bisiklet sürerken, araba sürerken veya başka araçlardayken tetiklenmemelidirler.
Bu sensör düşük güçlü olmalıdır. Yani donanımsal olarak adım tespiti yapılamıyorsa bu sensörün tanımlanmaması gerekir. Özellikle adım algılayıcı etkinleştirildiğinde ve ivmeölçer etkinleştirilmediğinde yalnızca adımlar kesintileri tetiklemelidir (her ivmeölçer okuması değil).
sampling_period_ns
adım algılayıcılar üzerinde hiçbir etkisi yoktur.
Her sensör olayı, sensors_event_t.data[0]
dosyasında 1
rapor eder.
Adım sayacı
Temel fiziksel sensör: İvmeölçer (+ düşük güç olduğu sürece muhtemelen diğerleri)
Raporlama modu: Değişiklik halinde
Düşük güç
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
uyanmayan bir sensör döndürür
Bir adım sayacı, etkinleştirildiğinde son yeniden başlatmadan bu yana kullanıcının attığı adımların sayısını bildirir.
Ölçüm, sensors_event_t.step_counter
dosyasında uint64_t
olarak raporlanır ve yalnızca sistem yeniden başlatıldığında sıfıra sıfırlanır.
Olayın zaman damgası, o olay için son adımın atıldığı zamana ayarlanır.
Bir adımın zamanının belirtilmesi için Adım dedektörü sensör tipine bakın.
Adım dedektörüyle karşılaştırıldığında adım sayacının gecikme süresi daha yüksek olabilir (10 saniyeye kadar). Bu gecikme sayesinde bu sensör yüksek bir doğruluğa sahiptir; tüm gün süren ölçümlerden sonraki adım sayısı, gerçek adım sayısının %10'u dahilinde olmalıdır. Hem adım dedektörü hem de adım sayacı kullanıcının ne zaman yürüdüğünü, koştuğunu ve merdivenlerden yukarı çıktığını algılar. Kullanıcı bisiklet sürerken, araba sürerken veya başka araçlardayken tetiklenmemelidirler.
Donanım, dahili adım sayısının asla taşmamasını sağlamalıdır. Donanımın dahili sayacının minimum boyutu 16 bit olacaktır. Olası bir taşma durumunda (en fazla ~2^16 adımda bir), sürücünün karşı bakımı yapabilmesi için SoC uyandırılabilir.
Etkileşim'de belirtildiği gibi, bu sensör çalışırken diğer sensörleri, özellikle de kullanımda olabilecek ivme ölçeri bozmayacaktır.
Belirli bir cihaz bu çalışma modlarını desteklemiyorsa bu sensör tipinin HAL tarafından rapor edilmemesi gerekir. Yani bu sensörün HAL'de "taklit edilmesi" kabul edilemez.
Bu sensör düşük güçlü olmalıdır. Yani donanımda adım tespiti yapılamıyorsa bu sensörün tanımlanmaması gerekir. Özellikle adım sayacı etkinleştirildiğinde ve ivmeölçer etkinleştirilmediğinde, kesintileri yalnızca adımlar tetiklemelidir (ivmeölçer verilerini değil).
Eğim dedektörü
Temel fiziksel sensör: İvmeölçer (+ düşük güç olduğu sürece muhtemelen diğerleri)
Raporlama modu: Özel
Düşük güç
Bu sensörün yalnızca uyandırma sürümünü uygulayın.
getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR)
bir uyandırma sensörü döndürür
Bir eğim dedektörü, bir eğim olayının her algılanmasında bir olay üretir.
Bir eğim olayı, aktivasyondan veya sensör tarafından oluşturulan son olaydan bu yana 2 saniyelik pencere ortalama yerçekiminin yönünün en az 35 derece değişmesiyle tanımlanır. İşte algoritma:
-
reference_estimated_gravity
= etkinleştirmeden sonraki ilk saniyedeki ivmeölçer ölçümlerinin ortalaması veya son eğim olayı oluşturulduğunda tahmini yerçekimi. -
current_estimated_gravity
= son 2 saniyedeki ivmeölçer ölçümlerinin ortalaması. -
angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees
olduğunda tetiklenir
Telefonun yöneliminde bir değişiklik olmadan gerçekleşen büyük hızlanmalar bir eğim olayını tetiklememelidir. Örneğin, araba sürerken keskin bir dönüş veya güçlü bir hızlanma, ortalama hızlanma açısı 35 dereceden fazla değişse bile bir eğim olayını tetiklememelidir. Tipik olarak bu sensör yalnızca bir ivmeölçer yardımıyla uygulanır. Güç tüketimini önemli ölçüde artırmıyorlarsa diğer sensörler de kullanılabilir. Bu, SoC'nin askıya alma moduna geçmesine izin vermesi gereken düşük güçlü bir sensördür. Bu sensörü HAL'de taklit etmeyin. Her sensör olayı, sensors_event_t.data[0]
dosyasında 1
rapor eder.
Tutum kompozit sensörleri
Döndürme vektörü
Temel fiziksel sensörler: İvmeölçer, manyetometre ve jiroskop
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
uyanmayan bir sensör döndürür
Bir dönüş vektör sensörü, cihazın Doğu-Kuzey-Yukarı koordinat çerçevesine göre yönünü bildirir. Genellikle ivmeölçer, jiroskop ve manyetometre okumalarının entegrasyonuyla elde edilir. Doğu-Kuzey-Yukarı koordinat sistemi doğrudan ortonormal temel olarak tanımlanır; burada:
- X doğuyu işaret eder ve yere teğettir.
- Y kuzeyi gösterir ve yere teğettir.
- Z gökyüzüne doğru yönelir ve yere diktir.
Telefonun yönü, Doğu-Kuzey-Yukarı koordinatlarını telefonun koordinatlarıyla hizalamak için gereken dönüşle temsil edilir. Yani, döndürmeyi dünya çerçevesine (X,Y,Z) uygulamak, onları telefon koordinatlarıyla (x,y,z) hizalayacaktır.
Döndürme, referans (Doğu-Kuzey-Yukarı hizalanmış) cihaz yönünden geçerli cihaz yönüne gitmek için telefonun bir rot_axis
ekseni etrafında bir teta açısı kadar döndürülmesi olarak görülebilir. Döndürme, bir birim kuaterniyonun birimsiz dört x, y, z, w bileşeni olarak kodlanır:
-
sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
-
sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
-
sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
-
sensors_event_t.data[3] = cos(theta/2)
Nerede:
-
rot_axis
x, y ve z alanları, dönüş eksenini temsil eden birim uzunluk vektörünün Doğu-Kuzey-Yukarı koordinatlarıdır -
theta
dönme açısıdır
Kuaterniyon bir birim kuaterniyondur: Norm 1
olmalıdır. Bunun sağlanamaması, hatalı istemci davranışına neden olacaktır.
Ayrıca bu sensör tahmini bir yön doğruluğunu da bildirir:
sensors_event_t.data[4] = estimated_accuracy
(radyan cinsinden)
Yön hatası, zamanın %95'inde estimated_accuracy
az olmalıdır. Bu sensör, ana yön değişikliği girişi olarak bir jiroskop kullanmalıdır.
Bu sensör ayrıca jiroskop kaymasını telafi etmek için ivmeölçer ve manyetometre girişini kullanır ve yalnızca ivmeölçer ve manyetometre kullanılarak uygulanamaz.
Oyun döndürme vektörü
Temel fiziksel sensörler: İvmeölçer ve jiroskop (manyetometre yok)
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
uyanmayan bir sensör döndürür
Oyun rotasyon vektör sensörü, rotasyon vektör sensörüne benzer ancak jeomanyetik alanı kullanmaz. Bu nedenle Y ekseni kuzeyi değil, başka bir referansı gösterir. Bu referansın, jiroskopun Z ekseni etrafında kaymasıyla aynı büyüklükte kaymasına izin verilir.
sensors_event_t.data[0-3]
ayarının nasıl yapılacağına ilişkin ayrıntılar için Dönme vektörü sensörüne bakın. Bu sensör tahmini bir yön doğruluğu bildirmez: sensors_event_t.data[4]
ayrılmıştır ve 0
olarak ayarlanmalıdır.
İdeal bir durumda, döndürülen ve aynı gerçek dünya yönüne dönen bir telefon, aynı oyun dönüş vektörünü rapor etmelidir.
Bu sensör bir jiroskop ve bir ivmeölçer temeline dayanmalıdır. Jiroskop sapmasının tahmini yoluyla dolaylı olarak manyetometreyi girdi olarak kullanamaz.
Yer çekimi
Temel fiziksel sensörler: İvmeölçer ve (varsa) jiroskop (veya jiroskop yoksa manyetometre)
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_GRAVITY)
uyanmayan bir sensör döndürür
Bir yerçekimi sensörü, cihazın koordinatlarındaki yerçekiminin yönünü ve büyüklüğünü bildirir.
Yerçekimi vektörü bileşenleri, sensors_event_t.acceleration
x, y ve z alanlarında m/s^2 cinsinden raporlanır.
Cihaz hareketsiz durumdayken yerçekimi sensörünün çıkışı ivmeölçerin çıkışıyla aynı olmalıdır. Dünya'da büyüklüğü 9,8 m/s^2 civarındadır.
Cihazda bir jiroskop varsa, yerçekimi sensörü jiroskopu ve ivme ölçeri giriş olarak kullanmalıdır.
Cihazda bir jiroskop yoksa, yerçekimi sensörü ivmeölçer ve manyetometreyi giriş olarak kullanmalıdır.
Jeomanyetik dönme vektörü
Temel fiziksel sensörler: İvmeölçer ve manyetometre (jiroskop yok)
Raporlama modu: Sürekli
Düşük güç
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
uyanmayan bir sensör döndürür
Jeomanyetik dönme vektörü, dönme vektörü sensörüne benzer, ancak bir manyetometre kullanır ve jiroskop kullanmaz.
Bu sensör bir manyetometreye dayalı olmalıdır. Jiroskop kullanılarak uygulanamaz ve jiroskop girişi bu sensör tarafından kullanılamaz.
sensors_event_t.data[0-4]
ayarının nasıl yapılacağına ilişkin ayrıntılar için Dönme vektörü sensörüne bakın.
Tıpkı dönüş vektörü sensöründe olduğu gibi, yön hatasının %95 oranında tahmini doğruluktan ( sensors_event_t.data[4]
) daha az olması gerekir.
Bu sensörün düşük güçlü olması gerekir, dolayısıyla donanıma uygulanması gerekir.
Yönlendirme (kullanımdan kaldırıldı)
Temel fiziksel sensörler: İvmeölçer, manyetometre ve (varsa) jiroskop
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
uyanmayan bir sensör döndürür
Not: Bu, Android SDK'da kullanımdan kaldırılmış eski bir sensör türüdür. Bunun yerini, daha net bir şekilde tanımlanan dönme vektörü sensörü almıştır. Mümkün olduğunda yön sensörü üzerinde dönüş vektörü sensörünü kullanın.
Bir yönlendirme sensörü cihazın tutumunu bildirir. Ölçümler, sensors_event_t.orientation
x, y ve z alanlarında derece cinsinden raporlanır:
-
sensors_event_t.orientation.x
: azimut, manyetik kuzey yönü ile Y ekseni arasındaki, Z ekseni etrafındaki açı (0<=azimuth<360
). 0=Kuzey, 90=Doğu, 180=Güney, 270=Batı. -
sensors_event_t.orientation.y
: eğim, X ekseni etrafında dönüş (-180<=pitch<=180
), Z ekseni Y eksenine doğru hareket ettiğinde pozitif değerlerle. -
sensors_event_t.orientation.z
: yuvarlanma, Y ekseni etrafında dönüş (-90<=roll<=90
), X ekseni Z eksenine doğru hareket ettiğinde pozitif değerlerle.
Tarihsel nedenlerden dolayı dönüş açısının saat yönünde pozitif olduğunu lütfen unutmayın. (Matematiksel olarak saat yönünün tersine pozitif olmalıdır):
Bu tanım, X ekseninin uçağın uzun kenarı boyunca (kuyruktan buruna) olduğu havacılıkta kullanılan sapma, eğim ve yuvarlanma tanımlarından farklıdır.
Oryantasyon sensörü ayrıca, sensors_event_t.orientation.status
aracılığıyla okumalarının ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager
SENSOR_STATUS_*
sabitlerine bakın.
Kalibre edilmemiş sensörler
Kalibre edilmemiş sensörler daha fazla ham sonuç sağlar ve bir miktar sapma içerebilir ancak aynı zamanda kalibrasyon yoluyla uygulanan düzeltmelerden kaynaklanan daha az "sıçrama" içerir. Bazı uygulamalar bu kalibre edilmemiş sonuçları daha sorunsuz ve daha güvenilir olarak tercih edebilir. Örneğin, bir uygulama kendi sensör füzyonunu gerçekleştirmeye çalışıyorsa, kalibrasyonların eklenmesi sonuçları gerçekten bozabilir.
İvmeölçer kalibre edilmemiş
Temel fiziksel sensör: İvmeölçer
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
uyanmayan bir sensör döndürür
Kalibre edilmemiş bir ivmeölçer sensörü, bir sapma tahminiyle birlikte herhangi bir sapma düzeltmesi olmadan (kalibre edilmemiş ölçümlere fabrika sapması ve sıcaklık telafisi uygulanır) cihazın üç sensör ekseni boyunca hızlanmasını rapor eder. Tüm değerler SI birimleri (m/s^2) cinsindendir ve sensors_event_t.uncalibrated_accelerometer
alanlarında raporlanır:
-
x_uncalib
: X ekseni boyunca hızlanma (önyargı telafisi olmadan) -
y_uncalib
: Y ekseni boyunca hızlanma (önyargı telafisi olmadan) -
z_uncalib
: Z ekseni boyunca hızlanma (önyargı telafisi olmadan) -
x_bias
: X ekseni boyunca tahmini sapma -
y_bias
: Y ekseni boyunca tahmini sapma -
z_bias
: Z ekseni boyunca tahmini sapma
Jiroskop kalibre edilmemiş
Temel fiziksel sensör: Jiroskop
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED)
uyanmayan bir sensör döndürür
Kalibre edilmemiş bir jiroskop, bir önyargı tahminiyle birlikte önyargı telafisi uygulamadan sensör eksenleri etrafındaki dönüş hızını bildirir. Tüm değerler radyan/saniye cinsindendir ve sensors_event_t.uncalibrated_gyro
alanlarında raporlanır:
-
x_uncalib
: X ekseni etrafındaki açısal hız (sapma telafisi olmadan) -
y_uncalib
: Y ekseni etrafındaki açısal hız (sapma telafisi olmadan) -
z_uncalib
: Z ekseni etrafındaki açısal hız (sapma telafisi olmadan) -
x_bias
: X ekseni etrafında tahmini sapma -
y_bias
: Y ekseni etrafında tahmini sapma -
z_bias
: Z ekseni etrafında tahmini sapma
Kavramsal olarak, kalibre edilmemiş ölçüm, kalibre edilmiş ölçümün ve sapma tahmininin toplamıdır: _uncalibrated = _calibrated + _bias
.
x_bias
, y_bias
ve z_bias
değerlerinin sapma tahmini değişir değişmez atlaması beklenir ve geri kalan süre boyunca sabit kalmaları gerekir.
Kullanılan koordinat sistemiyle ilgili ayrıntılar için jiroskop sensörünün tanımına bakın.
Ölçümlere fabrika kalibrasyonu ve sıcaklık telafisi uygulanmalıdır. Ayrıca jiroskop kayma tahmininin x_bias
, y_bias
ve z_bias
cinsinden makul tahminlerin raporlanabilmesi için uygulanması gerekir. Uygulama sapmayı tahmin edemiyorsa bu sensör uygulanmamalıdır.
Bu sensör mevcutsa ilgili Jiroskop sensörünün de mevcut olması ve her iki sensörün de aynı sensor_t.name
ve sensor_t.vendor
değerlerini paylaşması gerekir.
Manyetik alan kalibre edilmemiş
Temel fiziksel sensör: Manyetometre
Raporlama modu: Sürekli
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED)
uyanmayan bir sensör döndürür
Kalibre edilmemiş bir manyetik alan sensörü, ortamın manyetik alanını sert demir kalibrasyon tahminiyle birlikte bildirir. Tüm değerler mikro-Tesla (uT) cinsindendir ve sensors_event_t.uncalibrated_magnetic
alanlarında raporlanır:
-
x_uncalib
: X ekseni boyunca manyetik alan (sert demir telafisi olmadan) -
y_uncalib
: Y ekseni boyunca manyetik alan (sert demir telafisi olmadan) -
z_uncalib
: Z ekseni boyunca manyetik alan (sert demir telafisi olmadan) -
x_bias
: X ekseni boyunca tahmini sert demir eğilimi -
y_bias
: Y ekseni boyunca tahmini sert demir sapması -
z_bias
: Z ekseni boyunca tahmini sert demir eğilimi
Kavramsal olarak, kalibre edilmemiş ölçüm, kalibre edilmiş ölçümün ve sapma tahmininin toplamıdır: _uncalibrated = _calibrated + _bias
.
Kalibre edilmemiş manyetometre, daha yüksek seviyeli algoritmaların kötü sert demir tahminini ele almasına olanak tanır. x_bias
, y_bias
ve z_bias
değerlerinin, sert demir tahmini değişir değişmez atlaması bekleniyor ve geri kalan zamanda sabit kalmaları bekleniyor.
Ölçümlere yumuşak demir kalibrasyonu ve sıcaklık telafisi uygulanmalıdır. Ayrıca, makul tahminlerin x_bias
, y_bias
ve z_bias
raporlanabilmesi için kesin tahminin uygulanması gerekir. Uygulama önyargıyı tahmin edemiyorsa bu sensörün uygulanmaması gerekir.
Bu sensör mevcutsa ilgili manyetik alan sensörünün mevcut olması ve her iki sensörün de aynı sensor_t.name
ve sensor_t.vendor
değerlerini paylaşması gerekir.
Menteşe açısı
Raporlama modu: Değişiklik halinde
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
bir uyandırma sensörü döndürür
Menteşe açısı sensörü, cihazın iki ayrılmaz parçası arasındaki açıyı derece cinsinden ölçer. Bu sensör türüyle ölçülen bir menteşenin hareketinin, örneğin bir ekranı açarak veya ortaya çıkararak kullanıcının cihazla etkileşimde bulunabileceği yolları değiştirmesi beklenir.
Etkileşimli kompozit sensörler
Bazı sensörler çoğunlukla kullanıcıyla olan etkileşimleri tespit etmek için kullanılır. Bu sensörlerin nasıl uygulanması gerektiğini tanımlamıyoruz ancak düşük güçte olmaları gerekiyor ve kullanıcı deneyimi açısından kalitelerini doğrulamak cihaz üreticisinin sorumluluğundadır.
Uyandırma hareketi
Temel fiziksel sensörler: Tanımlanmamış (düşük güçteki herhangi bir şey)
Raporlama modu: Tek seferlik
Düşük güç
Bu sensörün yalnızca uyandırma sürümünü uygulayın.
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
bir uyandırma sensörü döndürür
Uyandırma hareketi sensörü, cihazın belirli bir harekete göre uyandırılmasını sağlar. Bu sensör tetiklendiğinde cihaz, güç düğmesine basılmış gibi davranarak ekranı açar. Bu davranış (sensör tetiklendiğinde ekranın açılması) kullanıcı tarafından cihaz ayarlarından devre dışı bırakılabilir. Ayarlardaki değişiklikler sensörün davranışını etkilemez: yalnızca çerçevenin tetiklendiğinde ekranı açıp açmadığı. Algılanacak gerçek hareket belirtilmemiştir ve cihazın üreticisi tarafından seçilebilir.
7/24 etkinleştirilmesi muhtemel olduğu için bu sensör düşük güç olmalıdır.
Her sensör olayı sensors_event_t.data[0]
da 1
rapor eder.
Jest al
Altta yatan fiziksel sensörler: tanımsız (düşük güç herhangi bir şey)
Raporlama modu: tek atış
Düşük güç
Bu sensörün sadece uyandırma sürümünü uygulayın.
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
bir uyandırma sensörü döndürür
Bir pick-up jest sensörü, daha önce olduğu yere bakılmaksızın cihaz alındığında (masa, cep, çanta) tetiklenir.
Her sensör olayı sensors_event_t.data[0]
da 1
rapor eder.
Bakış
Altta yatan fiziksel sensörler: tanımsız (düşük güç herhangi bir şey)
Raporlama modu: tek atış
Düşük güç
Bu sensörün sadece uyandırma sürümünü uygulayın.
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
bir uyandırma sensörü döndürür
Bir bakış hareketi sensörü, kullanıcının belirli bir harekete göre ekranda içeriğe bakmasını sağlamak için ekranı kısaca açmayı sağlar. Bu sensör tetiklediğinde, cihaz kullanıcının etkileşimli olmayan bir durumda (Dozing) kilitli kalırken, kullanıcının bildirimlere veya başka içeriğe bakmasına izin vermek için ekranı geçici olarak açacaktır. Bu davranış (bu sensör tetiklediğinde ekranı kısaca açma) cihaz ayarlarında kullanıcı tarafından devre dışı bırakılabilir. Ayarlardaki değişiklikler sensörün davranışını etkilemez: yalnızca çerçevenin tetiklendiğinde ekranı kısaca açıp açmadığı. Tespit edilecek gerçek jest belirtilmez ve cihaz üreticisi tarafından seçilebilir.
7/24 etkinleştirilmesi muhtemel olduğu için bu sensör düşük güç olmalıdır. Her sensör olayı sensors_event_t.data[0]
da 1
rapor eder.
Sınırlı Eksenler IMU Sensörleri
Android 13'ten temin edilebilen sınırlı eksen IMU sensörleri, üç eksenin (x, y, z) bulunmadığı kullanım durumlarını destekleyen sensörlerdir. Android'deki standart IMU türleri ( SENSOR_TYPE_ACCELEROMETER
ve SENSOR_TYPE_GYROSCOPE
gibi) üç eksenin de desteklendiğini varsayar. Bununla birlikte, tüm form faktörleri ve cihazlar 3 eksenli ivmeölçerleri ve 3 eksenli jiroskopları desteklemez.
İvmeölçer sınırlı eksenler
Temel fiziksel sensörler: ivmeölçer
Raporlama modu: sürekli
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
Uyanık olmayan bir sensör döndürür
Bir ivmeölçer sınırlı eksen sensörü, TYPE_ACCELEROMETER
eşdeğerdir, ancak bir veya iki eksenin desteklenmediği durumları destekler.
Sensör tarafından bildirilen son üç sensör olay değeri, x, y ve z eksenleri için ivme değerinin desteklenip desteklenmediğini gösterir. 1.0
değeri eksenin desteklendiğini ve 0
değerinin desteklenmediğini gösterir. Cihaz üreticileri, desteklenen eksenleri oluşturma zamanında tanımlar ve çalışma zamanında değerler değişmez.
Cihaz üreticileri, tanımlanmamış değerlere sahip olmak yerine kullanılmayan eksenler için ivme değerlerini 0
olarak ayarlamalıdır.
Jiroskop Sınırlı Eksenler
Altta yatan fiziksel sensörler: jiroskop
Raporlama modu: sürekli
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
Uyanık olmayan bir sensör döndürür
Bir Gyroscope Limited eksen sensörü, TYPE_GYROSCOPE
eşdeğerdir, ancak bir veya iki eksenin desteklenmediği durumları destekler.
Sensör tarafından bildirilen son üç sensör olay değeri, x, y ve z eksenleri için açısal hız değerinin desteklenip desteklenmediğini gösterir. 1.0
değeri eksenin desteklendiğini ve 0
değerinin desteklenmediğini gösterir. Cihaz üreticileri, desteklenen eksenleri oluşturma zamanında tanımlar ve çalışma zamanında değerler değişmez.
Cihaz üreticileri kullanılmayan eksenler için açısal hız değerlerini 0
olarak ayarlamalıdır.
İvmeölçer sınırlı eksenler kalibre edilmemiş
Temel fiziksel sensörler: ivmeölçer
Raporlama modu: sürekli
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
Uyanık olmayan bir sensör döndürür
Bir ivmeölçer sınırlı eksenler kalibre edilmemiş sensör, TYPE_ACCELEROMETER_UNCALIBRATED
eşdeğerdir, ancak bir veya iki eksenin desteklenmediği durumları destekler.
Sensör tarafından bildirilen son üç sensör olay değeri, X, Y ve Z eksenleri için hızlanma ve önyargı değerlerinin desteklenip desteklenmediğini gösterir. 1.0
değeri eksenin desteklendiğini ve 0
değerinin desteklenmediğini gösterir. Cihaz üreticileri, desteklenen eksenleri oluşturma zamanında tanımlar ve çalışma zamanında değerler değişmez.
Cihaz üreticileri kullanılmayan eksenler için hızlanma ve önyargı değerlerini 0
olarak ayarlamalıdır.
Jiroskop Sınırlı Eksenler Kalibre edilmemiş
Altta yatan fiziksel sensörler: jiroskop
Raporlama modu: sürekli
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
Uyanık olmayan bir sensör döndürür
Bir jiroskop sınırlı eksenleri kalibre edilmemiş sensör, TYPE_GYROSCOPE_UNCALIBRATED
eşdeğerdir, ancak bir veya iki eksenin desteklenmediği durumları destekler.
Sensör tarafından bildirilen son üç sensör olay değeri, X, Y ve Z eksenleri için açısal hız ve sürüklenme değerlerinin desteklenip desteklenmediğini gösterir. 1.0
değeri eksenin desteklendiğini ve 0
değerinin desteklenmediğini gösterir. Cihaz üreticileri, desteklenen eksenleri oluşturma zamanında tanımlar ve çalışma zamanında değerler değişmez.
Cihaz üreticileri kullanılmayan eksenler için açısal hız ve sürüklenme değerlerini 0
olarak ayarlamalıdır.
Kompozit sınırlı eksenler imu
Altta yatan fiziksel sensörler: 3 eksenli ivmeölçer, 3 eksenli jiroskop, 3 eksenli ivmeölçer ve 3 eksenli jiroskopun herhangi bir kombinasyonu.
Raporlama modu: sürekli
Kompozit sınırlı eksen IMU sensörü, sınırlı bir eksen IMU sensörüne eşdeğerdir, ancak HAL'da desteklenmek yerine, 3 eksenli sensör verilerini eşdeğer sınırlı eksen varyantlarına dönüştürür. Bu kompozit sensörler yalnızca otomotiv cihazları için etkindir.
Aşağıdaki tabloda, standart 3 eksenli ivmeölçerden kompozit sınırlı eksen ivmeölçerine örnek bir dönüşüm göstermektedir.
Sensor_type_accelerometre için sensorevent değerleri | Örnek Sensor_type_accelerometre Sensorevent | Kompozit sensor_type_accelerometre_limited_axes sensorevent |
---|---|---|
Değerler [0] | -0,065 | -0,065 |
Değerler [1] | 0,078 | 0,078 |
Değerler [2] | 9.808 | 9.808 |
Değerler [3] | Yok | 1.0 |
Değerler [4] | Yok | 1.0 |
Değerler [5] | Yok | 1.0 |
Otomotiv sensörleri
Otomotiv kullanım durumlarını destekleyecek sensörler.
Başlık
Altta yatan fiziksel sensörler: GPS, manyetometre, ivmeölçer ve jiroskopun herhangi bir kombinasyonu.
Raporlama modu: sürekli
getDefaultSensor(SENSOR_TYPE_HEADING)
uyanık olmayan bir sensör döndürür
Android 13'ten temin edilebilen bir başlık sensörü, cihazın derecelerde gerçek kuzeye göre işaret ettiği yönü ölçer. Başlık sensörü iki SensorEvent
değeri içerir. Biri ölçülen cihaz başlığı ve diğeri sağlanan başlık değerinin doğruluğu için.
Bu sensör tarafından bildirilen başlık değerleri 0.0
(dahil) ve 360.0
(özel) arasında olmalıdır, 0
kuzey, 90
doğu, 180
Güney ve 270
Batı'yı göstermelidir.
Bu sensör için doğruluk yüzde 68 güvenle tanımlanır. Altta yatan dağılımın Gauss normal olması durumunda, doğruluk standart bir sapmadır. Örneğin, başlık sensörü 60 derecelik bir başlık değeri ve 10 derecelik bir doğruluk değeri döndürürse, gerçek başlığın 50 derece ve 70 derece arasında yüzde 68 olasılığı vardır.