ich war hier: TutoriumMobileEingebetteteIntelligenzSS18

Version [91273]

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

 

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 verfuegen über mindestens drei Sensoren zu Bewegungserkennung, den (linearen) Beschleunigungssensor, das Gyroskop und 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.

Unknown action; the action name must not contain special characters.

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

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.
Unknown action; the action name must not contain special characters.Unknown action; the action name must not contain special characters.
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.
Abtastraten
val delay = SensorManager.SENSOR_DELAY_FASTEST


text

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

Z. Literaturhinweise:

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