Google 致力于为黑人社区推动种族平等。查看具体举措
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Sensör türleri

Bu bölümde sensör eksenleri, temel sensörler ve bileşik sensörler (etkinlik, 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

Sensor API, 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.

Mobil cihazlar için sensör API koordinat sistemi

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

Otomotiv eksenleri

Android Automotive uygulamalarında, akslar araç şasisine göre tanımlanır.

Otomotiv cihazları için sensör API koordinat sistemi

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

  • X, aracın sağına doğru artar
  • Y vücut çerçevesinin burnuna doğru artar
  • Z, gövde çerçevesinin tavanına doğru artar

Koordinat sisteminin başlangıç ​​noktası, aracın arka aksının merkezinde bulunur. Bir eksenin pozitif yönünden bakıldığında, pozitif dönüşler saat yönünün tersidir. Bu nedenle, bir araç sola dönüş yaparken, z ekseni jiroskop dönüş hızının pozitif bir değer olması beklenir.

Baz sensörleri

Temel sensör türleri, temsil ettikleri fiziksel sensörlerin adını alı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ürlerinin örnekleri şunları içerir:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

Bununla birlikte, 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, bir temel sensörün özellikleri, aşağıdaki kullanım durumlarında temeldeki fiziksel sensörün özelliklerinden farklı olabilir:

  • 1 derece / sn'lik bir önyargı aralığına sahip olacak şekilde derecelendirilmiş bir jiroskop çipi.
    • Fabrika kalibrasyonu, sıcaklık telafisi ve önyargı telafisi uygulandıktan sonra, Android sensörün gerçek sapması azalacaktır, sapmanın 0,01 derece / sn'nin altında olduğu garanti edilen bir noktaya kadar olabilir.
    • Bu durumda, alttaki sensörün veri sayfası 1 derece / sn demesine rağmen, Android sensörünün 0,01 derece / sn'nin altında bir sapmaya sahip olduğunu söylüyoruz.
  • 100 uW güç tüketen bir barometre.
    • Üretilen verilerin çipten SoC'ye taşınması gerektiğinden, barometre Android sensöründen veri toplamak için 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, jiroskobu etkinleştirmeyi, 5000 uW tüketmeyi ve bir miktar algoritma çalıştırmayı gerektirebilir ve 900 uW daha maliyetlidir.
    • 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çüdür ve HAL aracılığıyla sensör statik özelliklerinde bildirilen şeydir.

İ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 ivmesini bildirir. Ölçülen ivme hem fiziksel ivmeyi (hız değişikliği) hem de yerçekimini içerir. Ölçüm, sensor_event_t.acceleration'ın x, y ve z alanlarında rapor edilir.

Tüm değerler SI birimleri (m / s ^ 2) cinsindendir ve cihazın ivmesi eksi üç sensör ekseni boyunca yerçekimi kuvvetini ölçer.

İşte örnekler:

  • Serbest düşüşte (x, y, z) normu 0'a yakın olmalıdır.
  • Cihaz bir masanın üzerine düz bir şekilde uzandığında ve sol tarafı sağa doğru itildiğinde, x ivme değeri pozitiftir.
  • Cihaz bir masanın üzerinde düz durduğunda, z boyunca ivme değeri +9.81 alo'dur; bu, cihazın ivmesi (0 m / s ^ 2) eksi yerçekimi kuvvetine (-9.81 m / s ^ 2) karşılık gelir.
  • Cihaz bir masanın üzerine düz bir şekilde uzandığında 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

Eğilim ve ölçek kalibrasyonu, akış sırasında değerlerde atlamalara neden olmamak için yalnızca sensör devre dışı bırakıldığında güncellenmelidir.

sensors_event_t.acceleration.status ölçer ayrıca, sensors_event_t.acceleration.status aracılığıyla okumalarının ne kadar doğru olmasını beklediğini sensors_event_t.acceleration.status . Bu alan için olası değerler hakkında daha fazla bilgi için SensorManager SENSOR_STATUS_* sabitlerine bakın.

Ortam sıcaklığı

Raporlama modu: Değiştirildiğinde

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ü (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 sensors_event_t.magnetic ve tüm değerler mikro Tesla ( sensors_event_t.magnetic .

Manyetometre ayrıca, sensors_event_t.magnetic.status aracılığıyla okumalarının ne kadar doğru olmasını beklediğini sensors_event_t.magnetic.status . Bu alan için olası değerler 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
  • Fabrika (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ında dönme oranını bildirir.

Dönüş saat yönünün tersine pozitiftir (sağ el kuralı). Yani, başlangıç ​​noktasında konumlandırılmış bir cihaza x, y veya z eksenindeki bazı pozitif konumlardan bakan bir gözlemci, cihaz saat yönünün tersine dönüyormuş gibi göründüğünde pozitif dönüş bildirecektir. Bunun pozitif rotasyonun standart matematiksel tanımı olduğunu ve havacılıkta rulmanın tanımına uymadığını unutmayın.

Ölçüm, sensors_event_t.gyro x, y ve z alanlarında sensors_event_t.gyro 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) ölçekli tazminat
  • Çevrimiçi önyargı kalibrasyonu (sapmayı gidermek için)

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

Jiroskop, manyetometre ve ivmeölçerlere dayalı olarak taklit edilemez, çünkü bu, yerel tutarlılığın ve yanıt vermenin azalmasına neden olur. Normal bir jiroskop çipine dayanmalıdır.

Nabız

Raporlama modu: Değiştirildiğinde

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

Bir kalp atış hızı sensörü, cihaza dokunan kişinin mevcut kalp atış hızını bildirir.

Dakikada yendi ve güncel kalp atış hızı (BPM) bildirilen sensors_event_t.heart_rate.bpm ve sensörün durumu bildirilir sensors_event_t.heart_rate.status . Bu alan için olası değerler hakkında daha fazla bilgi için SensorManager SENSOR_STATUS_* sabitlerine bakın. Özellikle, ilk aktivasyonda, cihazın vücut üzerinde olmadığı bilinmedikçe, ilk olayın durum alanı SENSOR_STATUS_UNRELIABLE olarak ayarlanmalıdır. Bu sensör değiştiğinden, olaylar yalnızca ve ancak heart_rate.bpm veya heart_rate.status son olaydan bu yana değiştiğinde oluşturulur. Olaylar, her sampling_period daha hızlı üretilmez.

sensor_t.requiredPermission her zaman SENSOR_PERMISSION_BODY_SENSORS .

Işık

Raporlama modu: Değiştirildiğinde

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

Bir ışık sensörü, SI lüks birimleri cinsinden mevcut aydınlatmayı bildirir.

Ölçüm, sensors_event_t.light rapor sensors_event_t.light .

Yakınlık

Raporlama modu: Değiştirildiğinde

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

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

Bir 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örleri idi ve yakınlıkta bir değişiklik tespit ederken SoC'yi uyandırdı. Android 4.4'ten sonra, telefon görüşmeleri yaparken ekranı açıp kapatmak için kullanılan bu sensör olduğundan, öncelikle bu sensörün uyandırma sürümünü uygulamanızı öneririz.

Ölçüm, sensors_event_t.distance santimetre cinsinden bildirilir. Bazı yakınlık sensörlerinin yalnızca ikili "yakın" veya "uzak" ölçümü desteklediğini unutmayın. Bu durumda, sensör raporun sensor_t.maxRange "uzak" durumunda değer ve daha az bir değer sensor_t.maxRange "yakın" durumda.

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 sapması kalibrasyonu
  • Fabrika ölçeğinde 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ştirildiğinde

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 döndürür.

Kompozit sensör türleri

Bir kompozit sensör, bir veya birkaç fiziksel sensörden 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:

  • Adım detektörü ve önemli hareket , genellikle bir ivmeölçere dayanır, ancak güç tüketimi ve doğruluk kabul edilebilir ise diğer sensörlere de dayanabilir.
  • Bir ivmeölçer ve bir jiroskopa dayalı oyun dönüş vektörü .
  • Jiroskop taban sensörüne benzeyen kalibre edilmemiş jiroskop , ancak ölçümde düzeltilmek yerine yanlılık kalibrasyonu ayrı olarak rapor edilir.

Temel sensörlerde olduğu gibi, kompozit sensörlerin özellikleri de nihai verilerinin özelliklerinden gelir. Örneğin, bir oyun rotasyon 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 rotasyon vektörünün kayması, fiziksel sensör özellikleri kadar kalibrasyon algoritmasının kalitesine de bağlıdır.

Aşağıdaki tablo mevcut kompozit sensör tiplerini listeler. Her bir kompozit sensör, bir veya birkaç fiziksel sensörden gelen verilere dayanır. Kötü bir kullanıcı deneyimi sağladıkları için sonuçları yaklaşık olarak tahmin etmek için diğer temel fiziksel sensörleri seçmekten kaçının.

Sensör tipi Kategori Temel fiziksel sensörler Raporlama modu

Oyun rotasyonu vektör

Tutum

İvmeölçer, jiroskop, manyetometre KULLANMAMALIDIR

Sürekli

Jeomanyetik rotasyon vektör Düşük güç sensörü

Tutum

İvmeölçer, manyetometre, jiroskop KULLANMAMALIDIR

Sürekli

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

Etkileşim

Tanımsız

Tek atış

Yerçekimi

Tutum

İvmeölçer, jiroskop

Sürekli

Jiroskop kalibre edilmemiş

Kalibre edilmemiş

Jiroskop

Sürekli

Doğrusal ivme

Aktivite

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

Sürekli

Manyetik alan kalibre edilmemiş

Kalibre edilmemiş

Manyetometre

Sürekli

Yönelim (kullanımdan kaldırıldı)

Tutum

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

Sürekli

Harekete geç Düşük güç sensörü

Etkileşim

Tanımsız

Tek atış

Döndürme vektörü

Tutum

İvmeölçer, manyetometre, jiroskop

Sürekli

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

Aktivite

İvmeölçer (veya çok düşük güç olduğu sürece başka bir)

Tek atış

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

Aktivite

İvmeölçer

Değiştirildiğinde

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

Aktivite

İvmeölçer

Özel

Eğim dedektörü Düşük güç sensörü

Aktivite

İvmeölçer

Özel

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

Etkileşim

Tanımsız

Tek atış

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

Etkinlik kompozit sensörler

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 hızlanma sensörü, yerçekimi hariç, sensör çerçevesindeki cihazın doğrusal ivmesini 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 olarak sensors_event_t.acceleration .

Cihaz hareketsiz olduğunda tüm eksenlerdeki okumalar 0'a yakın olmalıdır.

Cihaz bir jiroskopa sahipse, doğrusal ivme sensörü giriş olarak jiroskop ve ivmeölçeri kullanmalıdır.

Cihaz bir jiroskopa sahip değilse, doğrusal ivme sensörü ivmeölçeri ve manyetometreyi giriş olarak 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

Kullanıcı bir konumda bir değişikliğe neden olabilir bir hareket: önemli bir hareket dedektörü tetikleyiciler önemli bir hareket tespit ettiğinde.

Bu tür önemli hareketlerin örnekleri şunlardır:

  • Yürüme veya bisiklete binme
  • Hareket eden bir arabada, koçta veya trende oturmak

Önemli hareketi tetiklemeyen durumlara örnekler:

  • Telefon cebinizde 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ı yerini değiştirirken cihazı uyandırmak için önemli bir harekete dayandıkları düşük güç moduna geçebilirler.

Bu sensör düşük güçte olmalıdır. Az miktarda yanlış negatifle sonuçlanabilecek güç tüketimi için bir ödün verir. Bu birkaç nedenden dolayı yapılır:

  • Bu sensörün amacı güç tasarrufu sağlamaktır.
  • Kullanıcı hareket etmediğinde (yanlış pozitif) bir olayı tetiklemek güç açısından maliyetlidir, bu nedenle bundan kaçınılmalıdır.
  • Kullanıcı hareket halindeyken (yanlış negatif) bir olayı tetiklememek, tekrar tekrar yapılmadığı sürece kabul edilebilir. Kullanıcı 10 saniye boyunca yürüdüyse, bu 10 saniye içinde bir olayı tetiklememek kabul edilemez.

Her bir sensör etkinliği raporları 1 içinde sensors_event_t.data[0] .

Adım detektörü

Temel fiziksel sensör: İvmeölçer (+ muhtemelen düşük güç olduğu sürece 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

Bir adım detektörü, kullanıcı tarafından her adım atıldığında bir olay üretir.

Olay sensors_event_t.timestamp zaman damgası, ayağın yere çarptığı sensors_event_t.timestamp karşılık gelir ve hızlanmada yüksek bir varyasyon oluşturur.

Adım sayacı ile karşılaştırıldığında, adım detektörünün daha düşük bir gecikme süresi olmalıdır (iki saniyeden az). Hem adım detektörü hem de adım sayacı, kullanıcının ne zaman yürüdüğünü, koştuğunu ve merdivenlerden çıktığını algılar. Kullanıcı bisiklete binerken, araba kullanırken veya başka araçlardayken tetiklenmemelidir.

Bu sensör düşük güçte olmalıdır. Yani donanımda kademe tespiti yapılamıyorsa bu sensör tanımlanmamalıdır. Özellikle, adım dedektörü 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 detektörleri üzerinde etkisi yoktur.

Her sensör olayı, sensors_event_t.data[0] 1 rapor eder.

Adım sayacı

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

Raporlama modu: Değiştirildiğinde

Düşük güç

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

Bir adım sayacı, etkinleştirilirken son yeniden başlatmadan bu yana kullanıcı tarafından atılan adımların sayısını bildirir.

Ölçüm bir olarak rapor edilir uint64_t içinde sensors_event_t.step_counter ve sadece sistem yeniden başlatmada sıfırlanır olduğunu.

Olayın zaman damgası, o olayın son adımının atıldığı zamana ayarlanır.

Bir adımın zamanının anlamı için Adım dedektör sensör tipine bakın.

Adım dedektörü ile karşılaştırıldığında, adım sayacı daha yüksek bir gecikmeye sahip olabilir (10 saniyeye kadar). Bu gecikme sayesinde, bu sensör yüksek bir doğruluğa sahiptir; Tam bir günlük ölçümden sonraki adım sayısı, gerçek adım sayısının% 10'u dahilinde olmalıdır. Hem adım detektörü hem de adım sayacı, kullanıcının ne zaman yürüdüğünü, koştuğunu ve merdivenlerden çıktığını algılar. Kullanıcı bisiklete binerken, araba kullanırken veya başka araçlardayken tetiklenmemelidir.

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. Yaklaşan taşma durumunda (en fazla ~ 2 ^ 16 adımda bir), SoC uyandırılabilir, böylece sürücü sayaç bakımını yapabilir.

Etkileşim'de belirtildiği gibi, bu sensör çalışırken, diğer sensörleri, özellikle de kullanımda olabilecek ivmeölçeri engellemeyecektir.

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

Bu sensör düşük güçte olmalıdır. Yani donanımda kademe tespiti 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 kesintileri tetiklemelidir (ivme ölçer verileri değil).

Eğim dedektörü

Temel fiziksel sensör: İvmeölçer (+ muhtemelen düşük güç olduğu sürece 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 detektörü, bir eğim olayı her algılandığında bir olay oluşturur.

Bir eğim olayı, sensör tarafından üretilen aktivasyon veya son olaydan bu yana en az 35 derece değişen 2 saniyelik pencere ortalama yerçekiminin yönü ile tanımlanır. İşte algoritma:

  • reference_estimated_gravity = etkinleştirmeden sonraki ilk saniye boyunca 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 tetikleyin

Telefon yöneliminde bir değişiklik olmaksızın büyük ivmeler, bir eğme olayını tetiklememelidir. Örneğin, bir 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ırmazlarsa 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 bir sensör etkinliği raporları 1 içinde sensors_event_t.data[0] .

Tutum bileşik sensörler

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öndürme vektör sensörü, aygıtın Doğu-Kuzey-Yukarı koordinatları çerçevesine göre yönünü bildirir. Genellikle ivmeölçer, jiroskop ve manyetometre okumalarının entegrasyonu ile elde edilir. Doğu-Kuzey-Yukarı koordinat sistemi, aşağıdaki durumlarda doğrudan ortonormal bir temel olarak tanımlanır:

  • X, doğuyu gösterir ve yere teğettir.
  • Y kuzeyi gösterir ve yere teğettir.
  • Z gökyüzünü işaret eder ve yere diktir.

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

Döndürme, telefonu referans cihaz rot_axis (Doğu-Kuzey-Yukarı hizalı) mevcut cihaz yönüne gitmek için bir eksen rot_axis etrafında bir teta açısıyla döndürmek olarak görülebilir. Dönüş, bir birim kuaterniyonun 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 x, y ve z alanları, dönüş eksenini temsil eden bir birim uzunluk vektörünün Doğu-Kuzey-Yukarı koordinatlarıdır.
  • theta dönüş açısıdır

Kuaterniyon, bir birim kuaterniyondur: Norm 1 olmalıdır. Bunun sağlanamaması, istemcinin hatalı davranışına neden olacaktır.

Ek olarak, bu sensör tahmini bir rota doğruluğu bildirir:

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

Başlık hatası, zamanın% 95'inden daha az estimated_accuracy olmalıdır. Bu sensör, ana yönelim değişikliği girişi olarak bir jiroskop kullanmalıdır.

Bu sensör aynı zamanda jiroskop sapması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 rotasyonu 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

Bir oyun rotasyonu vektör sensörü, bir dönüş vektör sensörüne benzer, ancak jeomanyetik alanı kullanmaz. Bu nedenle Y ekseni kuzeye değil, başka bir referansa işaret eder. Jiroskobun Z ekseni etrafında sürüklenmesiyle bu referansın aynı büyüklük düzeyinde kaymasına izin verilir.

sensors_event_t.data[0-3] nasıl ayarlanacağına ilişkin ayrıntılar için Döndürme vektör sensörüne bakın. Bu sensör tahmini bir rota doğruluğu sensors_event_t.data[4] : 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öndürülen bir telefon, aynı oyun dönüş vektörünü rapor etmelidir.

Bu sensör bir jiroskop ve ivmeölçere dayalı olmalıdır. Jiroskop sapmasının tahmini yoluyla dolaylı olarak olduğu kadar, 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

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 x, y ve z alanlarında m / s ^ 2 cinsinden bildirilir.

Cihaz hareketsiz durumdayken, yerçekimi sensörünün çıkışı ivmeölçerinki ile aynı olmalıdır. Dünya'da büyüklük yaklaşık 9,8 m / s ^ 2'dir.

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

Cihazın bir jiroskopu yoksa, yerçekimi sensörü ivmeölçeri ve manyetometreyi giriş olarak kullanmalıdır.

Jeomanyetik rotasyon 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 rotasyon vektörü, rotasyon 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] nasıl ayarlanacağına ilişkin ayrıntılar için Döndürme vektör sensörüne bakın.

Tıpkı dönüş vektör sensörü için olduğu gibi, rota hatası tahmin edilen doğruluktan ( sensors_event_t.data[4] )% 95 oranında daha az olmalıdır.

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

Yönelim (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ılan daha eski bir sensör türüdür. Daha net bir şekilde tanımlanan rotasyon vektör sensörü ile değiştirildi. Mümkün olduğunda yönlendirme sensörünün üzerinde dönüş vektör sensörünü kullanın.

Bir yönlendirme sensörü, cihazın durumunu bildirir. Ölçümler, sensors_event_t.orientation x, y ve z alanlarında derece cinsinden rapor sensors_event_t.orientation :

  • sensors_event_t.orientation.x : azimut, manyetik kuzey yönü ile Y ekseni arasındaki açı, Z ekseni etrafındaki ( 0<=azimuth<360 ). 0 = Kuzey, 90 = Doğu, 180 = Güney, 270 = Batı.
  • sensors_event_t.orientation.y : pitch, 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 : roll, Y ekseni etrafında dönüş ( -90<=roll<=90 ), X ekseni Z eksenine doğru hareket ettiğinde pozitif değerlerle.

Lütfen tarihsel nedenlerden dolayı yuvarlanma açısının saat yönünde pozitif olduğunu unutmayın. (Matematiksel olarak konuşursak, saat yönünün tersine pozitif olmalıdır):

Bir cihaza göre yönelim tasviri

Şekil 3. Bir cihaza göre yönelim

Bu tanım, X ekseninin düzlemin uzun kenarı boyunca (kuyruktan buruna) olduğu havacılıkta kullanılan sapma, eğim ve yuvarlanmadan farklıdır.

Yönlendirme sensörü ayrıca, sensörler_event_t.orientation.status aracılığıyla okumalarının ne kadar doğru olmasını beklediğini sensors_event_t.orientation.status . Bu alan için olası değerler hakkında daha fazla bilgi için SensorManager SENSOR_STATUS_* sabitlerine bakın.

Kalibre edilmemiş sensörler

Kalibre edilmemiş sensörler daha ham sonuçlar sağlar ve biraz sapma içerebilir, ancak aynı zamanda kalibrasyon yoluyla uygulanan düzeltmelerden daha az "atlama" içerebilir. 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 uygulamak aslında sonuçları 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 tahmini ile birlikte herhangi bir sapma düzeltmesi (fabrika sapması ve sıcaklık telafisi, kalibre edilmemiş ölçümlere uygulanır) olmaksızın üç sensör ekseni boyunca cihazın ivmesini bildirir. Tüm değerler SI birimleri (m / s ^ 2) cinsindendir ve sensors_event_t.uncalibrated_accelerometer alanlarında rapor sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : X ekseni boyunca ivme (ö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, yanlılık tahmini ile birlikte, önyargı telafisi uygulamadan sensör eksenleri etrafındaki dönüş oranını bildirir. Tüm değerler radyan / saniye cinsindendir ve sensors_event_t.uncalibrated_gyro alanlarında rapor sensors_event_t.uncalibrated_gyro :

  • x_uncalib : X ekseni etrafında açısal hız (kayma telafisi olmadan)
  • y_uncalib : Y ekseni etrafında açısal hız (kayma telafisi olmadan)
  • z_uncalib : Z ekseni etrafında açısal hız (kayma telafisi olmadan)
  • x_bias : X ekseni etrafında tahmini sapma
  • 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 ve sapma tahmininin _uncalibrated = _calibrated + _bias : _uncalibrated = _calibrated + _bias .

x_bias , y_bias ve z_bias değerlerinin, y_bias tahmini değişir değişmez atlaması beklenir ve geri kalan zamanlarda 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 kompanzasyonu uygulanmalıdır. Ayrıca jiroskop sapması tahmini, x_bias , y_bias ve z_bias makul tahminlerin raporlanabilmesi için uygulanmalıdır. Uygulama sapmayı tahmin edemiyorsa, bu sensör uygulanmamalıdır.

Bu sensör varsa, ilgili Jiroskop sensörü de mevcut olmalıdır ve 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) uyanmayan bir sensör döndürür

Kalibre edilmemiş bir manyetik alan sensörü, sert demir kalibrasyon tahminiyle birlikte ortam manyetik alanını bildirir. Tüm değerler mikro Tesla ( sensors_event_t.uncalibrated_magnetic ve sensors_event_t.uncalibrated_magnetic alanlarında rapor sensors_event_t.uncalibrated_magnetic :

  • 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 sapması
  • y_bias : Y ekseni boyunca tahmini sert demir sapması
  • z_bias : Z ekseni boyunca tahmini sert demir sapması

Kavramsal olarak, kalibre edilmemiş ölçüm, kalibre edilmiş ölçüm ve sapma tahmininin _uncalibrated = _calibrated + _bias : _uncalibrated = _calibrated + _bias .

Kalibre edilmemiş manyetometre, daha yüksek seviyeli algoritmaların kötü sert demir tahminini işlemesine izin verir. x_bias , y_bias ve z_bias değerlerinin, sert demir değişikliklerinin tahmini olarak atlaması beklenir ve geri kalan zamanlarda sabit kalmaları gerekir.

Ölçümlere yumuşak demir kalibrasyonu ve sıcaklık telafisi uygulanmalıdır. Ayrıca, x_bias , y_bias ve z_bias makul tahminlerin rapor edilebilmesi için sert demir tahmini de uygulanmalıdır. Uygulama, sapmayı tahmin edemiyorsa, bu sensör uygulanmamalıdır.

Bu sensör varsa, ilgili manyetik alan sensörü mevcut olmalı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ştirildiğinde

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

Bir menteşe açısı sensörü, cihazın iki ayrılmaz parçası arasındaki açıyı derece cinsinden ölçer. Bu sensör tipi ile ölçülen bir menteşenin hareketinin, örneğin bir ekranı açarak veya açığa çıkararak kullanıcının cihazla etkileşime girme yollarını 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 bunlar düşük güçte olmalı ve kullanıcı deneyimi açısından kalitelerini doğrulamak cihaz üreticisinin sorumluluğundadır.

Uyandırma hareketi

Temel fiziksel sensörler: Tanımsız (düşük güçlü herhangi bir şey)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .