Version [91301]
Dies ist eine alte Version von TutoriumMobileEingebetteteIntelligenzSS18 erstellt von ClaudiaMichel am 2018-09-19 15:47:33.
Tutorium Mobile und Eingebettete Intelligenz
In Bearbeitung
Tutor: Timmy Schieck
Ziel des Tutoriums:
Es wird eine App fuer Android erstellt, die in der Lage ist, in die Luft "gemalte" Gesten zu erkennen. z.B. Kreise, Linien, Quadrate, etc.
Adressaten des Lehrangebotes:
Studenten des Studienganges "Mobile Computing"
A. Datengewinnung/-erhebung:
Die meisten Android-Smartphones verfDie meisten Android-Smartphones verfügen über mindestens drei Sensoren zur Bewegungserkennung:
- den (linearen) Beschleunigungssensor,
- das Gyroskop sowie
- den Schwerkraftsensor.
Diese werden hier genutzt, um die Datenbasis anzulegen und später die zu erkennenden Gesten aufzuzeichnen bzw. die Gestenerkennung selbst durchzuführen.
Genutztes Koordinatensystem
Das Koordinatensystem ist relativ zum Bildschirm des Telefons in seiner Standardausrichtung definiert.
Die Achsen werden nicht vertauscht, wenn sich die Bildschirmausrichtung des Geräts ändert.
Die X-Achse ist horizontal und zeigt nach rechts, die Y-Achse ist vertikal und zeigt nach oben und die
Z-Achse zeigt zur Außenseite der Vorderseite des Bildschirms. In diesem System haben Koordinaten hinter dem Bildschirm negative Z-Werte.
Achsen eines Smartphones: https://developer.android.com/images/axis_device.png
Funktionsweise der App
Auf der linken Seite wird die Geste eingestellt die aufgezeichnet wird.
Danach wird der Knopf in der Mitte unten gerückt gehalten und die Geste aufgezeichnet. Als letztes wird der Knopf wieder losgelassen.
Danach schreibt die App selbständig die Dateien mit den entsprechenden Sensorwerten in den Speicher des Telefons.
Bitte ergänzen: Abb.: Titel der Abbildung, Quelle, Datum
Implementierung
Als erstes schreiben wir die App, die aus den Sensorwerten Listen mit timestamp-value-Paaren erstellt und diese in seperate Dateien schreibt.Es werden csv ("comma seperated value" -> "Komma getrennte Werte") Dateien generiert. Jeweils pro Sensor und Geste, eine Datei.
Der Dateiname wird nach folgendem Schema gebildet:
[Geste].[Zufallszahl].[Sensortyp].csv
Das hat die Funktion, das nicht erst die Datei geöffnet werden muss um zu wissen, welche Werte sie enthält.
Die Zufallszall verhindert (oder macht es zumindest sehr unwahrscheinlich) das man nacharbeiten muss, und Dateien
von Hand umbenennen, falls man Dateien aus mehreren Quellen hat.
In diesen Dateien ist in der ersten Spalte der timestamp (in Nanosekunden) der vom System vergeben wird zu sehen,
in den letzten drei Spalten stehen die Werte (in m/s^2). Je nachdem was für eine Geste aufgezeichnet wurde, können die
Dateien in der Größe variierern.
Damit die App Sensorwerte vom Betriebssystem empfangen kann, wird ein SensorManager genutzt und ein
SensorEventListener (stellt Callback zur Verfügung, das die Sensorwerte vom Betriebssystem entgegenimmt) implementiert.
class MainActivity() : Activity(), SensorEventListener {
var sensor_manager: SensorManager? = null
...und im onCreate() Callback initialisiert.
sensor_manager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
Zusatzlich wird ein Variable deklariert die die Abtastrate der Sensoren festlegt. Sie bieten nur grobe Richtwerte, da sich die in den Smartphones verbauten Sensoren, von Gerät zu Gerät unterscheiden, und sich damit auch die Abtastraten unterscheiden.
val delay = SensorManager.SENSOR_DELAY_FASTEST
Bitte ergänzen: Abb.: Titel der Abbildung, Quelle, Datum
Sorry, a file named Quellcodes-Gesten-Aufzeichnen.zip does not exist.
Gesten aufzeichnen:
File | Last modified | Size |
---|---|---|
1.png | 2023-10-06 18:37 | 17Kb |
2.png | 2023-10-06 18:37 | 51Kb |
3.png | 2023-10-06 18:37 | 290Kb |
4.png | 2023-10-06 18:37 | 116Kb |
5.png | 2023-10-06 18:37 | 18Kb |
6.png | 2023-10-06 18:37 | 148Kb |
7.png | 2023-10-06 18:37 | 79Kb |
activitymain.png | 2023-10-06 18:37 | 1Mb |
anweisungen.png | 2023-10-06 18:37 | 14Kb |
iclauncherbackground.png | 2023-10-06 18:37 | 1Mb |
Z. Literaturhinweise:
https://developer.android.com/reference/android/hardware/SensorEvent