Beschleunigungssensor

M

manu

Erfahrenes Mitglied
Threadstarter
Hallo,

ich versuche schon eine Weile den Beschleunigungssensor auszulesen.
Bis jetzt erhalte ich aber immer die Werte vom Lagesensor.

Hat einer für mich einen Tipp, wie man den ausliest?


Gruß Manu
 
M

Markus

Gewerbliches Mitglied
Ich mach das so (es muss nicht unbedingt SENSOR_ALL sein):

...
SensorManager sensor = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor.registerListener(this, SensorManager.SENSOR_ALL, SensorManager.SENSOR_DELAY_GAME);
...

und

public void onSensorChanged(int sensor, float[] values) {
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
float x = values[0];
float y = values[1];
float z = values[2];
...
} else if (sensor == SensorManager.SENSOR_ORIENTATION) {
float x = values[0];
float y = values[1];
float z = values[2];
...
} else {
...
}
}
 
M

manu

Erfahrenes Mitglied
Threadstarter
Danke, das muss ich bei Gelegenheit mal testen.
Ich hatte in Erinnerung, dass ich das so auch probiert habe.
 
C

Centin

Neues Mitglied
Tach,
hab seit kurzem damit begonnen mit dem G1 zu experimentieren und suche ein Code-Besipiel zum Beschleunigungs/Lagesensor. So dass die aktuellen werte einfach in einem TextView angezeigt werden. Also der Code oben sieht schon gut aus, ist aber leider nicht vollständig könntet ihr die restlichen Zeilen oder einen Link zu einem guten Beispiel posten? Bin erst seit kurzem bei Java dabei hatte vorher nur mit C++ zutun und die DOku auf Android.com ist nicht wirklich hilfreich.:(

Danke im Vorraus!
 
S

swordi

Gewerbliches Mitglied
Markus schrieb:
Ich mach das so (es muss nicht unbedingt SENSOR_ALL sein):

...
SensorManager sensor = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor.registerListener(this, SensorManager.SENSOR_ALL, SensorManager.SENSOR_DELAY_GAME);
...

und

public void onSensorChanged(int sensor, float[] values) {
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
float x = values[0];
float y = values[1];
float z = values[2];
...
} else if (sensor == SensorManager.SENSOR_ORIENTATION) {
float x = values[0];
float y = values[1];
float z = values[2];
...
} else {
...
}
}

ja so funktioniert das bestimmt, aber mit 1.5 ist der sensorlistener deprecated und sensoreventlistener ist neu

gibts dazu irgendwelche infos dazu?
 
P

prihei

Neues Mitglied
hier ein kleiner Ausschnitt meinerseits:

Erstmal der SensorEventListener:
Code:
private class DeviceSensor implements SensorEventListener {
...
}
Dann nur noch registrieren:
Code:
deviceSensor = new DeviceSensor();

SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
      mSensorManager.registerListener(deviceSensor,
                                      mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                                      SensorManager.SENSOR_DELAY_NORMAL);
      mSensorManager.registerListener(deviceSensor,
                                      mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
                                      SensorManager.SENSOR_DELAY_FASTEST);
 
S

swordi

Gewerbliches Mitglied
danke für deinen code

ich werde ihn mal probieren bei mir zu integrieren.

geht das bei dir im emulator auch? hab etwas gelesen, dass 1.5 probleme mit dem sensormanager hat??
 
Oben Unten