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 durumbatch
işlevinin başarısız olabileceği dahili hatalar veyasensor_handle,
veya negatifsampling_period_ns
ya da negatifmax_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şlevininflags
parametresi artık kullanılmıyor.DRY_RUN
veWAKE_UPON_FIFO_FULL
desteği sonlandırılmıştır ve hiçbir zamanbatch
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.