ich war hier: TutoriumMobileEingebetteteIntelligenzSS18

Version [91305]

Dies ist eine alte Version von TutoriumMobileEingebetteteIntelligenzSS18 erstellt von ClaudiaMichel am 2018-09-19 15:52:06.

 

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 verf

Die 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.

text

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



 (image: https://i.imgur.com/5RGMxJh.png)























Bitte ergänzen: Abb.: Titel der Abbildung, Quelle, Datum

Sorry, a file named Quellcodes-Gesten-Aufzeichnen.zip does not exist.

Quellcodes/Gesten aufzeichnen:
 (image: https://ife.erdaxo.de/uploads/TutoriumMobileEingebetteteIntelligenzSS18/anweisungen.png)




Bitte ergänzen: Abb.: Titel der Abbildung, Quelle, Datum


Z. Literaturhinweise:

https://developer.android.com/reference/android/hardware/SensorEvent
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki