Beschleunigungssensor in separatem Gewinde
Ich speichere Daten vom Beschleunigungssensor in der Datenbank, aber ich möchte dies in einem separaten Thread tun. Ich habe versucht, es im Internet zu suchen, aber die meisten von ihnen verwenden den gleichen Thread. Bitte helfen Sie. Dinge, die ich ausprobiert habe: 1)
SenSorEventListener sel;
Thread A=new Thread(){
public void run()
{
sel=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
double Acceleration,x,y,z;
x=event.values[0];
y=event.values[2];
z=event.values[2];
Acceleration=Math.sqrt(x*x+y*y+z*z);
db.addAccel(Acceleration);
Log.d("MESSAGE","SAVED");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
}
};
A.start();
try {
A.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sm.registerListener(sel,s,1000000);
}
Ich nahm einen SensorEventListener, initialisierte ihn in einem neuen Thread und registrierte ihn dann beim Register Listener.
Ein anderer Ansatz: Ich habe die Accelerometer-Klasse mit der Runnable-Schnittstelle implementiert, alles in Constructor initialisiert, sodass meine run () -Methode leer ist, aber dieser Ansatz erstellt keinen neuen Thread.
Accelerometer(Context con,Database d)
{
sm=(SensorManager)con.getSystemService(Context.SENSOR_SERVICE);
s=sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
sm.registerListener(this,s,1000000);
db=d;
}
void run()
{}
Bitte schlagen Sie mir einen anderen Ansatz vor oder wenn ich in den oben genannten Ansätzen etwas falsch mache.