Vom Lichtsensor Werte erhalten, auch wenn sich die Umgebung nicht ändert?!

  • Antworten:2
Gelöschter Account
  • Forum-Beiträge: 408

06.11.2010, 12:01:58 via Website

Guten Morgen zusammen,

ich habe mich jetzt auch mal ein wenig mit der Materie beschäftigt und gestern eine kleine "App" geschrieben, die die Werte des Lichtsensors meines DHDs ausliest und in einem EditText-Feld ausgibt. Der Sensor wird dabei über die onSensorChange-Methode ausgelesen.
Nun habe ich aber das Problem, dass keine Werte ausgegeben werden, solange sich nach Start der App die Lichtverhältnisse nicht ändern. Da sich ja nichts ändert, kann auch die onSensorChange-Methode nicht aufgerufen werden, logisch.

Nun würde mich interessieren, ob man Intervall-mäßig den Sensor auslesen, oder einen Startwert bekommen kann? Hat jemand eine Idee?

Vielen Dank schonmal ;)

Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

06.11.2010, 12:15:23 via Website

Du könntest, rein theoretisch, den Listener den Du registriert hast gleich wieder de-registrieren und Alarm - manager gesteuert wieder registrieren.

Bei jedem registrieren wird der Sensor Wert dann gezwungener Weise mindestens einmal erneut ausgelesen.

Ich wage allerdings zu behaupten, dass diese Vorgehensweise nicht gerade akkuschonend ist. Warum auslesen wenn sich eh nix geändert hat. Ist wohl eher sinnlos meiner Meinung nach.

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 408

06.11.2010, 12:28:58 via Website

Jörg V.
Du könntest, rein theoretisch, den Listener den Du registriert hast gleich wieder de-registrieren und Alarm - manager gesteuert wieder registrieren.

Bei jedem registrieren wird der Sensor Wert dann gezwungener Weise mindestens einmal erneut ausgelesen.

Ich wage allerdings zu behaupten, dass diese Vorgehensweise nicht gerade akkuschonend ist. Warum auslesen wenn sich eh nix geändert hat. Ist wohl eher sinnlos meiner Meinung nach.

Hm, OK, dann habe ich wahrscheinlich einen Fehler in meiner Logik, denn, wenn du sagst, dass bei jedem registrieren ein Wert geholt wird, müsste der Startwert ja erscheinen. Die SetText-Methode, die in der onSensorChange-Umgebung vorhanden ist wird daher aber nicht berührt. Hier mal mein Code:

1package com.test;
2
3import android.app.Activity;
4import android.hardware.Sensor;
5import android.hardware.SensorEvent;
6import android.hardware.SensorManager;
7import android.hardware.SensorEventListener;
8import android.os.Bundle;
9import android.view.View;
10import android.widget.EditText;
11
12public class Test extends Activity {
13 /** Called when the activity is first created. */
14
15 private SensorManager manager;
16 private SensorEventListener listener;
17 private Sensor sensor;
18
19 @Override
20 public void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.main);
23 manager = (SensorManager) getSystemService(SENSOR_SERVICE);
24 final EditText test = (EditText) findViewById (R.id.et1);
25 listener = new SensorEventListener() {
26 @Override
27 public void onAccuracyChanged(Sensor sensor, int accuracy) {
28 }
29
30 @Override
31 public void onSensorChanged(SensorEvent event) {
32 if(event.values.length > 0) {
33 float light = event.values[0];
34 test.setText(Float.toString(light));
35 }
36 }
37
38 };
39
40 sensor = manager.getDefaultSensor(Sensor.TYPE_LIGHT);
41 if(sensor != null) {
42 manager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
43 } else {
44 test.setText("Kein Sensor gefunden");
45 }

46 }
47
48 @Override
49 protected void onDestroy() {
50 if(sensor != null) {
51 manager.unregisterListener(listener);
52 }
53 super.onDestroy();
54 }
55}

Gehe ich richtig in der Annahme, dass die test.setText-Methode dann auch noch im Bereich der Registrierung (fetter Bereich) vorhanden sein muss? Wie muss sie dann aussehen, denn event.values gibt es in dem Falle ja nicht?

Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln

Antworten