• Keine Ergebnisse gefunden

Beim Testen der Software mit Unit-Tests wurden, wie beschrieben, selbstgewählte Sensorwerte genutzt, um die Werte des realen Sensors für jeweils den positiven und negativen Fall zu simulieren. Dadurch konnte sichergestellt werden, dass die Geste-nerkennung für diese Werte funktioniert. Demzufolge sollen die manuellen Tests in diesem Abschnitt gewährleisten, dass die tatsächlichen Sensoren und ihre Werte zu einer möglichst häufigen Gestenerkennung in der reellen Ausführung führen.

Beispielanwendung

Zur Veranschaulichung der Gestenerkennung wurde eine kleine App-Komponente mit einer Benutzeroberfläche realisiert. Wie in den vorangegangen Kapiteln beschrieben, stellt die App-Komponente, die Komponente dar, die die Bibliothek einbindet. Zu diesem Zweck registriert sich die Beispielanwendung an das System als BroadcastRe-ceiver für den Broadcast mit dem Intent INTENT_IDENTIFIER. Zusätzlich wird eine Instanz der ServiceFacade-Klasse erstellt, um den MotionDetectionService zu starten und zu stoppen. Abhängig von der erkannten Geste werden die Layout-Elemente für die jeweilige zuletzt erkannte Geste grün gefärbt und die Anzahl der bisherigen Detektionen angezeigt, wie in Abbildung 6.1 und Abbildung 6.2 zu sehen.

Abbildung 6.1.:Detektion der Receive-Geste Beispiel-App (Ei-gene Darstellung)

Abbildung 6.2.:Detektion der Send-Geste Beispiel-App (Ei-gene Darstellung)

Sensordaten und Arbeitsspeicher

Für eine erfolgreiche Gestenerkennung ist die schnelle Aktualisierung der Sensorwerte bzw. Erhalten von neuen SensorEvents essentiell. Da die Häufigkeit der Sensorwerte, die man pro Sekunde erhält, vom System abhängt, wurde in diesem Abschnitt der Ar-beit überprüft, wie stark die Anzahl neuer SensorEvents nach ArAr-beitsspeicher variiert.

Hierzu wurde beim Start des Services jeweils eine Zählvariable für jeden Sensorty-pen angelegt, die nach Erhalt eines SensorEvents mit dem erwünschten SensortySensorty-pen hochzählt. Das Vorangegangene wurde unter folgenden Umständen genutzt und aus-gewertet:

1. Die Beispielanwendung ist die einzige laufende Applikation. In diesem Fall standen 2 von 4 GB Arbeitsspeicher zur Verfügung frei.1

2. Die Beispielanwendung läuft neben einer Vielzahl von anderen Anwendungen.

In diesem Fall standen 0,5 von 4 GB Arbeitsspeicher zur Verfügung frei.

Dieses Verfahren wurde jeweils für etwa zehn Sekunden dreimal wiederholt:

• bei vollständig aufgeladenem Akku des Mobilgerätes,

• bei halb aufgeladenem Akku des Mobilgerätes,

• bei gering aufgeladenem Akku des Mobilgerätes.

Das Ergebnis: Die Anzahl der Sensordaten, die das System liefert, variierte für et-wa 10 Sekunden zwischen 170 bis 180 Updates pro Sekunde. Das Interval SEN-SOR_DELAY_UI sieht eine Update-Anzahl von etwa 17 pro Sekunde vor, wie aus Tabelle 4.1 zu entnehmen ist. Somit kann als Ergebnis festgehalten werden, dass die Häufigkeit der Sensor-Updates sich wie erwünscht verhält, unabhängig vom Ar-beitsspeicher und Akkustand.

Ergebnisse der manuellen Tests

Um eine Kenngröße zur Häufigkeit der Gestenerkennung ermitteln zu können, wurde jede Geste 50 Mal unter Berücksichtigung der erwünschten Geschwindigkeit der Aus-führung durchgeführt und protokolliert, wie oft die Geste detektiert werden konnte.

Dabei wurden 25 Ausführungen mit der linken und 25 Ausführungen mit der rechten Hand getätigt.

Die folgenden Tabellen bieten einen Überblick über die Ergebnisse:

Zur Ermittlung einer endgültigen Wahrscheinlichkeitsgröße, die den Grad der Zuverläs-sigkeit der Gestenerkennung abbildet, wurde aus den Ergebnissen der Tabelle 6.2 und Tabelle 6.4 der Mittelwert berechnet. Somit kann für die manuellen Tests festgehalten werden, dass alle Gesten zu etwa 80 oder mehr Prozent erkannt werden können. Die Send-Geste konnte mit 96 Prozent am häufigsten erkannt werden. Wohingegen die Receive-Geste die niedrigste Wahrscheinlichkeit mit 80 Prozent aufweist. Die Drop-und Scoop-Gesten wurden in etwa zu 82 Drop-und zu 86 Prozent detektiert.

1Testgerät: Samsung S8+.

Tabelle 6.2.:Ergebnisse der manuellen Tests mit linker Hand

Geste Durchführungen Detektion Häufigkeit in %

MotionType.SEND 25 24 96

MotionType.RECEIVE 25 20 80

MotionType.DROP 25 21 84

MotionType.SCOOP 25 22 88

Tabelle 6.3.:Ergebnisse der manuellen Tests mit rechter Hand

Geste Durchführungen Detektion Häufigkeit in %

MotionType.SEND 25 24 96

MotionType.RECEIVE 25 20 80

MotionType.DROP 25 20 80

MotionType.SCOOP 25 21 84

Um einer Verfälschung der Ergebnisse vorzubeugen, wurden die manuellen Tests mithilfe einer zusätzlichen neutralen Testperson wiederholt. Grund für eine Verfäl-schung könnte darin liegen, dass die Person, die die Software implementiert hat, dazu neigt, besonders auf eine korrekte Ausführung zu achten, wobei außenstehende Personen die in der Regel nicht tun. Da sich die Gestenerkennung für links- und rechtshändige Ausführungen prozentual nahezu gleich verhält, wurden die manuellen Tests mit der Testperson nur mit einer Hand durchgeführt. Folgendes kann als Ergebnis festgehalten werden:

Tabelle 6.4.:Ergebnisse der manuellen Tests der Testperson

Geste Durchführungen Detektion Häufigkeit in %

MotionType.SEND 50 47 94

MotionType.RECEIVE 50 31 62

MotionType.DROP 50 40 80

MotionType.SCOOP 50 41 82

Es fällt auf, dass die Zuverlässigkeit bei der Ausführung durch Dritte etwas abnimmt.

Der Wert für die Receive-Geste fiel besonders stark von 80 auf 62 Prozent. Auf Grundla-ge der ErGrundla-gebnisse der zwei Testpersonen erGrundla-geben sich neue Kenngrößen zur Häufigkeit der Gestenerkennung:

• MotionType.SEND: 95%

• MotionType.RECEIVE: 71%

• MotionType.SEND: 81%

• MotionType.SEND: 84%.

In diesem Kapitel wird die Arbeit abschließend zusammengefasst. Die erzielten Ergeb-nisse werden kritisch betrachtet, um im Anschluss einen Ausblick auf die Weiterent-wicklung der Bibliothek zu geben.

7.1. Zusammenfassung

Ziel der vorliegenden Arbeit war es, eine Bibliothek zu erstellen, die die vier grundle-genden Gesten SEND, RECEIVE, DROP und SCOOP zuverlässig erkennt. Zu diesem Zweck wurde ein Android-Foreground-Service implementiert, der erfolgreiche Er-kennungen als Broadcast an andere Komponenten und Anwendungen sendet. Die Bibliothek sollte zudem leicht erweiterbar und austauschbar sein.

Dafür wurden nach einer kurzen Einleitung die wichtigsten Grundlagen im Bereich der Sensorik und verwendeter Sensoren im Android-Betriebssystem erläutert. An-schließend wurden die zu detektierenden Gesten in wesentliche Teilgesten unterteilt und technisch definiert. Basierend auf den Teil Entwurf und Konzeption wurde die Bibliothek mithilfe geeigneter Softwareentwicklungsprinzipien implementiert. Durch die Verwendung der ServiceFacade bleibt der grundlegende Kern der Bibliothek vor anderen Komponenten, die diese Bibliothek einbinden, verborgen. Die ServiceFacade ermöglicht ebenfalls das Einbinden der Bibliothek in wenigen Schritten.

Durch den Einsatz von erprobten Design Patterns, wie z.B das Observer Pattern, geeig-neten Interfaces und abstrakten Klassen wurden die Anforderungen der Erweiterbarkeit und Austauschbarkeit optimiert.

Für die Erkennung jeder einzelnen Geste wurden entsprechende Konditionsgrößen statistisch ermittelt. Basierend darauf wurden die Detektor-Klassen implementiert, Probleme aufgezeigt und Lösungswege erläutert.

Die erfolgreich durchgeführten Testszenarien belegen eine grundlegende Funktionsfä-higkeit der Gestenerkennung für sowohl rechts- als auch linkshändige Ausführungen.

Um die Frage beantworten zu können, wie gut die Gestenerkennung tatsächlich funk-tioniert, wurden manuelle Tests durchgeführt und protokolliert.