Ich möchte den Beschleunigungsmesser in einem Android-Handset für meine Anwendung verwenden. Die Daten vom Sensor werden zusammen mit einem GPS-Punkt gespeichert, so dass der Wert nur benötigt wird, wenn der GPS-Punkt aktualisiert wird.Android Accessing Accelerometer: Gibt immer 0 als Wert
Wenn ich den angehängten Code verwende, sind die Werte immer Null. API Ebene 8 Berechtigungen: Internet, Fein Ort Testing Device: Galaxy S (i9000), Nexus One
Irgendwelche Vorschläge? Ich stecke an diesem Punkt fest.
Mit freundlichen Grüßen aus Deutschland, Pascal
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
public class AccelerometerService extends Activity{
AccelerometerData accelerometerData;
private SensorManager mSensorManager;
private float x,y,z;
private class AccelerometerData implements SensorEventListener{
public void onSensorChanged(SensorEvent event) {
x = event.values[0];
y = event.values[1];
z = event.values[2];
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(accelerometerData,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onStop() {
mSensorManager.unregisterListener(accelerometerData);
super.onStop();
}
public String getSensorString()
{
return ("X: " + x+"m/s, Y: "+ y +"m/s, Z: "+ z +"m/s");
}
}
Ich bin Entschuldigung, ich bin ein echter Noob. Also um zu sehen, ob ich das richtig gemacht habe, sollte ich wie oben initialisieren und "AccelerometerData accelerometerData = new AccelerometerData();" zu meiner Oncreate-Methode hinzufügen? Thx für Ihre beeindruckende schnelle Antwort, Pascal – Rotesmofa
James war schneller als ich, löschte meine doppelte Antwort. Sie sollten "accelerometerData = new AccelerometerData();" zur onCreate-Methode hinzufügen. Ich denke auch, dass es besser wäre, den Listener in onResume/onPause statt onCreate/onStop zu registrieren/abzumelden. – ketorin
thx für die Hilfe, ich habe es jetzt funktioniert :) – Rotesmofa