3. Erfassung und Verarbeitung von Sensordaten Lernziele 3. Erfassung und Verarbeitung von Sensordaten Lernziele: Typische in mobilen Geräten enthaltene Sensorarten kennen, Daten von solchen Sensoren empfangen können, Einstellmöglichkeiten für Sensoren kennen und empfangene Sensordaten verarbeiten können. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 94
3. Erfassung und Verarbeitung von Sensordaten Sensoren Sensor Ein Sensor ist ein technisches Bauteil, das bestimmte physikalische Eigenschaften seiner Umgebung quantitativ erfassen kann. Physikalische Eigenschaften werden in ein elektrisches Signal umgewandelt. Abtastung des elektrischen Signals und Erzeugung eines Datenstroms der Messwerte. in der Regel numerische Messwerte Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 95
3. Erfassung und Verarbeitung von Sensordaten Sensoren Arten von Sensoren in mobilen Geräten Beschleunigungssensor Lagesensor (Gyroskop) Lichtsensor Entfernungsmesser (Sonar) Kompass Thermometer Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 96
3. Erfassung und Verarbeitung von Sensordaten Sensoren Manometer, Barometer Lokalisierung (GPS) prinzipiell auch die Kamera Anbindung weiterer Sensoren durch Ad-hoc Netzwerke (z.b. Bluetooth) möglich. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 97
3. Erfassung und Verarbeitung von Sensordaten Sensoren Aktoren Gegenstück zu Sensoren, zur Erzeugung von physikalischen Effekten In mobilen Geräten: Bildschirmanzeige, Views Lautsprecher Vibrator Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 98
Sensor-Manager Klasse android.hardware.sensormanager Schnittstelle zu den Sensoren Eine Referenz auf den Sensor-Manager erhält man durch: SensorManager sensormanager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); API nicht stabil, unbedingt Online-Dokumentation heranziehen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 99
Die Klasse Sensor Klasse android.hardware.sensor definiert Konstanten für Sensorarten verschiedene öffentliche Methoden für Informationen über einen Sensor: Messbereich, Auflösung, Stromverbrauch, etc. public float getmaximumrange () maximum range of the sensor in the sensor s unit. public String getname () name string of the sensor. public float getpower () the power in ma used by this sensor while in use. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 100
public float getresolution () resolution of the sensor in the sensor s unit. public int gettype () generic type of this sensor. public String getvendor () vendor string of this sensor. public int getversion () version of the sensor s module. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 101
Arten von Sensoren definiert in android.hardware.sensor: TYPE ALL alle Sensoren TYPE ACCELEROMETER Beschleunigungssensor in drei Achsen, Einheit m/s 2 TYPE GYROSCOPE Gyroskop Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 102
TYPE LIGHT Lichtsensor, einfallendes Licht in Lux TYPE MAGNETIC FIELD Erdmagnetfeld in drei Achsen, Einheit sind Mikrotesla TYPE ORIENTATION Orientierung des Gerätes in Grad entlang drei Achsen. TYPE PRESSURE Drucksensor TYPE PROXIMITY Entfernungsmessung in Meter Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 103
TYPE TEMPERATURE Temperaturmessung, Celsius Ermittlung aller Sensoren eines Typs: In der Klasse SensorManager Methode: List<Sensor> getsensorlist(int type) Standardsensor eines Typs ermitteln: Sensor getdefaultsensor(int type) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 104
Sensoreigenschaften Genauigkeit Wie hoch ist der mittlere Messfehler? SENSOR STATUS... Änderungsrate Wie häufig können Messwerte aktualisiert werden? SENSOR DELAY... Vordefinierte Konstanten als Werte für beide Eigenschafte Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 105
Genauigkeit Konstanten in der Klasse SensorManager: SENSOR STATUS ACCURACY HIGH Sensor arbeitet mit höchster Genauigkeit. SENSOR STATUS ACCURACY MEDIUM Sensor arbeitet mit mittlerer Genauigkeit, eine Kalibrierung kann die Messgenauigkeit verbessern. SENSOR STATUS ACCURACY LOW Sensor arbeitet mit geringer Genauigkeit, eine Kalibrierung erscheint notwendig. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 106
SENSOR STATUS UNRELIABLE Sensor liefert unzuverlässige Werte, eine Kalibrierung ist notwendig oder es können keine Sensordaten gelesen werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 107
Änderungsrate Konstanten in der Klasse SensorManager: SENSOR DELAY FASTEST höchstmögliche Änderungsrate SENSOR DELAY GAME Änderungsrate geeignet für Spiele SENSOR DELAY NORMAL Standard-Änderungsrate Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 108
SENSOR DELAY UI Änderungsrate geeignet für Benutzerschnittstelle Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 109
Sensordaten empfangen (1) via Schnittstelle android.hardware.sensoreventlistener Achtung: SensorListener ist deprecated! void onsensorchanged (SensorEvent event) Neue Messdaten liegen für einen Sensor vor. Sensor und Werte werden durch ein Objekt der Klasse android.hardware.sensorevent beschrieben. void onaccuracychanged (Sensor sensor, int accuracy) Die Genauigkeit für den Sensor sensor hat sich gändert. accuracy ist der neue Genauigkeitswert. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 110
Sensordaten empfangen (2) Registrierungsmethoden für den SensorEventListener in der Klasse SensorManager: public boolean registerlistener(sensoreventlistener listener, Sensor sensor, int rate) listener erhält von sensor Daten mit Änderungsrate rate Liefert true, wenn der Sensor unterstützt und verfügbar ist. public boolean registerlistener (SensorEventListener listener, Sensor sensor, int rate, Handler handler) wie oben, aber die SensorEvents werden über handler verteilt Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 111
public void unregisterlistener (SensorEventListener listener) listener vo allen Sensoren abmelden public void unregisterlistener (SensorListener listener, Sensor sensor) listener von sensor abmelden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 112
Sensordaten Klasse android.hardware.sensorevent mit public Instanzvariablen: public Sensor sensor Der Sensor, der das Ereigenis ausgelöst hat. public long timestamp Zeit (in Nanosekunden?), zu der das Ereignis eintrat. public final float[] values Werte für die Sensoren, hängen vom Sensortyp ab. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 113
public int accuracy Genauigkeit Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 114
Beschleunigungssensor Beschleunigung entspricht der Änderung der Geschwindigkeit pro Zeiteinheit. Erste Ableitung der Funktion v(t). Beschleunigungsmesser können nicht zwischen Beschleunigung durch Gravitation oder durch Bewegung unterscheiden. Konsequenz: Beschleunigung von 9.8m/s 2 im Ruhezustand in Richtung der y- Achse (vertikal). Konstante für Erdbeschleunigung: SensorManager.STANDARD GRAVITY Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 115
Messung der Beschleunigung erfolgt für drei Achsen: lateral: rechts (+) / links ( ) x-achse vertikal: hoch (+) / runter ( ) y-achse longitudinal: näher (+) / weiter ( ) z-achse Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 116
Zugriff auf die Werte im Feld values mit folgenden Konstanten der Klasse SensorManager: DATA X DATA Y DATA Z Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 117
Lagesensor (Orientation) Roll, Rotation um die x-achse Pitch, Rotation um die y-achse Heading, Bearing, Rotation um die z- Achse Heading alleine stellt einen Kompass dar. Kombination aus Kompass (Heading) und Beschleunigungssensor um Pitch und Roll zu ermitteln. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 09/10 118