2012-02-12 18 views
7

Farklı sensörlerden (GPS, Acc, Gyro, Compass) olabildiğince çok sensör vaulu (mümkün olan her zaman) okuyan bir uygulama yazmak istiyorum. Bu yüzden NDK kullanmanın bir avantajı olup olmadığını araştırmak zorundayım.Android: NDK ve yoklama kullanarak sensör örnekleme hızını geliştirin

İşte sorularım şunlardır:

a) sensörden sensör değerlerini okurken darboğaz nedir? Senosun kendisi mi, Java mı? NDK kullanarak oranı artırabilir miyim? (GPS için darboğazın sensörün kendisinin olduğunu düşünüyorum, ama ben örneğin Gyro-Sensörün oldukça hızlı olduğunu okudum) this thread'u buldum ve darboğaz sensör olarak görünüyor. Birisi bunu onaylayabilir mi?

b) EventListener kullanmak yerine yoklama oranı artırır mı? Sensör değerlerini hızlı okumanın en iyi yolu nedir?

c) NDK'nın, uygulamanın güç tüketimi üzerinde herhangi bir etkisi var mı? Bu konuda hiçbir şey bulamadım.

d) Android için yeni. Normal Java yerine NDK'yi kullanmak daha mı uygun? Bu sample-code'a göre, bir olay kuyruğu kullanarak sensörler ile etkileşim kurmak kolay, ancak kodu derlemek ve uygulamadan kullanmak için ne kadar para yetiyor?

Şimdiden teşekkürler.

cevap

0

Sensör dinleyicinizi kaydettirdiğinizde, SensorManager.SENSOR_DELAY_FASTEST numaralı telefonu registerListener()'a aktarmanız gerekir.

Daha fazla ayrıntı için http://developer.android.com/reference/android/hardware/SensorManager.html'a bakın.

+0

Cevabınız için teşekkürler, ama istediğim buydu. Soru, Java (SDK) yerine C++ (NDK) kullanmanın bir yararı olsaydı. – steckl

+0

G-sensör verilerini Java'dan yerel olana aktarmak için JNI kullanıyoruz ve bununla ilgili hiçbir sorun bulunamadı. –

+0

Sizin yönteminizden herhangi bir kazanç elde edermisiniz? Neden NDK'nın Sensör Arayüzünü doğrudan kullanmıyorsunuz? Benim için yönteminizin hiçbir faydası yok, çünkü sensör verileriyle herhangi bir hesaplama yapmam, onu bir sunucuya iletiyorum. – steckl

0

tecrübe, ben en azından sorularınızın ilk yanıtlayabilir:

a) Java çoklu sensörleri işlemek için yeterince hızlıdır tabanını kullanma. Uygulamalarımdan birinde SENSOR_DELAY_FASTEST ile bir kerede İvmeölçer, Jiroskop, Manyetometre, Oyun Rotasyonu Vektörü ve Kalibre Edilmemiş Magnetometre okudum. Bunun yanısıra, bir dizi filtreleme ve veri depolamanın yanı sıra, dönüşü takip etmek için bazı quaternion matematikleri de yaptım. Ham verilere baktığımda (bir .txt dosyasına da kaydettim), herhangi bir eksik veri ya da gecikme görünmüyordu (zaman damgaları arasındaki ortalama fark, hiçbir hesaplama yapılmadan tek bir sensörün çalıştırılmasıyla aynıydı).

Bu yüzden, benim durumumda, sensörler olabildiğince hızlı çalışıyordu ve Java da iyi çalışıyordu.

... Eğer denemeye değer olabilir NDK kullanarak, hesaplamaların çok büyük miktarlarda yapıyorsan dedi

.