G
Gast2
Gast
Hallo,
ich habe zwei Klassen.
In der ersten Klasse MainActivity initialisiere ich eine zweite Klasse WaitingForLight.
und starte eine Methode askForLight()
In dieser Klasse befindet sich ein Listener und ein Algorithmus, der irgendwann einen Wert ausspuckt.
Dieser Wert soll dann wieder in der ersten Klasse MainActivity landen.
Ich weiß nicht, wie sich das lösen lässt.
Vorstellen könnte ich mir, dass in der ersten Klasse so was wie ein Listener ist, der auf das Ergebnis von der zweiten Klasse wartet. Aber vermutlich ist das auch recht kompliziert.
Welche Möglichkeiten gibt es und vor allem welche Möglichkeit lässt sich relativ einfach umsetzen?
Danke für Deine Gedanken!
Frank
ich habe zwei Klassen.
In der ersten Klasse MainActivity initialisiere ich eine zweite Klasse WaitingForLight.
Java:
public WaitingForLight wfl;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wfl = new WaitingForLight(this);
wfl.askForLight();
}
@Override
public void onClick(View v) {
wfl.askForLight();
}
In dieser Klasse befindet sich ein Listener und ein Algorithmus, der irgendwann einen Wert ausspuckt.
Dieser Wert soll dann wieder in der ersten Klasse MainActivity landen.
Java:
public class WaitingForLight {
private boolean pause;
private int threshold, ergebnis;
private SensorManager manager;
private Sensor sensorLight;
private SensorEventListener listener;
private Context ctxt;
WaitingForLight(Context ctxtMain) {
this.ctxt = ctxtMain;
threshold = 200;
pause = false;
manager = (SensorManager) this.ctxt.getSystemService(Context.SENSOR_SERVICE);
sensorLight = manager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
public void askForLight() {
pause = false;
listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor1, int accuracy) { }
@Override
public void onSensorChanged(SensorEvent event) {
if (!pause && event.values.length > 0) {
ergebnis = (int) (event.values[0] + 0.5f);
if (ergebnis > threshold) {
// JETZT SOLL DER WERT ergebnis IN DIE AUFRUFENDE KLASSE ZURÜCK
pause = true;
}
}
}
};
manager.registerListener(listener, sensorLight, SensorManager.SENSOR_DELAY_NORMAL);
}
}
Ich weiß nicht, wie sich das lösen lässt.
Vorstellen könnte ich mir, dass in der ersten Klasse so was wie ein Listener ist, der auf das Ergebnis von der zweiten Klasse wartet. Aber vermutlich ist das auch recht kompliziert.
Welche Möglichkeiten gibt es und vor allem welche Möglichkeit lässt sich relativ einfach umsetzen?
Danke für Deine Gedanken!
Frank