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?