Sensör türleri

Bu bölümde sensör eksenleri, taban sensörleri ve kompozit sensörler (etkinlik, davranış, kalibre edilmemiş ve etkileşim) açıklanmaktadır.

Sensör eksenleri

Birçok sensörden gelen sensör etkinliği değerleri, cihaza göre statik olan belirli bir karede ifade edilir.

Mobil cihaz eksenleri

Sensor API yalnızca ekranın doğal yönüne göredir (cihazın ekran yönü değiştiğinde eksenler değiştirilmez).

Mobil cihazlar için sensör API'sinin koordinasyon sistemi

Şekil 1. Sensor API tarafından kullanılan koordinat sistemi (mobil cihaza göre)

Otomotiv eksenleri

Android Automotive uygulamalarında eksenler, araç gövde çerçevesine göre tanımlanır. Araç referans çerçevesinin orijini, arka aksın merkezidir. Araç referans çerçevesi şu şekilde yönlendirilir:

  • X ekseni sağa doğru işaret eder ve araç simetri düzlemine dik bir yatay düzlemdedir.
  • Y ekseni ileriyi gösterir ve yatay bir düzlemdedir.
Otomotiv cihazlar için sensör API'sinin koordinat sistemi

Şekil 2. Sensor API tarafından kullanılan koordinat sistemi (otomotiv cihaza göre)

Araç referans çerçevesi sağ koordinat sistemidir. Bu nedenle, Z ekseni yukarı doğru

Referans çerçevesinin Z ekseni yer çekimine göre hizalanır. Bu, X ekseninin ve Y ekseninin de yatay olduğu anlamına gelir. Bu nedenle, Y ekseni her zaman ön akstan geçmeyebilir.

Baz sensörleri

Temel sensör türleri, temsil ettikleri fiziksel sensörlerin adından türetilir. Bu sensörler, tek bir fiziksel sensörden veri aktarır (diğer sensörlerden veri üreten kompozit sensörlerin aksine). Temel sensör türlerine örnek olarak şunlar verilebilir:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

Ancak taban sensörleri, temel fiziksel sensörleriyle aynı değildir ve karıştırılmamalıdır. Düzeltmeler (ör. önyargı telafisi ve sıcaklık telafisi) uygulandığı için taban sensöründen gelen veriler fiziksel sensörün ham çıkışı değildir.

Örneğin, bir temel sensörün özellikleri aşağıdaki kullanım durumlarında temel fiziksel sensörünün özelliklerinden farklı olabilir:

  • 1 deg/sn. önyargı aralığına sahip olduğu derecelendirilmiş bir jiroskop çipi.
    • Fabrika kalibrasyonu, sıcaklık telafisi ve önyargı telafisi uygulandıktan sonra Android sensörünün gerçek önyargısı azaltılır.Bu, önyargının 0, 01 deg/sn'nin altında olacağı bir noktaya kadar olabilir.
    • Bu durumda, alttaki sensörün veri sayfasında 1 derece/sn demesine rağmen Android sensörünün 0, 01 derece/sn'nin altında bir sapmaya sahip olduğunu söyleriz.
  • 100 uW güç tüketimine sahip bir barometre.
    • Oluşturulan verilerin çipten SoC'ye taşınması gerektiğinden, barometrenin Android sensöründen veri toplamanın gerçek güç maliyeti çok daha yüksek olabilir (ör. 1000 uW).
    • Bu durumda, barometrenin çip uçlarında ölçülen güç tüketimi 100 uW olsa bile Android sensörünün 1000 uW güç tüketimine sahip olduğunu söyleriz.
  • Kalibrasyon sırasında 100 uW, kalibrasyon yaparken daha fazla güç tüketen bir manyetometre.
    • Kalibrasyon rutini, jiroskopun etkinleştirilmesini (5.000 uW) ve bazı algoritmaların çalıştırılmasını (900 uW) gerektirebilir.
    • Bu durumda, (manyetometre) Android sensörünün maksimum güç tüketiminin 6.000 uW olduğunu söyleyebiliriz.
    • Bu durumda, ortalama güç tüketimi daha kullanışlı bir ölçümdür ve HAL aracılığıyla sensör statik özelliklerinde raporlanır.

İvme ölçer

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) uyandırma olmayan bir sensör döndürür

İvme ölçer sensörü, cihazın üç sensör ekseni boyunca ivmesini bildirir. Ölçülen ivme hem fiziksel ivmeyi (hız değişimi) hem de yer çekimini içerir. Ölçüm, sensörler_etkinlik_t.Acceleration'ın x, y ve z alanlarında raporlanır.

Tüm değerler SI birimlerindedir (m/s^2) ve cihazın üç sensör ekseni boyunca yerçekimi kuvveti çıkarılarak ivmesi ölçülür.

Aşağıda örnekleri bulabilirsiniz:

  • Serbest düşüşteyken (x, y, z) normu 0'a yakın olmalıdır.
  • Cihaz bir masanın üzerine düz bir şekilde yerleştirildiğinde ve sol tarafından sağa doğru itildiğinde x ivme değeri pozitif olur.
  • Cihaz bir masanın üzerinde düz durduğunda z boyunca gelen ivme değeri +9,81 alo'dur. Bu değer, cihazın (0 m/s^2) eksi yer çekimi kuvveti (-9,81 m/s^2) anlamına gelir.
  • Cihaz bir masanın üzerine düz bir şekilde yerleştirilip gökyüzüne doğru itildiğinde, ivme değeri +9,81'den büyük olur. Bu değer, cihazın ivmesi (+A m/s^2) eksi yerçekimi kuvveti (-9,81 m/s^2) değerine karşılık gelir.

Ölçümler aşağıdakiler kullanılarak kalibre edilir:

  • Sıcaklık dengeleme
  • Online önyargı kalibrasyonu
  • Online ölçek kalibrasyonu

Akış sırasında değerlerde sıçramalar olmaması için önyargı ve ölçek kalibrasyonunun yalnızca sensör devre dışıyken güncellenmesi gerekir.

İvmeölçer, sensors_event_t.acceleration.status aracılığıyla ölçümlerinin ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager'nin SENSOR_STATUS_* sabitlerine bakın.

Ortam sıcaklığı

Raporlama modu: Değişimde

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

Manyetik alan sensörü (mıknatısölçer olarak da bilinir), üç sensör ekseni boyunca ölçülen ortam manyetik alanını bildirir.

Ölçüm, sensors_event_t.magnetic öğesinin x, y ve z alanlarında raporlanır ve tüm değerler mikro Tesla (uT) cinsindendir.

Manyetometre, sensors_event_t.magnetic.status aracılığıyla ölçümlerinin ne kadar doğru olmasını beklediğini de bildirir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager'ın SENSOR_STATUS_* sabitlerine bakın.

Ölçümler aşağıdakiler kullanılarak kalibre edilir:

  • Sıcaklık dengeleme
  • Fabrika (veya online) yumuşak demir kalibrasyonu
  • Online sert demir kalibrasyonu

Jiroskop

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) uyanmayan bir sensör döndürür

Jiroskop sensörü, cihazın üç sensör ekseni etrafındaki dönme hızını bildirir.

Döndürme, saat yönünün tersine pozitiftir (sağ kuralı). Yani, x, y veya z eksenindeki pozitif bir konumdan bakarak orijinde konumlandırılmış bir cihazı gözlemleyen bir kullanıcı, cihaz saat yönünün tersine dönüyorsa pozitif dönme bildirir. Bunun pozitif rotasyonun standart matematiksel tanımı olduğunu ve yuvarlanmanın havacılık tanımına uygun olmadığını unutmayın.

Ölçüm, sensors_event_t.gyro alanının x, y ve z alanlarında raporlanır ve tüm değerler saniye başına radyan (rad/s) cinsindendir.

Ölçümler aşağıdakiler kullanılarak kalibre edilir:

  • Sıcaklık dengeleme
  • Fabrika (veya online) ölçekli tazminat
  • Online önyargı kalibrasyonu (kaymayı kaldırmak için)

Jiroskop, sensors_event_t.gyro.status aracılığıyla ölçümlerinin ne kadar doğru olmasını beklediğini de bildirir. Bu alandaki olası değerler hakkında daha fazla bilgi için SensorManager SENSOR_STATUS_* sabitlerine bakın.

Jiroskop, manyetometreler ve ivmeölçerler temel alınarak taklit edilemez. Aksi takdirde yerel tutarlılık ve yanıt verebilirlik azalır. Normal bir jiroskop çipine dayalı olmalıdır.

Nabız

Raporlama modu: Değişiklik olduğunda

getDefaultSensor(SENSOR_TYPE_HEART_RATE) uyandırma olmayan bir sensör döndürür

Nabız sensörü, cihaza dokunan kişinin o anki nabzını bildirir.

Mevcut nabız (nabız/dakika) (BPM) cinsinden sensors_event_t.heart_rate.bpm, sensörün durumu ise sensors_event_t.heart_rate.status cinsinden bildirilir. Bu alanın olası değerleri hakkında daha fazla bilgi için SensorManager'nin SENSOR_STATUS_* sabitlerine bakın. Özellikle, ilk etkinleştirmeden sonra, cihazın vücutta olmadığı bilinmediği sürece ilk etkinliğin durum alanı SENSOR_STATUS_UNRELIABLE olarak ayarlanmalıdır. Bu sensör değişiklikte olduğu için etkinlikler, yalnızca son etkinlikten bu yana heart_rate.bpm veya heart_rate.status değiştiğinde oluşturulur. Etkinlikler en fazla sampling_period saniyede bir oluşturulur.

sensor_t.requiredPermission her zaman SENSOR_PERMISSION_BODY_SENSORS.

Hafif

Raporlama modu: Değişim olduğunda

getDefaultSensor(SENSOR_TYPE_LIGHT) uyandırma olmayan bir sensör döndürür

Işık sensörü, mevcut aydınlatmayı SI lüks birimlerinde bildirir.

Ölçüm sensors_event_t.light içinde raporlanır.

Yakınlık

Raporlama modu: Değişiklik olduğunda

Genellikle uyandırma sensörü olarak tanımlanır

getDefaultSensor(SENSOR_TYPE_PROXIMITY) uyanma 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ırıcı sensörlerdi ve yakınlıkta bir değişiklik algıladığında SoC'yi uyandırıyordu. Android 4.4'ten sonra, telefon araması yaparken ekranı açıp kapatmak için kullanılan bu sensörün uyandırma sürümünü ilk olarak uygulamanızı öneririz.

Ölçüm, sensors_event_t.distance içinde santimetre cinsinden raporlanır. Bazı yakınlık sensörlerinin yalnızca ikili "yakın" veya "uzak" ölçümünü desteklediğini unutmayın. Bu durumda sensör, "uzak" durumunda sensor_t.maxRange değerini ve "yakın" durumunda sensor_t.maxRange'ten düşük bir değer bildirir.

Basınç

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_PRESSURE) uyandırma olmayan bir sensör döndürür

Basınç sensörü (barometre olarak da bilinir), atmosfer basıncını hektopaskal (hPa) cinsinden bildirir.

Okumalar

  • Sıcaklık dengeleme
  • Fabrika önyargısı kalibrasyonu
  • Fabrika ölçeği kalibrasyonu

Barometre genellikle yükseklik değişikliklerini tahmin etmek için kullanılır. Mutlak yüksekliği tahmin etmek için referans olarak deniz seviyesi basıncı (hava durumuna göre değişir) kullanılmalıdır.

Bağıl nem

Raporlama modu: Değişiklik olduğunda

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) uyandırma olmayan bir sensör döndürür

Bağıl nem sensörü, ortamdaki bağıl nemi ölçer ve yüzde cinsinden bir değer döndürür.

Birleşik sensör türleri

Kompozit sensör, bir veya daha fazla fiziksel sensörden gelen verileri işleyerek ve/veya birleştirerek veri üretir. (Temel sensör olmayan tüm sensörlere karma sensör denir.) Kompozit sensörlere örnek olarak aşağıdakiler verilebilir:

Temel sensörlerde olduğu gibi, birleşik sensörlerin özellikleri de nihai verilerinin özelliklerinden gelir. Örneğin, bir oyun dönüş vektörünün güç tüketimi muhtemelen ivme ölçer çipinin, jiroskop çipinin, verileri işleyen çipin ve verileri taşıyan otobüslerin güç tüketimlerinin toplamına eşittir. Başka bir örnek olarak, bir oyun dönüş vektörünün kayması hem fiziksel sensör özelliklerine hem de kalibrasyon algoritmasının kalitesine bağlıdır.

Aşağıdaki tabloda kullanılabilir kompozit sensör türleri listelenmiştir. Her kompozit sensör, bir veya daha fazla fiziksel sensörden gelen verileri kullanır. Yaklaşık sonuçlar elde etmek için diğer temel fiziksel sensörleri seçmekten kaçının. Bu sensörler kötü bir kullanıcı deneyimi sunar.

Sensör türü Kategori Temel fiziksel sensörler Raporlama modu

Oyun döndürme vektörü

Tutum

İvme ölçer, jiroskop, manyetometre KULLANMAMALIDIR

Sürekli

Coğrafi manyetik dönme vektörü Düşük güç sensörü

Tutum

İvme ölçer, manyetometre, jiroskop KULLANILMAMALIDIR

Sürekli

Bakış hareketi Düşük güç sensörü

Etkileşim

Tanımsız

Tek seferlik

Gravity

Tutum

İvme ölçer, jiroskop

Sürekli

Jiroskop kalibre edilmemiş

Kalibre edilmemiş

Jiroskop

Sürekli

Doğrusal hızlanma

Etkinlik

İvme ölçer, jiroskop (varsa) veya manyetometre (jiroskop yoksa)

Sürekli

Manyetik alan kalibre edilmemiş

Kalibre edilmemiş

Manyetometre

Sürekli

Yön (desteği sonlandırılmış)

Tutum

İvme ölçer, manyetometre, jiroskop (varsa)

Sürekli

Telefonu kaldırma hareketi Düşük güç sensörü

Etkileşim

Tanımsız

Tek seferlik

Rotasyon vektörü

Tutum

İvme ölçer, manyetometre, jiroskop

Sürekli

Önemli hareket Düşük güç sensörü

Etkinlik

İvme ölçer (veya çok düşük güç kullandığı sürece başka bir sensör)

Tek seferlik

Adım sayacı Düşük güç sensörü

Etkinlik

İvme ölçer

Değişiklik yapıldığında

Adım algılayıcı Düşük güç sensörü

Etkinlik

İvme ölçer

Özel

Yatırma algılayıcı Düşük güç sensörü

Etkinlik

İvme ölçer

Özel

Uyanma hareketi Düşük güç sensörü

Etkileşim

Tanımsız

Tek seferlik

Düşük güç sensörü = Düşük güç sensörü

Etkinlik karma sensörleri

Doğrusal hızlanma

Temel fiziksel sensörler: ivme ölçer ve (varsa) jiroskop (jiroskop yoksa manyetometre)

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) uyandırma olmayan bir sensör döndürür

Doğrusal hızlanma sensörü, yerçekimi hariç olmak üzere cihazın sensör çerçevesindeki doğrusal hızını raporlar.

Çıkış, kavramsal olarak ivme ölçerin çıkışından yerçekimi sensörünün çıkışının çıkarılmasıdır. sensors_event_t.acceleration öğesinin x, y ve z alanlarında m/s^2 cinsinden raporlanır.

Cihaz hareketsizken tüm eksenlerdeki ölçümler 0'a yakın olmalıdır.

Cihazda bir jiroskop varsa doğrusal hızlanma sensörü, jiroskop ve ivme ölçeri giriş olarak kullanmalıdır.

Cihazda jiroskop yoksa doğrusal hızlanma sensörü, giriş olarak ivme ölçeri ve manyetometreyi kullanmalıdır.

Önemli hareket

Temel fiziksel sensör: İvme ölçer (veya gücü düşük olduğu sürece başka bir sensör)

Raporlama modu: Tek çekim

Düşük güç

Bu sensörün yalnızca uyandırma sürümünü uygulayın.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) uyandırma sensörü döndürür

Önemli bir hareket dedektörü, önemli bir hareket (kullanıcının konumunda değişikliğe yol açabilecek bir hareket) algıladığında tetiklenir.

Bu tür önemli hareketlere örnek olarak şunlar verilebilir:

  • Yürüyüş veya bisiklet
  • Hareket eden bir araba, otobüs veya trende oturmak

Önemli hareketi tetiklemeyen durumlara örnekler:

  • Telefon cebinde ve kişi hareket etmiyor
  • Telefon masanın üzerindeyken yakındaki trafik veya çamaşır makinesi nedeniyle masa biraz titriyor

Ana hatlarıyla, önemli hareket dedektörü, konum belirlemenin güç tüketimini azaltmak için kullanılır. Yer belirleme algoritmaları, cihazın statik olduğunu tespit ettiğinde düşük güç moduna geçebilir. Bu modda, kullanıcı konum değiştirirken cihazı uyandırmak için önemli hareketlere ihtiyaç duyulur.

Bu sensörün gücü düşük olmalıdır. Bu yöntem, güç tüketimini dengeler ve az miktarda yanlış negatif sonuca neden olabilir. Bunun birkaç nedeni vardır:

  • Bu sensörün amacı güçten tasarruf etmektir.
  • Kullanıcı hareket etmediği halde bir etkinliğin tetiklenmesi (yanlış pozitif) güç açısından maliyetli olduğundan bu durumdan kaçınılmalıdır.
  • Kullanıcı taşınırken bir etkinliğin tetiklenmemesi (yanlış negatif), bu işlem tekrar tekrar yapılmadığı sürece kabul edilebilir. Kullanıcı 10 saniye yürüyorsa bu 10 saniye içinde bir etkinliğin tetiklenmemesi kabul edilir.

Her sensör etkinliği, sensors_event_t.data[0] içinde 1 değerini bildirir.

Adım detektörü

Temel fiziksel sensör: İvme ölçer (+ düşük güçte olduğu sürece muhtemelen diğerleri)

Raporlama modu: Özel (atılan her adım için bir etkinlik)

Düşük güç

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) uyandırma olmayan bir sensör döndürür

Adım algılayıcı, kullanıcı her adım attığında bir etkinlik oluşturur.

sensors_event_t.timestamp etkinliğinin zaman damgası, ayağın yere çarptığı zamana karşılık gelir ve ivmede yüksek bir varyasyon oluşturur.

Adım sayıcıya kıyasla adım algılayıcının gecikmesi daha düşük (iki saniyeden kısa) olmalıdır. Hem adım algılayıcı hem de adım sayıcı, kullanıcının yürüdüğünü, koştuğunu ve merdiven çıktığını algılar. Kullanıcı bisiklet sürerken, araba kullanırken veya başka bir araçtayken tetiklenmemelidir.

Bu sensör düşük güç tüketimine sahip olmalıdır. Yani adım algılama donanımda yapılamıyorsa bu sensör tanımlanmamalıdır. Özellikle adım algılayıcı etkinleştirildiğinde ve ivmeölçer etkinleştirilmediğinde yalnızca adımlar (her ivmeölçer okuması değil) kesintileri tetiklemelidir.

sampling_period_ns, adım sayaçları üzerinde herhangi bir etkisi yoktur.

Her sensör etkinliği, sensors_event_t.data[0] içinde 1 değerini bildirir.

Adım sayacı

Temel fiziksel sensör: İvme ölçer (+ düşük güçte olduğu sürece muhtemelen diğerleri)

Raporlama modu: Değişiklik olduğunda

Düşük güç

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) uyandırma olmayan bir sensör döndürür

Adım sayacı, etkinleştirildiğinde kullanıcının son yeniden başlatmadan bu yana attığı adım sayısını bildirir.

Ölçüm, sensors_event_t.step_counter içinde uint64_t olarak raporlanır ve yalnızca sistem yeniden başlatıldığında sıfıra sıfırlanır.

Etkinliğin zaman damgası, söz konusu etkinliğin son adımının gerçekleştirildiği zamana ayarlanır.

Bir adımın süresinin anlamını öğrenmek için Adım algılayıcı sensör türüne bakın.

Adım sayıcı, adım algılayıcıya kıyasla daha yüksek gecikmeye (10 saniyeye kadar) sahip olabilir. Bu gecikme sayesinde bu sensörün doğruluk oranı yüksektir. Tam bir gün ölçümden sonraki adım sayısı, gerçek adım sayısının% 10'u dahilinde olmalıdır. Hem adım algılayıcı hem de adım sayıcı, kullanıcının yürüdüğünü, koştuğunu ve merdiven çıktığını algılar. Kullanıcı bisiklet sürerken, araba kullanırken veya başka bir araçtayken tetiklenmemelidir.

Donanım, dahili adım sayısının hiçbir zaman taşmamasını sağlamalıdır. Donanımın dahili sayıcısının minimum boyutu 16 bit olmalıdır. Yakında taşma olması durumunda (en fazla her ~2^16 adımda bir), sürücünün sayaç bakımını yapabilmesi için SoC uyandırılabilir.

Etkileşim bölümünde belirtildiği gibi, bu sensör çalışırken diğer sensörleri, özellikle de kullanılıyor olabilecek ivme ölçeri kesintiye uğratmaz.

Belirli bir cihaz bu çalışma modlarını destekleyemiyorsa bu sensör türü HAL tarafından bildirilmemelidir. Yani bu sensörün HAL'de "taklit edilmesi" kabul edilmez.

Bu sensör düşük güç tüketimine sahip olmalıdır. Yani adım algılama donanımda yapılamıyorsa bu sensör tanımlanmamalıdır. Özellikle adım sayacı etkinleştirildiğinde ve ivme ölçer etkinleştirilmediğinde yalnızca adımlar (ivme ölçer verileri değil) kesintileri tetiklemelidir.

Eğim algılayıcı

Temel fiziksel sensör: İvme ölçer (+ güç seviyesi düşük olduğu sürece diğerleri)

Raporlama modu: Özel

Düşük güç

Bu sensörün yalnızca uyanma sürümünü uygulayın.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) uyanma sensörü döndürür

Eğilme algılayıcı, her eğilme etkinliği algılandığında bir etkinlik oluşturur.

Eğme etkinliğini, etkinleştirme veya sensör tarafından oluşturulan son olaydan bu yana 2 saniyelik pencere ortalama yer çekiminin en az 35 derece değişen yönüyle tanımlanır. Algoritma:

  • reference_estimated_gravity = etkinleştirmeden sonraki ilk saniyede ivme ölçer ölçümlerinin ortalaması veya son yatırma etkinliğinin oluşturulduğu tahmini yerçekimidir.
  • current_estimated_gravity = son 2 saniyedeki ivmeölçer ölçümlerinin ortalaması.
  • Şu durumda tetikle: angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

Telefon yöneliminde değişiklik olmadan büyük ivmeler, eğme etkinliği tetiklememelidir. Örneğin, ortalama ivmenin açısı 35 dereceden fazla değişebilse bile araba kullanırken keskin bir dönüş veya güçlü bir ivmelenme, eğim etkinliği tetiklememelidir. Bu sensör genellikle yalnızca bir ivmeölçerin yardımıyla uygulanır. Güç tüketimini önemli ölçüde artırmayan 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 etkinliği, sensors_event_t.data[0] içinde 1 bildirir.

Tutum karma 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) uyandırma olmayan bir sensör döndürür

Dönme vektörü sensörü, cihazın yönünü Doğu-Kuzey-Yukarı koordinat çerçevesine göre bildirir. Genellikle ivme ölçer, jiroskop ve manyetometre ölçümlerinin entegrasyonu ile elde edilir. Doğu-Kuzey-Yukarı koordinat sistemi, aşağıdaki durumlarda doğrudan ortonormal temel olarak tanımlanır:

  • X doğuya işaret eder ve yere teğet geçer.
  • Y kuzeyi gösterir ve yere teğet geçer.
  • Z, gökyüz yönündedir ve zemine diktir.

Telefonun yönü, Doğu-Kuzey-Yukarı koordinatlarını telefonun koordinatlarıyla hizalamak için gereken rotasyonla temsil edilir. Yani, döndürmeyi dünya çerçevesine (X, Y, Z) uygulamak, bunları telefon koordinatlarıyla (x, y, z) hizalar.

Döndürme, telefonu referans cihaz yönünden (Doğu-Kuzey-Yukarıya hizalı) geçerli cihaz yönüne gitmek için bir eksen rot_axis etrafında teta açısıyla döndürme şeklinde görülebilir. Dönme, birim dörtlü sayıların dört birimsiz 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 nesnesinin x, y ve z alanları, dönme eksenini temsil eden birim uzunluktaki bir vektörün Doğu-Kuzey-Yukarı koordinatlarıdır.
  • theta, dönme açısıdır

Dörtlü sayı, birim dörtlü sayı olmalıdır: 1 normuna sahip olmalıdır. Bu koşulun sağlanmaması, istemcinin kararsız davranmasına neden olur.

Ayrıca bu sensör, tahmini yön doğruluğunu bildirir:

sensors_event_t.data[4] = estimated_accuracy (radyan cinsinden)

Başlık hatası, %95'ten fazlası için estimated_accuracy olmalıdır. Bu sensör, ana yön değişikliği girişi olarak bir jiroskop kullanmalıdır.

Bu sensör, jiroskop kaymasını telafi etmek için ivme ölçer ve manyetometre girişini de kullanır ve yalnızca ivme ölçer ve manyetometre ile uygulanamaz.

Oyun dönüşümü vektörü

Temel fiziksel sensörler: İvme ölçer ve jiroskop (manyetometre yok)

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) uyandırma olmayan bir sensör döndürür

Oyun dönüş vektörü sensörü, döndürme vektör sensörüne benzer ancak jeomanyetik alanı kullanmaz. Dolayısıyla, Y ekseni kuzeyi değil, başka bir referansı işaret eder. Bu referansın, jiroskopun Z ekseni etrafında kaymayla aynı büyüklük sırasında kaymasına izin verilir.

sensors_event_t.data[0-3] değerinin nasıl ayarlanacağıyla ilgili ayrıntılar için Dönme vektörü sensörüne bakın. Bu sensör, tahmini yön doğruluğunu bildirmez: sensors_event_t.data[4] ayrılmıştır ve 0 olarak ayarlanmalıdır.

İdeal durumda, döndürülüp gerçek dünyadaki aynı yöne döndürülen bir telefon aynı oyun dönme vektörünü bildirmelidir.

Bu sensör bir jiroskop ve ivme ölçere dayalı olmalıdır. Manyetometreyi giriş olarak kullanmak dışında ya da jiroskop sapmasını tahmin etmek suretiyle dolaylı olarak da kullanamaz.

Yerçekimi

Temel fiziksel sensörler: İvme ölçer ve (varsa) jiroskop (jiroskop yoksa manyetometre)

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GRAVITY) uyandırma olmayan bir sensör döndürür

Yerçekimi sensörü, cihazın koordinatlarında yerçekiminin yönünü ve büyüklüğünü bildirir.

Yer çekimi vektör bileşenleri sensors_event_t.acceleration öğesinin x, y ve z alanlarında m/s^2 cinsinden raporlanır.

Cihaz hareketsizken yerçekimi sensörünün çıkışı, ivme ölçerin çıkışıyla aynı olmalıdır. Dünya'da bu büyüklük yaklaşık 9, 8 m/sn^2'dir.

Cihazda jiroskop varsa yerçekimi sensörü, giriş olarak jiroskopu ve ivme ölçeri kullanmalıdır.

Cihazda jiroskop yoksa yerçekimi sensörü, giriş olarak ivme ölçeri ve manyetometreyi kullanmalıdır.

Jeomanyetik dönüş 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) uyandırma olmayan bir sensör döndürür

Coğrafi manyetik dönme vektörü, dönme vektörü sensörüne benzer ancak jiroskop yerine manyetometre kullanır.

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] değerinin nasıl ayarlanacağıyla ilgili ayrıntılar için Dönme vektörü sensörüne bakın.

Tıpkı dönme vektör sensöründe olduğu gibi yön hatası, tahmini doğruluktan (sensors_event_t.data[4]) %95 daha az olmalıdır.

Bu sensör düşük güçte olmalıdır, bu nedenle donanıma uygulanmalıdır.

Yön (desteği sonlandı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 desteği sonlandırılan eski bir sensör türüdür. Daha net tanımlanmış dönme vektörü sensörüyle değiştirildi. Mümkün olduğunda yön sensörü yerine dönme vektörü sensörünü kullanın.

Yön sensörü, cihazın yönünü bildirir. Ölçümler, sensors_event_t.orientation öğesinin x, y ve z alanlarında derece cinsinden raporlanır:

  • sensors_event_t.orientation.x: azimut, Z ekseni etrafında manyetik kuzey yönü ile Y ekseni arası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önme (-180<=pitch<=180), Z ekseni Y eksenine doğru hareket ettiğinde pozitif değerler alır.
  • sensors_event_t.orientation.z: Y ekseni etrafında dönme (-90<=roll<=90), X ekseni Z eksenine doğru hareket ettiğinde pozitif değerlerle.

Geçmişteki nedenlerden dolayı yuvarlanma açısının saat yönünde pozitif olduğunu lütfen unutmayın. (Matematiksel olarak, saat yönünün tersine doğru pozitif olmalıdır):

Bir cihaza göre yönün gösterilmesi

Şekil 3. Cihaza göre yön

Bu tanım, X ekseninin uçağın uzun kenarına (kuyruktan buruna) paralel olduğu havacılıkta kullanılan yaw, pitch ve roll'den farklıdır.

Yön sensörü, sensors_event_t.orientation.status tarihine kadar 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'ın 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 kalibrasyon aracılığıyla uygulanan düzeltmelerin daha az "atlama" içerdiğini de gösterir. Bazı uygulamalar daha sorunsuz ve güvenilir olmaları için, kalibre edilmemiş bu sonuçları tercih edebilir. Örneğin, bir uygulama kendi sensör birleştirme işlemini gerçekleştirmeye çalışıyorsa kalibrasyonların eklenmesi sonuçları bozabilir.

İvme ölçer kalibre edilmemiş

Temel fiziksel sensör: İvme ölçer

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) uyandırma olmayan bir sensör döndürür

Kalibre edilmemiş bir ivme ölçer sensörü, cihazın üç sensör ekseni boyunca ivmesini herhangi bir sapma düzeltmesi olmadan (kalibre edilmemiş ölçümlere fabrika sapması ve sıcaklık telafisi uygulanır) ve sapma tahminiyle birlikte bildirir. Tüm değerler SI birimlerindedir (m/s^2) ve sensors_event_t.uncalibrated_accelerometer alanlarında bildirilir:

  • x_uncalib: X ekseni boyunca ivme (yanlış hizalama telafisi olmadan)
  • y_uncalib: Y ekseni boyunca ivme (yanlış hizalama telafisi olmadan)
  • z_uncalib: Z ekseni boyunca ivme (yanlış hizalama telafisi olmadan)
  • x_bias: X ekseni boyunca tahmini önyargı
  • y_bias: Y ekseni boyunca tahmini önyargı
  • z_bias: Z ekseninde tahmini sapma

Jiroskop kalibre edilmemiş

Temel fiziksel sensör: Jiroskop

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) uyandırma olmayan bir sensör döndürür

Kalibre edilmemiş bir jiroskop, yanlılık tahminiyle birlikte sensör eksenleri etrafındaki dönme hızını bunlara sapma dengelemesi uygulamadan 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 (sürüklenim telafisi olmadan)
  • z_uncalib: Z ekseni etrafında açısal hız (kayma dengelemesi olmadan)
  • x_bias: X ekseni etrafında tahmini kayma
  • y_bias: Y ekseni etrafında tahmini kayma
  • z_bias: Z ekseni etrafında tahmini kayma

Kavramsal olarak, kalibre edilmemiş ölçüm, kalibre edilmiş ölçüm ile yanlılık tahmininin toplamıdır: _uncalibrated = _calibrated + _bias.

Yanlılık tahmini değişir değişmez x_bias, y_bias ve z_bias değerlerinin sıçrama yapması beklenir ve bu değerler, zamanın geri kalanında sabit kalır.

Kullanılan koordinat sistemiyle ilgili ayrıntılar için jiroskop sensörünün tanımına bakın.

Ölçümlere fabrika kalibresyonu ve sıcaklık telafisi uygulanmalıdır. Ayrıca, x_bias, y_bias ve z_bias'de makul tahminler raporlanabilmesi için jiroskop kayma tahmini de uygulanmalıdır. Uygulama, kaymayı tahmin edemiyorsa bu sensör uygulanmamalıdır.

Bu sensör mevcutsa karşılık gelen jiroskop sensörü de bulunmalıdır. Her iki sensör de aynı sensor_t.name ve sensor_t.vendor değerlerini paylaşmalıdır.

Manyetik alan kalibre edilmemiş

Temel fiziksel sensör: Manyetometre

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) uyandırma olmayan bir sensör döndürür

Kalibrasyon yapılmamış manyetik alan sensörü, ortam manyetik alanını sert demir kalibrasyon tahminiyle birlikte raporlar. 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 katkısı olmadan)
  • y_uncalib: Y ekseni boyunca manyetik alan (sabit demir telafisi olmadan)
  • z_uncalib: Z ekseni boyunca manyetik alan (sert demir katkısı olmadan)
  • x_bias: X ekseni boyunca tahmini donanım yönü sapması
  • y_bias: Y ekseni boyunca tahmini donanım önyargısı
  • z_bias: Z ekseninde tahmini sert demir sapması

Kavramsal olarak, kalibre edilmemiş ölçüm, kalibre edilmiş ölçümün ve önyargı 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, donanım tahmini değişir değişmez sıçraması beklenir ve geri kalan süre boyunca sabit kalmalıdır.

Ölçümlere yumuşak demir kalibre ve sıcaklık dengelemesi uygulanmalıdır. Ayrıca, x_bias, y_bias ve z_bias dillerinde makul tahminlerin raporlanabilmesi için sert demir tahmininin uygulanması gerekir. Uygulama, sapmayı tahmin edemiyorsa bu sensörü uygulanmamalıdır.

Bu sensör varsa ilgili manyetik alan sensörü de bulunmalıdır ve her iki sensör de aynı sensor_t.name ve sensor_t.vendor değerlerini paylaşmalıdır.

Menteşe açısı

Raporlama modu: Değişiklik olduğunda

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) uyandırma sensörünü 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ü tarafından ölçülen bir menteşenin hareketinin, kullanıcının cihazla etkileşim kurma şeklini değiştirmesi beklenir (örneğin, ekranı açmak veya görüntülemek).

Etkileşim karma sensörleri

Bazı sensörler çoğunlukla kullanıcıyla etkileşimleri algılamak için kullanılır. Bu sensörlerin nasıl uygulanacağını tanımlamayız ancak düşük güçte olmaları gerekir 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üç kullanan her şey)

Raporlama modu: Tek çekim

Düşük Güç

Bu sensörün yalnızca uyanma sürümünü uygulayın.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) uyandırma sensörü döndürür

Uyandırma hareketi sensörü, cihaza özgü bir harekete göre cihazın uyandırılmasını sağlar. Bu sensör tetiklendiğinde cihaz, güç düğmesine basılmış gibi davranarak ekranı açar. Bu davranış (bu 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çmayacağını etkiler. Algılanacak gerçek hareket belirtilmez ve cihazın üreticisi tarafından seçilebilir.

Bu sensör, 7/24 etkin olacağından düşük güç tüketimine sahip olmalıdır.

Her sensör etkinliği, sensors_event_t.data[0] içinde 1 değerini bildirir.

Alış hareketi

Temel fiziksel sensörler: Tanımlanmamış (düşük güç içeren her ş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_PICK_UP_GESTURE) uyandırma sensörü döndürür

Kaldırma hareketi sensörü, cihaz daha önce nerede olursa olsun (masa, cep, çanta) kaldırıldığında tetiklenir.

Her sensör etkinliği, sensors_event_t.data[0] içinde 1 değerini bildirir.

Bakış hareketi

Temel fiziksel sensörler: Tanımlanmamış (düşük güç kullanan her şey)

Raporlama modu: Tek seferlik

Düşük güç

Bu sensörün yalnızca uyanma sürümünü uygulayın.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) uyanma sensörü döndürür

Bir bakış hareketi sensörü, ekranın kısa süreliğine açılmasını sağlayarak kullanıcının belirli bir harekete göre ekrandaki içeriğe göz atmasına olanak tanır. Bu sensör tetiklendiğinde cihaz, kullanıcının bildirimleri veya diğer içerikleri gözden geçirmesine olanak tanımak için ekranı kısa süreliğine açar. Bu sırada cihaz etkileşime açık olmayan bir durumda (uyku modu) kilitli kalır. Ardından ekran tekrar kapanır. Bu davranış (bu sensör tetiklendiğinde ekranın kısa süreliğine 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çeve tetiklendiğinde ekranı kısa süreliğine açar. Algılanacak gerçek hareket belirtilmez ve cihazın üreticisi tarafından seçilebilir.

Bu sensör, 7/24 etkin olacağından düşük güç tüketimine sahip olmalıdır. Her sensör etkinliği, sensors_event_t.data[0] içinde 1 değerini bildirir.

Sınırlı eksenli IMU sensörleri

Android 13'te bulunan sınırlı eksenli IMU sensörleri, üç eksenin de (x, y, z) kullanılamadığı kullanım alanlarını destekleyen sensörlerdir. Android'deki standart IMU türleri (ör. SENSOR_TYPE_ACCELEROMETER ve SENSOR_TYPE_GYROSCOPE), üç eksenin de desteklendiğini varsayar. Ancak tüm form faktörleri ve cihazlar 3 eksenli ivmeölçerleri ve 3 eksenli jiroskopları desteklemez.

İvme ölçerin sınırlı eksenleri

Temel fiziksel sensörler: İvme ölçer

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) uyandırma olmayan bir sensör döndürür

Sınırlı eksenli ivme ölçer sensörü, TYPE_ACCELEROMETER ile eşdeğerdir ancak bir veya iki eksenin desteklenmediği durumları destekler.

Sensör tarafından bildirilen son üç sensör etkinliği değeri x, y ve z eksenleri için ivme değerinin desteklenip desteklenmediğini temsil eder. 1.0 değeri eksenin desteklendiğini, 0 değeri ise desteklenmediğini belirtir. Cihaz üreticileri, desteklenen eksenleri derleme

Cihaz üreticileri, kullanılmayan eksenlerin ivme değerlerini tanımlanmamış değerler yerine 0 olarak ayarlamalıdır.

Jiroskop sınırlı eksenleri

Alttaki fiziksel sensörler: Jiroskop

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) uyandırma olmayan bir sensör döndürür

Jiroskopun sınırlı eksen sensörü, TYPE_GYROSCOPE ile eşdeğerdir ancak bir veya iki eksenin desteklenmediği durumları destekler.

Sensör tarafından bildirilen son üç sensör etkinliği değeri x, y ve z eksenleri için açısal hız değerinin desteklenip desteklenmediğini temsil eder. 1.0 değeri, eksenin desteklendiğini, 0 değeri ise desteklenmediğini gösterir. Cihaz üreticileri, desteklenen eksenleri derleme

Cihaz üreticileri, kullanılmayan eksenlerin açısal hız değerlerini 0 olarak ayarlamalıdır.

İvmeölçer sınırlı eksenleri kalibre edilmemiş

Temel fiziksel sensörler: İvme ölçer

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) uyanmayan bir sensör döndürür

Sınırlı eksenleri kalibre edilmemiş bir ivme ölçer sensörü, TYPE_ACCELEROMETER_UNCALIBRATED ile eşdeğerdir ancak bir veya iki eksenin desteklenmediği durumları destekler.

Sensör tarafından raporlanan son üç sensör etkinliği değeri, x, y ve z eksenleri için ivme ve önyargı değerlerinin desteklenip desteklenmediğini gösterir. 1.0 değeri eksenin desteklendiğini, 0 değeri ise desteklenmediğini belirtir. Cihaz üreticileri, desteklenen eksenleri derleme

Cihaz üreticileri, kullanılmayan eksenlerin ivme ve önyargı değerlerini 0 olarak ayarlamalıdır.

Jiroskopun sınırlı eksenleri kalibre edilmemiş

Temel fiziksel sensörler: Jiroskop

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) uyandırma olmayan bir sensör döndürür

Sınırlı eksenli jiroskop eksenlerine sahip olmayan sensörler TYPE_GYROSCOPE_UNCALIBRATED ile eşdeğerdir ancak bir veya iki eksenin desteklenmediği durumları destekler.

Sensör tarafından raporlanan son üç sensör etkinliği değeri, x, y ve z eksenleri için açısal hız ve kayma değerlerinin desteklenip desteklenmediğini gösterir. 1.0 değeri eksenin desteklendiğini, 0 değeri ise desteklenmediğini belirtir. Cihaz üreticileri, desteklenen eksenleri derleme sırasında tanımlar ve değerler çalışma zamanı boyunca değişmez.

Cihaz üreticileri, kullanılmayan eksenlerin açısal hız ve kayma değerlerini 0 olarak ayarlamalıdır.

Kompozit sınırlı eksen IMU

Temel fiziksel sensörler: 3 eksenli ivme ölçer, 3 eksenli jiroskop, kalibre edilmemiş 3 eksenli ivme ölçer ve kalibre edilmemiş 3 eksenli jiroskop sensörlerinin herhangi bir kombinasyonu.

Raporlama modu: Sürekli

Kompozit sınırlı eksen IMU sensörü, sınırlı eksen IMU sensörüne eşdeğerdir ancak HAL'de desteklenmek yerine 3 eksenli sensör verilerini eşdeğer sınırlı eksen varyantlarına dönüştürür. Bu karma sensörler yalnızca otomotiv cihazlarda etkindir.

Aşağıdaki tabloda, standart 3 eksenli ivme ölçerden birleşik sınırlı eksenli ivme ölçere dönüşüm örneği gösterilmektedir.

SENSOR_TYPE_ACCELEROMETER için SensorEvent Değerleri Örnek SENSOR_TYPE_ACCELEROMETER SensorEvent Birleşik SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent
values[0]

-0,065

-0,065

değerler[1]

0,078

0,078

values[2]

9,808

9,808

değerler[3]

Yok

1,0

values[4]

Yok

1,0

values[5]

Yok

1,0

Otomotiv sensörleri

Otomotiv kullanım alanlarını destekleyen sensörler.

Başlık

Temel fiziksel sensörler: GPS, manyetometre, ivme ölçer ve jiroskopun herhangi bir kombinasyonu.

Raporlama modu: Sürekli

getDefaultSensor(SENSOR_TYPE_HEADING) uyanmayan bir sensör döndürür

Android 13'ten itibaren kullanılabilen yön sensörü, cihazın gerçek kuzeye göre gösterdiği yönü derece cinsinden ölçer. Yön sensörü iki SensorEvent değeri içerir. Biri ölçülen cihaz başlığı, diğeri ise sağlanan başlık değerinin doğruluğu içindir.

Bu sensör tarafından raporlanan yön değerleri 0.0 (dahil) ile 360.0 (hariç) arasında olmalıdır. 0 kuzeyi, 90 doğuyu, 180 güneyi ve 270 batıyı gösterir.

Bu sensörün doğruluğu yüzde 68 güven düzeyinde tanımlanır. Temel dağılımın Gauss normal olduğu durumlarda doğruluk bir standart sapmadır. Örneğin, yön sensörü 60 derecelik bir yön değeri ve 10 derecelik bir doğruluk değeri döndürüyorsa gerçek yönün 50 derece ile 70 derece arasında olma olasılığı yüzde 68'dir.