Ich konnte das Problem mittlerweile selber lösen.
Ich hatte vergessen, das Accelator Event zu regestrieren.
Ich konnte das Problem mittlerweile selber lösen.
Ich hatte vergessen, das Accelator Event zu regestrieren.
Hallo,
ich habe leider über Google keine Lösung für mein Problem gefunden, deshalb wollte ich es mal hier probieren. Ich möchte die Sensordaten (Accelerometer) ausgeben. Ich habe mir dafür eine Klasse "SensorManager" geschrieben, die "SensorEventListener" implementiert. Leider scheitert, dass ganze schon daran, dass "onSensorChanged" nicht aufgerufen wird.
Das ist meine Klasse "SensorManager":
public class SensorManager implements SensorEventListener {
private MainActivity main;
private final String TAG = "SensorManager";
private float[] sensorData;
public SensorManager(MainActivity main)
{
this.main = main;
}
@Override
public void onSensorChanged(SensorEvent event) {
Log.d(TAG, "onSensorChanged is called");
//Abfrage ob neue Accelometerdaten anliegen
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
sensorData = event.values.clone();
Log.d(TAG, "New Sensor Data");
Log.d(TAG, "X:" + sensorData[0]);
Log.d(TAG, "Y:" + sensorData[1]);
Log.d(TAG, "Z:" + sensorData[2]);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Alles anzeigen
Ich erzeuge mir ein SensorManager Objekt in der "onCreate" Methode der MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.....
sensorManager = new SensorManager(this);
}
Leider scheint "Log.d(TAG, "onSensorChanged is called");" nie aufgerufen zu werden. Selbst, wenn kein Accelator Sensor vorhanden ist müsste ja zumindest die Zeile aufgerufen werden.
Ich würde mich freuen, wenn jemand eine Idee hat. Probiere da jetzt schon eine Weile rum und weiß nicht wo der Wurm steckt. Ich hatte auch schon zum Test probiert "MainActitvity" das Interface implementieren zu lassen aber auch da wurde, das Ändern der Sensordaten nicht regestiert.
Falls es noch wichtig ist:
Ich arbeite unter AndroidStudio und habe das Handy zum Debuggen per Kabel mit dem PC verbunden. Das Handy ist ein "Samsung Galaxy S5 Mini" mit Android 4.4.2.
In der Gradle Datei steht:
minSdkVersion 15
targetSdkVersion 21
Edit: Testweise habe ich mal folgende Test App geschrieben:
public class MainActivity extends Activity implements SensorEventListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onSensorChanged(SensorEvent event) {
Log.d("Test", "SensorChange");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Alles anzeigen
Das Ergebnis ist wieder das selbe "Log.d("Test", "SensorChange");" wird leider nicht in der Konsole ausgegeben