Ich habe eine App, wo ich die Sensoren für Beschleunigungsdaten abfragen und die XYZ-Werte in einer SQL DB speichern. Codewise es ist ziemlich einfach:Android lineare Beschleunigungsgenauigkeit
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
ist nur ein Feld ich in meiner MainActivity Klasse.
Wenn ich dies auf Sensor.TYPE_LINEAR_ACCELERATION
setze, merke ich, dass die Werte, die in meinem DB gespeichert werden, sind ziemlich niedrig in der Genauigkeit (nur 2 Dezimalstellen). Aber wenn ich den Hardware-Beschleunigungsmesser Sensor.TYPE_ACCELERATION
verwende, dann ist die Genauigkeit viel höher (6dp)
Meine Frage ist, bin ich, die linearen Beschleunigungswerte falsch abzurufen, um mich zu veranlassen, nur 2dp der Genauigkeit zu erhalten? Oder ist das nur eine Einschränkung, wie die Sensoren in Android zusammengeschweißt werden? Wenn letzteres der Fall ist, wie bekomme ich nach dem Herausfiltern der Schwerkraft eine höhere Genauigkeit in meinen Beschleunigungsmesserwerten, wenn mit geschmolzenen Sensoren gearbeitet wird?