HAL sürümünün kullanımdan kaldırılması

Android'in L sürümünde, bazı sensör HAL'leri için desteği durduruyoruz. sürümleri vardır. Yalnızca SENSORS_DEVICE_API_VERSION_1_0 ve SENSORS_DEVICE_API_VERSION_1_3 sürümleri desteklenir.

Sonraki sürümlerde 1_0 desteği de büyük olasılıkla kesilecektir.

1_0 için toplu işlem kavramı yoktur. Mümkünse 1_0 kullanan tüm cihazlar 1_3 sürümüne yükseltin.

1_1 ve 1_2 toplu işleme kavramının yanlış bir şekilde açıklanmadığını, artık destekleniyor

Şu anda 1_1 veya 1_2'yi kullanan tüm cihazların 1_3 sürümüne yükseltilmesi ZORUNLUDUR.

1_3’te, toplu işleme kavramını basitleştirdik ve uyandırma kavramını, olabilir.

1_3 sürümüne geçmek için aşağıda listelenen değişiklikleri uygulayın.

Toplu işlevi uygulama

Toplu işlem yapmamış olsanız bile (donanımınızda FIFO yoktur), batch işlevini uygulayın. batch, şu ayarı yapmak için kullanılır: belirli bir sensör için örnekleme süresi ve maksimum raporlama gecikmesi. Google setDelay yerini alır. setDelay çağrılmayacak artık geçerli.

Toplu işlem uygulamazsanız batch öğesini şuna göre uygulayabilirsiniz: mevcut setDelay fonksiyonunuzu sampling_period_ns parametresinden yararlanın.

Temizlik işlevini uygulama

Toplu işlem yapmasanız bile flush işlevi.

Toplu işlem uygulamazsanız flush, bir veri grubu oluşturmalıdır META_DATA_FLUSH_COMPLETE etkinliği vardır ve 0 (başarı) sonucu döndürülür.

Sensörleriniz_poll_device_t.common.versionınızı değiştirin

your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3

Yeni alanları sensörlerinizin tanımına ekleyin

Her bir sensör tanımlanırken normal sensor_t değerine ek olarak alanlar:

.name =       "My magnetic field Sensor",
.vendor =     "My company",
.version
=    1,
.handle =     mag_handle,
.type =       SENSOR_TYPE_MAGNETIC_FIELD,
.maxRange =   200.0f,
.resolution = CONVERT_M,
.power =      5.0f,
.minDelay =
 16667,

1_0 ile 1_3 arasında tanımlanan yeni alanları da ayarlamanız gerekir:

.fifoReservedEventCount = 0,
.fifoMaxEventCount =   0,
.stringType =         0,
.requiredPermission = 0,
.maxDelay =      200000
.flags =
SENSOR_FLAG_CONTINUOUS_MODE,

fifoReserveEventCount: Toplu işlem uygulamıyorsanız bunu 0 olarak ayarlayın.

fifoMaxEventCount: Toplu işlem uygulamıyorsanız bunu 0 olarak ayarlayın.

stringType: Tüm resmi Android sensörleri ( sensörler.h) kullanır. Örneğin, resmi olmayan sensörler için sensor_t değerine bakın. ayrıntılara değineceğiz.

requiredİzin: Bu, uygulamaların ve sensörünüze erişemez. Bunu genellikle tüm sensörleriniz için 0 olarak ayarlayabilirsiniz. ancak HEART_RATE türünde sensörler bunu SENSOR_PERMISSION_BODY_SENSORS. olarak ayarlamalıdır

maxGecikme: Bu değer önemlidir ve ve sürücüsünün unsurları hakkında daha fazla bilgi edineceksiniz.

Bu değer yalnızca sürekli ve değişen sensörler için tanımlanır. Uygulama, bu aralıktaki en düşük frekansa karşılık gelen iki sensör olayı arasındaki gecikmeyi desteği var. batch işlevi, etkinlikler bu sıklıkta oluşturulur . Çerçeve veya uygulamalar tarafından, projenizin ne zaman toplu FIFO dolu olabilir. Bu değer doğru ayarlanmazsa CTS başarısız olur. Tek seferlik ve özel raporlama modu sensörleri için maxDelay değerini 0 olarak ayarlayın.

Sürekli sensörler için değeri şurada izin verilen maksimum örnekleme süresine ayarlayın: mikrosaniyedir.

Aşağıdakiler period_ns, maxDelay ve minDelay için geçerlidir:

  • period_ns nanosaniye cinsinden, maxDelay/minDelay, mikrosaniye cinsindendir.
  • maxDelay her zaman 32 bit'lik imzalı bir tam sayı içine sığmalıdır. Google yalnızca ikili uyumluluk nedeniyle 64 bit mimarilerde 64 bit olarak bildirildiğinden.

flags: Bu alan, sensörün raporlama modunu ve sensörün uyandırma sensörü.

Toplu işlem uygulamıyorsanız ve yalnızca 1.0'dan 1.3'e geçiyorsanız, alıcı:

Tek seferlik SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE sensörler

Sürekli için SENSOR_FLAG_CONTINUOUS_MODE değişimde için SENSOR_FLAG_ON_CHANGE_MODE sensörleri yakınlık hariç sensörler Özel sensörleri için SENSOR_FLAG_SPECIAL_REPORTING_MODE yatırma dışında raporlama modu algılayıcı işlevini kullanın.

Yakınlık sensörü ve Android'in resmi yatırma dedektörü sensörü için SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE.

1_1 veya 1_2 sürümünden geçiş yaparken kullanılacak notlar

  • batch işlevi artık desteklemeyen sensörlerde bile neredeyse her zaman başarılı oluyor bağımsız değişkeninin değerinden bağımsız olarak toplu hale getirir. Tek durum batch işlevinin başarısız olabileceği dahili hatalar veya sensor_handle, veya negatif sampling_period_ns ya da negatif max_report_latency_ns.
  • Bir sensörün veri işlemeyi destekleyip desteklemediği, ilgili fifoMaxEventCount 0'dan büyük. (Önceki sürümlerde, batch() döndürülen değeri temel alınır.)
  • Gruplamayı destekleyen sensörler her zaman "toplu işlem" adını verdiğimiz modu"nu belirtir: max_report_latency_ns parametresi 0 olsa bile, sensör yine de toplu hale getirilmelidir, yani etkinlikler sistem, SoC askıya alma moduna geçtiğinde FIFO'da saklanır.
  • batch işlevinin flags parametresi artık kullanılmıyor. DRY_RUN ve WAKE_UPON_FIFO_FULL desteği sonlandırılmıştır ve hiçbir zaman batch işlevine aktarılmayacaktır.
  • Toplu zaman aşımı bağımsız değişkeni artık max_report_latency bağımsız değişken.