2016-03-27 35 views
0

Hızlandırma verileri için sensörleri yokladığı ve XYZ değerlerini bir SQL DB'ye kaydettiğim bir uygulamam var. Codewise oldukça basittir:Android doğrusal hızlanma doğruluğu

public void onSensorChanged(SensorEvent event) { 
     sensor = event.sensor; 

     int i = sensor.getType(); 
     if (i == MainActivity.TYPE_ACCELEROMETER) { 
      accelerometerMatrix = event.values; 
     } else if (i == MainActivity.TYPE_GYROSCOPE) { 
      gyroscopeMatrix = event.values; 
     } else if (i == MainActivity.TYPE_GRAVITY) { 
      gravityMatrix = event.values; 
     } else if (i == MainActivity.TYPE_MAGNETIC) { 
      magneticMatrix = event.values; 
     } 

     //insert into database 

    } 

MainActivity.TYPE_ACCELEROMETER benim MainActivity sınıfta set sadece bir alandır.

Bunu Sensor.TYPE_LINEAR_ACCELERATION olarak ayarlarsanız DB'ye depolanan değerlerin doğruluğu oldukça düşük (yalnızca 2 ondalık basamak) olduğunu fark ettim. Ancak donanımın ivmeölçer Sensor.TYPE_ACCELERATION kullanırsanız, doğruluk çok daha yüksek (6dp)

Sorum şu ki, yalnızca 2dp'lik doğruluk elde etmeme neden olacak şekilde doğrusal hızlandırma değerlerini yanlış mı aldım? Yoksa bu, sensörlerin Android'de nasıl birleştirildiğinin bir kısıtlaması mı? Eğer ikincisiyse, erimiş sensörler ile çalışırken, yerçekimi filtrelendikten sonra, ivme ölçerlerimdeki daha yüksek doğruluğu nasıl elde edebilirim?

cevap

0

Bildiğim kadarıyla, Android'deki donanım sensörlerinin doğruluğunu değiştiremezsiniz. Örnekleme süresini, SensorManager sınıfından registerListener() yöntemiyle ayarlayabilir veya SensorEventListener arabiriminden geri bildirimi ile izleme doğruluğunu değiştirebilirsiniz.

Kod pasajınıza sensör okumalarını doğru şekilde aldığınız anlaşılıyor. - belki birden fazla okuma ölçüm hatalarına neden olan uygulama davranışı değiştiyse sadece bir sensör ve çek ile aynı ölçümü gerçekleştirmek için

  • deneyin:

    aşağıdaki şeyler yapıyor önerirsin?

  • Bu uygulamayı farklı bir cihazda çalıştırmayı denerseniz ve davranış ve doğruluk farklı olup olmadığını doğrulayın - sensörlerin doğruluğu farklı cihazlarda farklı olabilir mi?
  • onay doğruluk ve veritabanınızda datatypes ve Bahsettiğiniz önerileri uyguladıktan sonra herhangi bir fark yoksa doğru

, biz sensör okumaları doğruluğunu artırma konusunda bir şey yapamaz düşünmek daha doğru veriler kolları doğrulamak. Ayrıca, bir süre önce Nexus 5 ve Nexus 6'yı kullanarak Android'de sensörlerle bazı deneyler yaptım ve farkettiğim gibi farklı sensörlerin farklı doğrulukta olduğunu görüyorum. Bilgime göre, bunu Android SDK API seviyesinden kontrol edemiyoruz.