BIOcomfort Health Assistant for Android Plattform

Transcription

BIOcomfort Health Assistant for Android Plattform
Fakultät für Elektrotechnik und Informationstechnik
Fachgebiet Verteilte Multimodale Informationsverarbeitung
Prof. Dr. Matthias Kranz
BIOcomfort Health Assistant for Android
Plattform
Andreas Wallner
Studienarbeit
Verfasser:
Andreas Wallner
Anschrift:
Matrikelnummer:
Professor:
Prof. Dr. Matthias Kranz
Betreuer:
Dipl.-Ing. Luis Roalter
Beginn:
01.10.2011
Abgabe:
31.03.2012
Kurzfassung
Diese Studienarbeit befasst sich mit der Untersuchung verschiedener mobiler Health Manager Systeme. Ein solches System ermöglicht es dem Benutzer, Vitaldaten von bevorzugt mobilen Sensoren
aufzunehmen. Dabei liegt der Schwerpunkt auf den Systemen, welche möglichst mit existierenden Smartphones funktionieren. Auf dem Markt exisitieren bereits verschiedene Sensoren, von
denen Vitaldaten digital abrufbar sind. Diese Sensoren sind jedoch nicht durchgehend kompatibel
und verwenden verschiedenste Technologien und Übertragungsstandards. Als Schnittstelle zum
Datenempfang am Endgerät werden dabei oft USB-Dongles eingesetzt.
Das erste Ziel dieser Arbeit liegt darin, prorietäre Hardware in Form von USB-Dongles über
die meist am Smartphone vorhandene USB-Schnittstelle (über OTG) anzubinden. Damit ist es
möglich existierende Systeme auch für Smartphones zu verwenden.
Ein mobiles Health Manager System sollte sich deshalb nicht auf einzelne Standards und Hersteller
beschränken, sondern offen, flexibel und erweiterbar sein. Außerdem sollen empfangene Vitaldaten
einfach an andere berechtigte Dienste und Applikationen weitergereicht werden können. Derzeit
vorhandene Systeme erfüllen die genannten Anforderungen nicht vollständig.
In dieser Arbeit wird nun der Biocomfort Health Assistant für Android vorgestellt, welcher versucht
diese Anforderungen zu erfüllen. Da diese Anwendung zum Datenempfang immer verfügbar sein
muss, läuft diese im Hintergrund und besitzt deshalb keine grafische Benutzeroberfläche. Zur
Visualisierung wurde zudem eine Beispiel-Applikation erstellt, welche die empfangenen Vital- und
Gerätedaten darstellen kann.
ii
Abstract
This thesis addresses the examination of various mobile health manager systems. Such a system
enables the user to gather vital data from preferred mobile sensors. Thereby the focus is on systems, which work with existing smartphones. Miscellaneous sensors already exist on the market,
on which vital data can be retrieved digitally. However, those sensors are not throughout compatible und use various technologies and transmission standards. Thereby oftenly USB dongles are
used as interface for receiving data.
The first goal of this thesis lies in linking proprietary hardware in terms of USB dongles to the
mostly available USB port (via OTG). So it is possible to use existing systems also for smartphones.
A mobile health manager system should not be limited to single standards or manufacturers, but
open, flexible and expandable. Besides, it should be possible easily to share received vital data
with other authorized services and applications. Presently available Systems do not completely
fulfill the mentioned specifications.
This thesis introduces the Biocomfort Health Assistant for Android, which attempts to meet
those requirements. Given that the application must be available all the time it is running in the
background and has no graphical user interface. Additionally an application to visualize received
vital and device data was created.
iii
Inhaltsverzeichnis
Inhaltsverzeichnis
iv
1 Einführung
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Healthmanager
3
2.1
Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Vorhandene Softwarelösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2.1
Garmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2.2
Ubiquitous Personal Health Surveillance and Management System . . . .
4
2.2.3
ECG Monitoring System mit mobilem Barcode-Decoder . . . . . . . . . .
5
2.2.4
Blutdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.5
Blutdruck Logbuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.6
WiThings WiScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Biocomfort Health Manager Plattform . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.1
Messgeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.2
Biocomfort Health Manager Software Development Kit . . . . . . . . . .
8
2.3
3 Applikationsentwicklung unter Android
3.1
3.2
3.3
10
Android-Smartphones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.1.1
Das Betriebssystem Android . . . . . . . . . . . . . . . . . . . . . . . .
10
3.1.2
Android-Applikationen
. . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Applikationsspezifische Vorbereitungen am Gerät . . . . . . . . . . . . . . . . .
14
3.2.1
Rooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2.2
Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Geräte- und Applikationssetup . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.1
Gerätesetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.2
Applikationssetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4 Android Implementierung
4.1
20
Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
iv
20
v
INHALTSVERZEICHNIS
4.2
4.3
4.4
Implementierung Biocomfort Health Assistant für Android . . . . . . . . . . . .
21
4.2.1
Service Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2.2
GUI Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.2.3
MockSDK Gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.3.1
Android Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.3.2
Biocomfort Resourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
Beschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.4.1
Stabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.4.2
Mobilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.4.3
Funktionsumfang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.4.4
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.4.5
Bediencomfort und Akzeptanz . . . . . . . . . . . . . . . . . . . . . . .
33
5 Zusammenfassung und Ausblick
34
5.1
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
5.2
Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
5.2.1
Hardware
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
5.2.2
Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Abbildungsverzeichnis
39
Literaturverzeichnis
40
Kapitel 1
Einführung
Die Arbeit wurde im Fachgebiet Verteilte Multimodale Informationsverarbeitung (VMI) der Technischen Universität München verfasst. Sie beschäftigt sich mit der Entwicklung eines Health
Manager Systems für die Android Smartphone-Plattform. Dabei werden anfangs vorhandene Implementierungen untersucht.
In dieser Einleitung wird zunächst die Motivation der Arbeit erläutert, danach der Aufbau der
Arbeit angegeben.
1.1 Motivation
Die Überwachung von persönlichen Gesundheitsdaten, wie Blutdruck, Blutzucker und anderen
Vitalwerten im Alltag wird immer häufiger eingesetzt. Besonders aussagekräftig sind Messdaten,
wenn sie regelmäßig, sowie auch langfristig aufgenommen werden. Um solche Messungen zu
verwalten, kann ein Rechner mit einer entsprechender Software verwendet werden, der die Daten
speichert und bei Bedarf weitergibt.
Hier ist es praktisch, statt eines Personal Computers (PC) oder Laptops ein Smartphone, wie z.B.
ein Android-Mobiltelefon zu verwenden. Mobiltelefone sind im Idealfall immer für den Benutzer
verfügbar, deshalb kann durch Erinnerungsfunktionen die regelmäßige Vitalwertsmessung unterstützt werden. Dies ermöglicht es die gemessenen Daten sofort zu archivieren und visualisieren.
Da Smartphones über eine permanente Internetverbindung verfügen, können die gemessenen Daten außerdem standortunabhängig an Sachverständige verschickt werden. Das hat z.B. am Telefon
den Vorteil, sofort unabhängige Meinungen unter Berücksichtigung eines Werteverlaufs zu erhalten oder Hilfe verständigen zu können. Auch für ältere oder pflegenbedürftige Menschen ist eine
derartige Datenaufnahme per Mobiltelefon eigenständig durchführbar. Bei Problemen kann die
Bedienung durch Verwandte oder Pfleger unterstützt werden.
Ein weiterer Vorteil der Messung am Smartphone ist die ständige Präsenz der Gesundheitsdaten,
die gesundheitswirksame Aspekte wie z.B. sportliche Betätigung oder gesunde Ernährung sichtbar
1
Kapitel 1 Einführung
2
machen können. Außerdem ist es möglich, Daten gezielt mit einem Mobile Personal Trainer zu
teilen, um Trainingseinheiten gezielt auf persönliche Sequenzen abzustimmen. Somit können z.B.
bei zu hohem Blutdruck entsprechende Trainings empfohlen oder bei schlechten Blutzuckerwerten
passende Ernährungstips gegeben werden. Eine ständige Erinnerung kann das Gesundheitsbewusstsein im Positiven beeinflussen, Erfolge und Misserfolge eine motvierende Wirkung erzeugen.
Dies kann durch den Vergleich mit alten Messdaten oder auch mobil mit anderen Benutzern
erfolgen, was somit auch einen sozialen Aspekt bieten kann.
Beim mobilen Einsatz ist nun eine drahtlose Übertragung der Messdaten sinnvoll. Smartphones
besitzen intern diverse Schnittstellen zur Drahtloskommunikation mit mobilen Sensoren. Aufgebaut wird eine Verbindung oft über WLAN, Bluetooth und Infrarot, außerdem werden teilweise
auch proprietäre Standards wie ANT/ANT+ unterstützt. Um Schnittstellen verwenden zu können, die vom Chip nicht direkt unterstützt werden, können diese per USB-Anschluss nachgerüstet
werden. Um USB-Peripheriegeräte als USB Slave Geräte verwenden zu können, muss die Firmware
des Telefons mit USB-Anschluss den USB On The Go Modus unterstützen. Dies ermöglicht, die
Applikation am Mobiltelefon ortsunabhängig zu nutzen.
1.2 Aufbau der Arbeit
Die Arbeit beginnt mit der Analyse aktueller Health Manager Systeme. Dabei werden sowohl
Geräte als auch bestehende Softwaresysteme erläutert. Außerdem wird das Biocomfort Health
Manager SDK vorgestellt.
In Kapitel 3 wird zunächst der Aufbau des Android-Systems und dessen Applikationen erklärt.
Dann wird die Konfiguration und Einrichtung des Health Manager Systems erläutert, wozu Änderungen am System vorgenommen wurden.
In Kapitel 4 wird dann die entwickelte Implementierung vorgestellt. Dabei wird deren grundlegender Aufbau, wie auch Besonderheiten beschrieben. Abschließend werden in Kapitel 5 Ergebnisse
zusammengefasst und mögliche Erweiterungen vorgestellt.
Kapitel 2
Healthmanager
Im hektischen Alltag nimmt bei vielen Menschen die persönliche Gesundheit nur noch eine
nachrangige Rolle ein. Bei immer mehr Menschen diagnostiziert der Arzt Berufskrankheiten [1]
und Herzkrankheiten [2]. Eine Überwachung der persönlichen Gesundheit erfolgt oft erst, wenn
schwerwiegende Symptome auftreten. Unter anderem viele Herz- und Zuckerkranke benutzen
deshalb tragbare Sensoren, um gewünschte Werte jederzeit messen zu können. Dabei existiert
jedoch eine große Zahl von Geräten von unterschiedlichen Herstellern. Gemessene Daten sind bei
einer größeren Palette von Sensoren entsprechend verstreut und damit schwierig zu verwalten.
Health Manager Systeme versuchen dieses Problem zu lösen, und bilden somit eine zentrale Instanz für persönliche Gesundheitsdaten. Solche Systeme ermöglichen dem Benutzer, jederzeit
seine Vitalwerte zu überwachen. Dies kann damit sowohl im Krankheitsfall, als auch vorbeugend
erfolgen.
Dabei werden in diesem Kapitel zunächst Eigenschaften von Health Manager Systemen genannt.
Unter Abschnitt 2.2 werden dann vorhandene Softwarelösungen für Health Manager Systeme
erläutert. Zuletzt wird in Abschnitt 2.3 die Biocomfort Health Manager Plattform vorgestellt.
2.1 Eigenschaften
Um persönliche Gesundheitsdaten aufzunehmen, können im privaten Bereich tragbare Sensoren
verwendet werden.
Diese oft sehr günstigen Geräte besitzen meist nur schlechte Darstel-
lungsmöglichkeiten, begrenzten Speicherplatz und keine Sicherung gegen Geräteverlust oder Defekt.
Deshalb ist es wünschenswert, aufgenommene Daten zu einem zentralen Datenspeicher zu transferieren. Der Datentransfer kann kabelgebunden oder drahtlos erfolgen. Diese Rolle nimmt der
sogenannte Health Manager ein, einer auf einem Rechner installierten Software-Platform. Als
ganzheitliches System versucht der Health Manager möglichst alle gesundheitsrelevanten Vital-
3
4
Kapitel 2 Healthmanager
werte zu erfassen. Dies hat den Vorteil, dass eventuelle Parallelen zwischen verschiedene Werten
erkannt werden können. Außerdem kann auch der Messwertverlauf über kürzere oder längere
Zeiträume dargestellt werden. Dieser ist meist wichtiger als Einzelwerte.
Einem Datenverlust kann durch Synchronisation mit Onlinediensten vorgebeugt werden. Dies
hat außerdem den Vorteil, dass Daten von überall abrufbar sind. Da so gemessene Daten leicht
an andere Instanzen, also z.B. Ärzte oder Therapeuten, weitergegeben werden können, ist eine
deratige Datenaufnahme Grundlage für Telemedizin. Im Folgenden werden zunächst existierende
Lösungen beschrieben, dann die Biocomfort Health Manager Plattform vorgestellt.
2.2 Vorhandene Softwarelösungen
Sowohl für Smartphone als auch am PC existiert bereits eine sehr große Zahl von Health Manager Applikationen. Im folgenden werden einige ausgewählte unter Android lauffähige Systeme
vorgestellt und deren Merkmale genannt.
2.2.1 Garmin
Die Trainingsdaten- und Healthmanagerplattform Garmin Connect ist auf Fitnesstraining
fokussiert.
Die Daten werden vom jeweiligen Fitness- oder Medizinmessgerät hochgeladen
und online gespeichert.
Hier können per Webinterface die Daten graphisch analysiert und
Trainingspläne erstellt werden. Geplant werden können auch Lauf- oder Fahrradstrecken, sowie
Trainingsziele und andere Aktivitäten. Momentan existieren diverse Trainingsgeräte, sowie als
medizinisches Messgerät eine Waage. Außer durch hochladen können Vitalwerte auch manuell
eingegeben werden. Mit Garmin Fit existiert auch eine Applikation für Android, die Daten von
Garmin Connect anzeigen kann.
2.2.2 Ubiquitous Personal Health Surveillance and Management System
Das Ubiquitous Personal Health Surveillance and Management System
[3] ist ein
Healthmanagement-System für Android-Mobilgeräte, das Gesundheitsdaten von drahtlosen
Sensoren empfängt. Dies erfolgt über einen ZigBee-Empfänger, der entweder über USB oder
Bluetooth die Daten an das Smartphone weiterleitet.
Die empfangenen Daten werden dabei verschlüsselt über die Internetverbindung des Smartphones
zu einem zentralen Datenspeicher übertragen.
Um die gespeicherten Serverdaten zu teilen,
kann man Berechtigungen an zugelassene Personen wie Ärzte, Verwandte, Freunde und Pfleger
vergeben. Außerdem werden bei Überschreitung gesundheitskritischer Grenzwerte automatisch
Alarmmeldungen versandt, versehen mit entsprechenden Standortdaten des Smartphones.
Kapitel 2 Healthmanager
5
Als systemkompatible Sensoren werden verschiedene gewerblich erhältliche Sensoren genannt.
Das sind sowohl ein Sensor für Elektrokardiogramme, Elektromyographien und Elektroenzephalografien, die Aktivität von Herz, Gehirn und Muskeln messen. Außerdem kann ein Blutzucker-,
Blutdruck- sowie ein Atmungssensor verwendet werden.
Auf dem Smartphone besteht keine Möglichkeit zur Visualisierung der Daten, dies geschieht dann
am Rechner, der UPHSM Agent dient lediglich zur Datenaufnahme und Datenübergabe. Außerdem ist eine Weiterleitung der Vitaldaten an kompatible Applikationen direkt am Smartphone so
nicht vorgesehen. Das UPHSM ist somit vornehmlich an pflegebedürftige, chronisch Kranke und
Senioren gerichtet.
2.2.3 ECG Monitoring System mit mobilem Barcode-Decoder
Abbildung 2.1: ECG Monitoring Applikation [4]
Weiterhin bieten P. Cheng und W. Chung [4] ein Ubiquitous Healthcare System für die Android
Plattform an. Das System fokussiert sich auf die Aufnahme und Analyse elekotrokardiographischer
Daten unter der Verwendung eines Wireless Sensor Networks (WSN).
Der im Brustgürtel des Health Shirt enthaltene ECG-Sensor überträgt die Daten drahtlos unter
Verwendung des Standard IEEE 802.15.4. Die Empfangsstation am Mobiltelefon ist als Wireless
Dongle ausgeführt und wird über ein serielles RS-232 Communication Interface verbunden.
In einer grafischen Android-Anwendung werden die empfangenen Messdaten, wie in Abbildung 2.1
zu sehen, angezeigt. Die Übertragung und Anzeige geschieht in Echtzeit, außerdem kann zwischen
bloßer Darstellung der Wellenform und Datenanalyse gewählt werden.
Das System bietet weiterhin mit der Personalied Medicine Care Assistance einen personalisierten
QR-Code Scanner speziell für Medikationen an. Entsprechend an der Medikation angebrachte
Codes kann man dabei über die im Mobiltelefon integrierte Kamera dekodieren und somit identifizieren. Durch Verlinkung auf die entsprechende Url werden auch nichtvisuelle Inhalte wie
Kapitel 2 Healthmanager
6
Audiodateien dargestellt. Dies kann eine hilfreiche Stütze für Blinde oder visuell eingeschränkte
Menschen sein.
Mit dem ECG als derzeit einzigem Sensor ist das System vornehmlich zur Vorbeugung von
Herzkrankheiten und für chronisch Kranke interessant. Um ein ganzheitlicheres System zu bieten,
sollten noch weitere Sensoren verfügbar gemacht werden.
2.2.4 Blutdruck
Die Applikation Blutdruck [5] dient vornehmlich der Visualisierung und Speicherung von Blutdruckwerten.
Dabei müssen gemessene Daten manuell am Smartphone eingegeben werden.
Berichte können im Tabellenformat via Email an den Hausarzt übermittelt werden. Außerdem
ist es mit dieser Applikation möglich die Daten statistisch auszuwerten. Zusätzlich existiert eine
Erinnerungsfunktion, die regelmäßige Messungen unterstützt. Die Applikation ist dabei jeweils
als Lite- und Vollversion erhältlich. Ein Funktion zur direkten Datenaufnahme von drahtlosen
Sensoren ist nicht vorhanden.
2.2.5 Blutdruck Logbuch
Ähnlich wie die Blutdruck-Applikation Blutdruck aus Abschnitt 2.2.4 müssen auch im BlutdruckLogbuch [6] Daten manuell eingegeben werden. Bei einer Messung werden dabei neben Messdaten
und Messzeit auch der Messort abgespeichert. Außerdem ist es auch möglich Herzfrequenz und
Gewicht hinzuzufügen. Die Datenexportfunktion unterstützt verschiedene Formate und kann zur
Darstellung der Vitaldaten in Fremdprogrammen genutzt werden. Eine kostenpflichtige Pro Version bietet zusätzlich weitere Analysetools für die Messdaten.
2.2.6 WiThings WiScale
Die Applikation WiThings WiScale [7] ermöglicht es, Vitaldaten einer Personenwaage zu empfangen und darzustellen. Bei der Messung wird dabei auch das Verhältnis zwischen Fett- und
Muskelmasse bestimmt. Dabei werden der Body Mass Index (BMI) berechnet und Orientierungsbereiche angezeigt. Die Messwerte werden unter Nutzung von IEEE 802.11b/g per Wlan übertragen. Die Waage beherrscht die Verschlüsselungsmethoden WEP, WPA und WPA2-personal.
Nach der Speicherung am Smartphone können die Daten entweder über eine Website oder direkt
auf dem Onlinedienst Twitter veröffentlicht werden. Neben der Android-Applikation existiert auch
entsprechende Software für Mac, PC, iPhone oder iPad.
7
Kapitel 2 Healthmanager
2.3 Biocomfort Health Manager Plattform
Nach den bisher genannten Health Manager Lösungen wird nun auf die Biocomfort Health Manager Plattform eingegangen. Biocomfort bietet mit der Health Manager Plattform ein umfassendes
System zur Erfassung von Gesundheitsdaten an. Dieses besteht aus einer Familie von Messgeräten
zur Aufnahme und Softwareprogrammen- und Diensten zur weiteren Verarbeitung der medizinischen Messdaten. Zur drahtlosen Datenübertragung mit dem IEEE 802.15.4 Standard wird ein
Wireless Gateway genutzt.
Biocomfort bietet dabei im Gegensatz zu allen anderen Lösungen offene Programmierschnittstellen
an. Mit diesen Programmierschnittstellen, dem Biocomfort Health Manager SDK, können variabel
Benutzerprogramme für verschiedene Plattformen erstellt werden. Dieses SDK wurde bei der
Entwicklung des Biocomfort Health Assistant für Android genutzt.
2.3.1 Messgeräte
Abbildung 2.2: Wireless USB-Dongle zum mobilen Datenempfang, Blutdruckmessgerät zur Messung am Handgelenk, Blutzuckermessgerät mit mitgelieferter Einstichhilfe zur hygienischen Messung, sowie Diagnosewaage zur Bioelektrischen Impedanzanalyse
Zur Messung von Vitaldaten sind unter der Biocomfort Health Manager Plattform verschiedene
Mobilsensoren zur Datenaufnahme verfügbar.
Dies sind derzeit sowohl ein Blutdruck- und
Blutzuckermessgerät, sowie eine Diagnosewaage zur Bioelektrischen Impedanzanalyse. Den Messgeräten liegt ein einheitliches Bedienkonzept zugrunde, das die Bedienung für den Erstbenutzer
vereinfacht. Alle Geräte besitzen ein LCD-Display zur Darstellung von Geräte-, Mess- und Benutzerdaten. Messdaten können dort einzeln oder als Durchschnittswert für 7, 14, 21 oder 28 Tage
dargestellt werden. Bei überhöhten Werten werden nach der Messung Warnungen am jeweiligen
Messgerät ausgegeben. Zur Verwaltung von Messwerten für verschiedene Personen können bis zu
8 verschiedene Benutzerprofile auf den Geräten erstellt werden. Die Messwerte werden jeweils bei
der Messung mit einem Zeitstempel und entsprechender Benutzernummer versehen.
8
Kapitel 2 Healthmanager
Blutdruckmessgerät
Die Blutdruckmessung mit dem tenso-comfort Blutdruckmessgerät erfolgt im oszillometrischen
Messverfahren am Handgelenk. Dabei pumpt das Gerät bei der Messung automatisch Luft zu
oder ab. Der intere Messwertspeicher kann mehr als 112 Messungen abspeichern. Ein einzelner
Messwert besteht dabei (neben Zeitstempel und Benutzernummer) je aus systolischem Blutdruck,
diastolischem Blutdruck sowie dem gemessenen Puls. Bald ist alternativ auch ein Sensor zur
Blutdruckmessung am Oberarm erhältlich.
Blutzuckermessgerät
Das gluco-comfort Blutzuckermessgerät bestimmt den quantitativen Blutzuckerwert im amperometrischen Messverfahren.
Zur hygienischen Gewinnung eines Blutstropfens ist neben dem
eigentlichen Messgerät eine Stechhilfe mit austauschbaren Einstichnadeln vorhanden. Die Messung
erfolgt durch Einführung von Messstreifen und dauert etwa 10 Sekunden. Der interne Messwertspeicher von gluco-comfort reicht für 122 Messungen.
Diagnosewaage
Die scaleo-comfort Diagnosewaage nimmt bei der Messung neben dem Gewicht weitere Vitalwerte auf. In der Bioelektrischen Impedanzanalyse werden über den Wiederstandswert Körperfett,
Körperwasser und Muskelmasse bestimmt. Diese sind für die Ermittlung eines aussagekräftigeren
Gewichtswertes nützlich, da z.B. durch Wasseraufnahme bzw. Abgabe die Körpermasse verfälscht
wird. Gespeichert werden können bis zu 44 Messungen, der Messbereich bewegt sich zwischen 10
und 150 kg.
2.3.2 Biocomfort Health Manager Software Development Kit
Für vergleichbare Peripheriegeräte mit Softwareanbindung, wie die drahtlosen Messgeräte von
Biocomfort, wird zur Datenaufnahme und Kommunikation lediglich ein proprietäres Softwarepaket
angeboten. Derartige Softwarepakete sind oft auf wenige Plattformen und auf Peripheriegeräte
der beteiligten Partner beschränkt. Dadurch ist die Integration von Hardwarekomponenten Dritter
nicht möglich, was eine Einschränkung auf Geräte des Herstellers bedeutet.
Als Alternative dazu werden von Biocomfort öffentliche Programmierschnittstellen in Form des
Health Manager Software Development Kit angeboten. Diese sind in den auf vielen Plattformen
verbreiteten Programmiersprachen C und Java vorhanden. Das SDK bietet dabei Funktionen zur
Kommunikation mit den Medizingeräten. Damit können Geräte- und Messdaten abgerufen werden.
Außerdem werden weitere Daten, wie z.B. Informationen bei Übertragungsfehleren oder anderen
Kapitel 2 Healthmanager
9
Problemen, weitergeleitet. Darüberhinaus kann über das SDK die Konfiguration der Medizingeräte
eingestellt,der interne Gerätespeicher gelöscht oder die Gerätezeit verändert werden.
Die Dokumentation zum SDK ist online abrufbar, außerdem sind nach Registrierung Beispielprogramme verfügbar. Auf der Basis dieser Schnittstellen wird die Implementierung einer Softwarelösung unter Android ermöglicht.
Kapitel 3
Applikationsentwicklung unter Android
In diesem Kapitel werden Grundlagen für die Entwicklung und den Aufbau von AndroidSmartphones beschrieben. Weiterhin wird auf Eingriffe ins Android-System eingegangen, die
speziell für die entwickelte Anwendung erforderlich waren.
3.1 Android-Smartphones
Smartphones sind weltweit immer weiter verbreitet [8]. Durch die Übernahme von Android Inc.
im Jahr 2005 stieg auch Google in diese Branche ein. 2007 gründete Google zusammen mit
mehreren Hardware- und Softwareanbietern, sowie Mobilfunkpartnern, die Open Handset Alliance.
Diese veröffentlichte am 1. Oktober 2008 das unter der Federführung von Google entwickelte
Smartphone-Betriebssystem Android. Das Android-Betriebssystem (fortan “Android” genannt)
steht unter der quelloffenen Apache-Lizenz. Neben dem Betriebssystem stellt Google das Android
Software Development Kit (SDK) und das Android Native Development Kit (NDK) bereit. Das
SDK bietet neben einer Reihe von Entwicklungstools eine in Java implementierte Programmierschnittstelle (Application Programming Interface - API). Zusätzlich dazu können Applikationen
mit dem NDK um Nativen Code ergänzt werden. Android-Mobiltelefone werden derzeit von
Smartphone-Herstellern wie Samsung, HTC, LG, Dell, außerdem von Google selbst in Kooperation mit anderen Herstellern, angeboten. In den USA machen Android-Mobiltelefone derzeit
knapp mehr als die Hälfte des Smartphone-Marktes aus [9].
3.1.1 Das Betriebssystem Android
Das Betriebssystem Android kann in folgende Komponenten unterteilt werden: Kernel, Bibliotheken, Laufzeitumgebung, Application Framework und Anwendungen. Dieser Aufbau ist in Abbildung 3.1 dargestellt.
10
Kapitel 3 Applikationsentwicklung unter Android
11
Abbildung 3.1: Architektur des Android-Betriebssystems
Kernel
Der Android-Kernel basiert auf Mainline-Linux [10] und kann als GPLv2-Software [11] frei
heruntergeladen [12] und modifiziert werden. Der Kernel ist dabei für die Speicherverwaltung,
Prozessverwaltung, Sicherheit, Lastverteilung und E/A-Operationen zuständig. Der Kernel stellt
außerdem als unterste Schicht Treiber zur Einbindung von Hardware zur Verfügung.
Bibliotheken und Laufzeitumgebung
Die Standardbibliotheken des Systems sind in C/C++ geschrieben und bilden zusammen mit
der Android-Laufzeitumgebung die Schicht oberhalb des Kernels. Diese Bibliotheken werden
Kapitel 3 Applikationsentwicklung unter Android
12
zur Beschleunigung rechenintensiver Anwendungen von höher gelegenen Schichten aufgerufen.
Rechenintensive Anwendungen sind z.B. das Abspielen von Medien, Seitenrendering im Web oder
beschleunigte 3D-Anwendungen.
Statt der regulären C-Standardbibliothek wird eine für Android optimierte Version eingesetzt.
In der Android-Laufzeitumgebung findet sich neben den Java-Standardbibliotheken die Dalvik
Virtual Machine (VM). Diese registerbasierte Virtuelle Maschine ersetzt die Standard Java VM.
Durch die hardwarespezifische Optimierung des Java-Bytecodes ist die Ausführung mehrerer VMInstanzen resourcenschonender und benötigt weniger Speicher als die Java VM.
Android Application Framework
Das Android Application Framework bildet einen Satz von Systemkomponenten, die zur Anwendungsentwicklung genutzt werden. Diese liegen als Klassenbibliotheken in der Programmiersprache
Java vor. Enthalten sind unter anderem Klassen für GUI, Datenaustausch, Einbindung von Resourcen, Systemdienste und Hardwarekomponenten.
Applikationen
Anwendungen bilden die für den Benutzer sichtbare höchste Schicht im Betriebssystem. Als
Zugriffsschutz zwischen Anwendungen wird für jede neue Anwendung ein neuer Benutzer erstellt.
Applikationen werden normalerweise in Java entwickelt, können jedoch auch mit C/C++-Code
ergänzt werden. Mit Android Lighthouse [13] existiert auch die Möglichkeit, native Applikationen
mit Qt/C++ zu erstellen.
3.1.2 Android-Applikationen
Der Android Application Framework stellt einige Grundkomponenten zur Applikationserstellung
und Android bereit. Hier werden einige ausgewählte erklärt.
Activities
Eine Activity ist eine Komponente der Benutzeroberfläche. Normalerweise repräsentiert eine Activity eine einzelne Bildschirmseite der Applikation. Diese beinhaltet einzelne User Interface (UI)
Elemente, über die der Benutzer mit der Applikation interagieren kann. Der sichtbare Teil der Anwendung besteht aus Activities, zwischen denen man während der Ausführung wechseln kann. Für
jede Anwendung ist zwar eine Einstiegs-Activity definiert, im Gegensatz zu Desktopanwendungen
Kapitel 3 Applikationsentwicklung unter Android
13
gibt es jedoch keine Main-Funktion. Jede Activity kann über Intents von anderen Anwendungen
aufgerufen werden, sofern diese die entsprechende Berechtigung besitzt.
Services
Zur Ausführung von Aufgaben im Hintergrund kann ein Service definiert werden. Rechenintensive
Prozesse können hier ausgelagert werden, um das UI nicht zu blockieren. Services werden nach
Beendigung der Anwendung, die ihn startete, nicht gestoppt. Es wird zwischen Started Services
und Bound Services unterschieden.
Started Der Started Service wird von einer Applikation gestartet und arbeitet, bis er die ihm
übergebene Aufgabe erfüllt hat. Er übergibt dabei keinen Rückgabewert. Ergebnisse können z.B.
über Broadcasts versendet werden.
Bound Wenn sich eine Anwendung mit einem Started Service verbindet spricht man von einem
Bound Service. Diese Client-Server Verbindung ermöglicht eine zweiseitige Kommunikation. Auch
applikationsfremde Services oder Activities können sich so mit dem Service verbinden und Daten
mit ihm austauschen.
Intents
Intents sind Nachrichten, die zum Starten von Activities und Services vom System oder von Anwendungen verschickt werden. Es ist möglich, serialisierte Anwendungsdaten an diese anzuhängen. Intents können sowohl Komponenten der eigenen Anwendung als auch externe Komponenten
starten. Somit können anwendungsfremde Komponenten in die eigene Applikation eingebaut werden, ohne diese neu zu implementieren. Zum Export kann man mit Intent-Filtern dem System
mitteilen, welche Intents durch die Applikation bearbeitet werden können.
AIDL-Interfaces
Das Android Interface Definition Language (AIDL) erlaubt es eine Programmierschnittstelle zu
erstellen, auf die sich sowohl Client, als auch Server einigen, um mit IPC miteinander zu kommunizieren. In AIDL-Dateien können Remote Procedure Calls (RPCs) vereinbart werden, die von
einem Client aus aufgerufen werden können.
Kapitel 3 Applikationsentwicklung unter Android
14
Resourcen
Resourcen werden zur deklarativen Gestaltung bestimmter Anwendungskomponenten verwendet.
Android kennt verschiedene Arten von Resourcen, meist in XML-Dateien formuliert, die die Programmierung und Wiederverwendbarkeit des Codes steigern sollen.
Android bietet unter anderem Resourcen für Animationen, Farbdefinitionen, Rastergrafiken, Layouts, Menüs, Strings und Styledefinitionen. Auch ist es möglich, benutzerdefinierte Resourcen,
sog. RAW-Resourcen, einzubinden.
Manifest
Android summiert alle anwendungsrelevanten Eigenschaften in einer XML-Datei. Diese Datei wird
Manifestdatei (AndroidManifest.xml) der Anwendung genannt.
In dieser werden Activities, Services und weitere Komponenten registriert und Berechtigungen
deklariert. Zusätzlich können hier die Eigenschaften der Anwendung selbst oder auch ihrer Komponenten (Activity oder Services) festgelegt werden. So kann z.B. eingestellt werden, ob die
Anwendung den vollen Bildschirm benutzt (Fullscreen), oder Hardwarebeschleunigung benötigt.
3.2 Applikationsspezifische Vorbereitungen am Gerät
Generell ist der Biocomfort Health Assistant für Android unter jeder Android Plattformversion und
jedem Androidgerät lauffähig, jedoch unter einigen Vorraussetzungen. Momentan ist die Applikation auf API-Version 14 und neuer (entsprechend Plattformversion 4.0 und späteren) beschränkt.
Um frühere Android-Versionen verwenden zu können, müssen vorhandene C-Bibliotheken von Biocomfort für die entsprechende Hardware kompiliert werden. Außerdem muss der Kernel des Geräts
die Biocomfort-Hardware in Form des USB-Gateways unterstützen. Damit ist das Vorhandensein
entsprechender Treiber und Treibermodi erforderlich. Der größte Teil der Entwicklung erfolgte
neben anfänglichen Tests im Emulator am Samsung Nexus S, das alle besagten Vorraussetzungen
erfüllt.
3.2.1 Rooting
Android benutzt das Rechtemanagement des Linux-Kernels applikationsbezogen, d.h. für jede
Applikation wird bei der Installation ein neuer User erstellt. Die Applikation kann somit nur auf
applikationseigene, nicht jedoch auf Systemdaten, oder die Daten anderer Applikationen zugreifen.
Die Kommunikation zwischen Applikationen erfolgt über Schnittstellen des Android Application
Framework. Nun existiert unter unixoiden System neben normalen Usern immer auch ein User, der
Kapitel 3 Applikationsentwicklung unter Android
15
Berechtigungen hat auf alle Dateien zuzugreifen. Bei den meisten Desktop-Linuxdistributionen
ist der Zugriff auf Systemadministratorrechte über Dienstprogramme wie su oder sudo möglich.
Unter Android jedoch ist der Root User in Standardkonfiguration deaktiviert.
Im normalen Betrieb ist das Rooten des Telefons nicht erforderlich, außerdem ein erhebliches
Sicherheitsrisiko. Einerseits besteht dabei die Gefahr, dass das System durch Eingriffe unbenutzbar
wird. Andererseits kann die Sicherheit der in Applikationen gespeicherten Benutzerdaten nicht
mehr garantiert werden. Beim Rooten erlischt meist die Herstellergarantie, somit ist bei NichtEntwicklungsgeräten davon abzuraten.
Das Rooting ist bei der Entwicklung in vielerlei Hinsicht nützlich, als auch erforderlich. Einige
Applikationen können erst nach erfolgtem Rooting genutzt werden. Darüberhinaus kann mit Administratorrechten auch per Shell auf Applikationsdaten, wie im hier beschriebenen Anwendungsfall,
z.B. der Zugriff auf SQLite-Messwertdatenbanken zugegriffen und diese zu Debugging-Zwecken
inspiziert werden. Nur bei erfolgtem Rooting kann außerdem auf Gerätedateien zugegriffen werden,
Rechte geändert oder Dateisysteme ein- und ausgehängt werden.
Bei Entwicklung des Biocomfort Health Assistant war das Rooting aus verschiedenen Gründen
erforderlich. Zunächst mussten Konfigurationsdateien auf der Systempartition eingespielt werden.
Außerdem wurde dort auch das FTDI-Kernelmodul abgelegt, um dies beim Systemstart automatisch zu laden. Weiterhin war es nötig, Geräteknoten neu zu erstellen und zu verlinken. Ohne
Root-Rechte ist außerdem kein Wireless Debugging möglich, was die Entwicklung sehr stark behindern würde. Am wichtigsten jedoch werden die Root-Rechte bei der Nutzung von USB-On-the-go
(USB-OTG). Da der benutzte Treiber nicht automatisch zwischen Client und On-the-go Modus
umschalten kann, muss dies als Root manuell erledigt werden.
Für verschiedene Geräte existieren verschiedene Methoden zum Rooten. Eine Möglichkeit wäre
z.B., eine modifizierte Firmware mit Rootrechten zu flashen. Beim Nexus S ist die einfachste
Methode, ein Recoveryprogramm zu installieren, über das manuelle Systemupdates eingespielt
werden können. Als Recoverytool dient meist ClockworkMod (siehe Abbildung 3.2), über das ein
Superuser-Paket installiert wird.
3.2.2 Kernel
Die gesamte Gerätekommunikation erfolgt bei Android als linuxbasiertem System über Treiber im
Linuxkernel. Da der Linuxkernel eine große Masse von Hardware unterstützt, würde die Größe des
Kernels bei der Integration aller Treiber sehr stark anwachsen.
Deshalb können Treiber über sog. Module aus dem Kernel ausgelagert werden, die erst im laufenden Betrieb geladen werden. Vor der Kompilierung des Kernels wird eine Konfiguration festgelegt.
Diese bestimmt für jeden Treiber, ob dieser im Kernel integriert, als Modul ausgelagert, oder nicht
kompiliert wird.
Kapitel 3 Applikationsentwicklung unter Android
16
Abbildung 3.2: Über Clockworkmod können manuelle Updates wie z.B. ein Superuser-Paket zum
Rooten des Telefons installiert werden [14]
Die Drahtloskommunikation des Biocomfort Healthmanager-SDK erfolgt über einen USB-Dongle,
die (De-)Serialisierung der Sende- und Empfangsdaten übernimmt ein FTDI-Chip. Zur Verwendung des USB-Gateways unter Android ist somit einerseits ein Treiber für externe USB-Geräte
generell, außerdem ein Treiber für den FTDI-Chip nötig. Da beide Treiber in ICS-Standard nicht
vorhanden sind, musste ein nicht-standard Kernel verwendet werden.
Wenn auch von Google für Android 4.0 angekündigt [15], ist aktuell noch kein offizieller lauffähiger
Treiber für USB-Gadgets im Host-Modus vorhanden. Deshalb wurde ein modifizierter Kernel vom
User sztupy des XDA-Developers Forum [16] benutzt. Der USB-Hostmode Treiber ist offiziell
zwar derzeit noch nicht verfügbar, jedoch in den Kernelquellen für einige Tablets von Samsung
unter 2.x und 3.x vorhanden. Dieser Treiber wurde nach Android 4.0 portiert und damit in den
Kernel integriert. sztupy stellt sowohl vorkompilierte Images, als auch Kernelquellen unter [17]
zur Verfügung.
Die hochgeladenen Builds konnten wegen fehlendem FTDI-Modul so nicht eingebunden werden.
Anstelle dessen wurde der Kernel mitsamt entsprechendem Modul neu erstellt. Die Kernelkonfiguration und Kompilierung erfolgt analog zu Standard-Linux, jedoch muss die Kompilierung mit
der Crosscompiler-Toolchain aus dem Android NDK, den Android-Entwicklungstools für nativen
Code und für die entsprechende Gerätearchitektur erfolgen.
Kapitel 3 Applikationsentwicklung unter Android
17
Zum dynamischen Umschalten zwischen beiden Treibermodi(USB-OTG/Client) kann die Applikation USB Host Controller aus dem Android Market installiert werden (Abbildung 3.3).
Abbildung 3.3: Mit der USB-Host-Controller Applikation kann im laufenden Betrieb zwischen
On-the-go und Client Modus umgeschalten werden
3.3 Geräte- und Applikationssetup
Aufgrund anderer Bedingungen am Android-System auf Mobilgeräten waren einige Anpassungen
nötig. Das war einerseits das Setup vorhandener Hardwarekomponenten, andererseits die Handhabung der Gerätekommunikation.
3.3.1 Gerätesetup
Zum Betrieb von USB-A-Geräten ist eine USB-A Buchse notwendig. Einige Tablets verfügen
bereits über einen USB-Anschluss, Mobiltelefone werden standardmäßig ohne hergestellt. Wie
das Nexus S verfügen die meisten stattdessen über eine MicroUSB-Buchse, die in Verbindung mit
einem Adapter genutzt wird.
Darüberhinaus versorgt die MicroUSB-Buchse an das Nexus S angeschlossene Geräte (wie andere
USB-Host-Geräte, also z.B. PC’s) nicht mit Strom. Dies ist im Betrieb als USB-Client auch nicht
notwendig, da das Mobilgerät vom Host versorgt wird.
Diesen Zweck erfüllte am Nexus S stattdessen ein USB-Split-Kabel, wobei der zweite USBMale Stecker an externe Stromversorgung angeschlossen wird. Außerdem ist mit dem genutzten
Kapitel 3 Applikationsentwicklung unter Android
18
Hostmode-Treiber laut Entwicklerangaben ein Hub nötig. An diesen kann nun der Biocomfort
USB-Dongle angeschlossen werden. Der ganze Aufbau ist in 3.4 ersichtlich.
Abbildung 3.4: Übersicht Hardwarekonfiguration
3.3.2 Applikationssetup
Der Biocomfort Health Assistant kommuniziert zur Laufzeit über das USB-Gateway mit den drahtlosen Medizingeräten ( Abbildung 3.5 ). Dazu muss er Daten über das Gateway senden, empfangen
und den Status des Gateways abrufen können. Der Zugriff auf das Gateway erfolgt nicht direkt,
sondern über einen Treiber im Kernel.
Linux bildet dabei Peripheriegeräte (wie das Gateway) auf eine korrespondierende Gerätedatei ab.
Zum Senden können nun Daten in diese spezielle Datei /dev/ttyUSB0 geschrieben, zum Empfang solche gelesen werden. Das Kommunikationsprotokoll ist hierbei in einer low-level Bibliothek
(libibeanapi) festgelegt. Zusätzlich wird von Biocomfort eine high-level Bibliothek (libhmcsdk)
zur Verfügung gestellt, die intern Funktionen aus libibeanapi aufruft. Der gesamte Aufbau ist in
Abbildung 3.6 dargesellt.
Kapitel 3 Applikationsentwicklung unter Android
Abbildung 3.5: USB-Dongle und Medizingeräte
Abbildung 3.6: Übersicht der Programmfunktion
19
Kapitel 4
Android Implementierung
In diesem Kapitel werden erst die Anforderungen an den Biocomfort Health Assistant genannt.
Dann wird in Sektion 4.2 das Wesentliche der Implementierung auf der Android-Plattform erklärt.
Weiterhin wird in Sektion 4.3 auf die Probleme eingegangen, die dabei auftauchten. Zuletzt
werden Beschränkungen des Systems diskutiert.
4.1 Anforderungen
Ein Healthmanager muss bestimmte Anforderungen erfüllen. In erster Linie geht es bei einem
Healthmanager um die Haltung der persönlichen Vitaldaten. Hierbei macht es keinen Unterschied, ob die Daten am Telefon, am Rechner oder in der Cloud gespeichert werden. Für die
Implementierung mit Android sollen deshalb folgende Anforderungen erfüllt werden:
• Der Healthmanager soll Daten von den Biocomfort Medizingeräten aufnehmen und abspeichern. Das soll automatisch und zuverlässig geschehen.
• Es soll eine Möglichkeit zur Visualisierung vorhanden sein, diese soll jedoch von der Datenaufnahme und Verwaltung getrennt werden.
• Die Benutzeroberfläche soll intuitiv und leicht bedienbar sein.
• Über die UI-Komponente kann mit den Medizingeräten kommuniziert werden. Dabei können
Gerätekonfigurationen geändert oder abgerufen werden.
• Auch andere Applikationen oder Dienste können Daten vom Health Manager abrufen und
weiterverwenden.
• Die Software soll erweiterbar sein.
20
Kapitel 4 Android Implementierung
21
4.2 Implementierung Biocomfort Health Assistant für Android
Der Biocomfort Health Assistant setzt sich aus einer Service Application (Dienstanwendung) und
einer GUI-Anwendung mit grafischer Oberfläche zusammen. Dabei ist die Service Application für
die Aufnahme von Messdaten und die Kommunikation mit der mobilen Sensorik zuständig. Die
GUI-Anwendung ruft empfangene Daten über ein AIDL-Interface von der Service Application ab.
Zu Testzwecken kann der Biocomfort Health Assistant auch mit in Software simulierten Medizingeräten, statt den tatsächlichen Sensoren, kommunizieren. Zur Steuerung dieser vorgetäuschten
Sensoreinheiten wird das zusätzlich entwickelte MockSDK GUI eingesetzt.
4.2.1 Service Application
Die Service Application handhabt die Kommunikation mit den medizinischen Messgeräten. Da
neue Daten ständig eintreffen, sollte der Dienst permanent verfügbar sein, um diese aufnehmen
zu können. Dies können Messdaten oder Konfigurationsdaten der Medizingeräte sein. Die Daten
sollten im Anschluss dauerhaft abgespeichert werden, wozu bei der Implementierung SQLite verwendet wurde. Eine weitere Anforderung ist, dass die Service Application mit anderen abrufenden Anwendungen kommuniziert. Der Dienst interagiert mit einer unterschiedlichen Anzahl von
Applikationen, weshalb das Interface variabel erstellt werden muss. Eine sinnvolle Lösung für
diese Anforderung ist, bei neuen Daten Broadcast-Meldungen an alle derartigen Applikationen zu
schicken, um Updates zu signalisieren. Dann können diese über ein AIDL-Interface abgerufen werden. Anfangs wurde die Kommunikation mit den Medizingeräten durch das Mock SDK emuliert.
Später wurde an dieser Stelle das SDK Interface zur tatsächlichen Gerätekommunikation eingefügt. Zur low-level Kommunikation wurden C-Bibliotheken eingesetzt. Diese können in Java unter
Verwendung von Java Native Interface direkt angesprochen werden.
Datenbank Management
Zur Speicherung aller Daten auch nach Beendigung des Dienstes bzw. Ausschalten des Geräts
werden diese in einer SQlite-Datenbank abgelegt. Dies geschieht je in einer Tabelle für BenutzerGeräte- und die verschiedenen Typen von Messdaten.
Benutzerdaten Benutzereinträge, die über die UI-Applikation oder auch andere Applikationen
erstellt wurden, werden hier abgelegt. Da die Biocomfort-Medizingeräte auf derzeit 8 Einträge
beschränkt sind, wurde dies auch in der Datenbank berücksichtigt. Beim Löschen eines Benutzers
werden alle zugehörigen Messdaten aus den entsprechenden Tabellen gelöscht.
Kapitel 4 Android Implementierung
22
Abbildung 4.1: Aufbau der Service Application des Biocomfort Health Assitant for Android.
Gerätedaten Von den Geräten eingehende Geräteparameter werden in dieser Tabelle gespeichert. Die Identifikation geschieht hierbei über die eindeutige Geräte-Identifikationsnummer. Bei
neu erhaltenen Geräteparametern, also z.B. eine aktualisierte Gerätezeit, die bereits in der Datenbank vorhanden sind, werden diese entsprechend ersetzt.
Messdaten Da sich die Messdaten durch die Zahl der gemessenen Parameter, bzw. den Datentyp unterscheiden, wurden die Messdaten in verschiedenen Tabellen gespeichert. Bei neuen
Messdaten wird zuvor die Datenbank auf bereits vorhandene identische Datensätze befragt, um
Doppeleinträge zu vermeiden.
Mock SDK
Der MockSDK bildet sowohl das Wireless Gateway als auch die Biocomfort-Medizingeräte in
Software nach. Er stellt die selben Schnittstellen zur Verfügung wie die Java-Implementierung des
Health Manager SDK. Außerdem werden auch auftretende Übertragungsfehler simuliert. Mit ihm
kann auch ohne passende Bibliotheken und Treiber die Datenbank, Interprozesskommunikation
und GUI getestet werden. Das MockSDK kann vor allem für die Erweiterung auf andere Geräte
nützlich sein.
Eine vorhandene Implementierung findet sich online zum Download [18]. Diese wurde nach An-
Kapitel 4 Android Implementierung
23
droid portiert und um ein GUI zur Steuerung ergänzt, die unter Abschnitt 4.2.3 vorgestellt wird.
Communication Service
Der Communication Service kommuniziert mit Applikationen, die Gesundheitsdaten abrufen
wollen. Außerdem ist eine Schnittstelle zur Kommunikation mit dem MockSDK vorhanden. Daten
können dort nach der Öffnung einer Verbindung über ein AIDL-Interface abgerufen werden. Wenn
neue Daten von den Geräten eintreffen, oder Daten in der Datenbank verändert werden, werden
per Broadcast Update-Benachrichtigungen verschickt.
SDK Interface
Das SDK-Interface kommuniziert mit den Medizingeräten. Dies geschieht über JNI und die
Schnittstellen des Health Manager C SDK. Die Geräte werden hier in einer Geräteliste zwischengespeichert und bei Bedarf neue Einträge erstellt. Bei Empfang neuer Messdaten, Gerätekonfigurationen oder Fehler wird der SDK-Manager über Events benachrichtigt. Diese Komponente kann
zum Testen durch das MockSDK ausgetauscht werden.
SDK Manager
Der SDK-Manager nimmt Events vom SDK-Interface an und reagiert auf diese. Intern kommuniziert er über Listener mit dem Communication Service und bearbeitet die dort ankommenden
Anfragen weiter. Dabei verwaltet er die SQLite-Datenbank, d.h. er erstellt neue Datenbankeinträge, löscht Einträge oder aktualisiert vorhandene Einträge. Außerdem prüft der SDK Manager
die Datenbank auf bereits vorhandene Einträge.
Java Native Interface
Als Kompatibilitätsschicht zwischen C und Java wurde “Java Native Interface” (JNI) (Abbildung
4.2) gewählt. Hier wird nur auf die grundlegende Rolle von JNI eingegangen, Details können in
[19] und [20] eingesehen werden.
JNI ist für Situationen entworfen, in denen Nativer Code mit Java-Anwendungen kombiniert werden muss. Da JNI ein zweiseitige Schnittstelle ist, unterstützt es sowohl native Bibliotheken als
auch native Anwendungen (Abbildung 4.2 ).
Java-Anwendungen rufen native Methode in der gleichen Art wie in Java implementierte Funktionen auf, im Unterschied dazu jedoch liegen diese Funktionen in Nativen Bibliotheken vor.
Javaklassen werden dabei mit spezieller Namenskonvention auf native Funktionen abgebildet.
Kapitel 4 Android Implementierung
24
Abbildung 4.2: Funktion von Java Native Interface als Anbindung für Nativen Code in JavaApplikationen
Eine einfaches Interface zum nativen Methodeaufruf ist in Listing 4.1 dargestellt. Dabei wird
zunächst eine native Methode in C implementiert und diese dann von Java aus aufgerufen.
Listing 4.1: Aufruf von nativen Methoden über JNI
∗ Native Implementierung in C
∗/
#i n c l u d e < j n i . h>
jb oo le an Java_com_biocomfort_jni_JavaClass_nativeMethod ( . . . ) {
return true ;
}
/∗
∗ N a t i v e Methode im Java−Code a u f r u f e n
∗/
p a c k a g e com . b i o c o m f o r t . j n i ;
public class JavaClass {
p r i v a t e n a t i v e boolean nativeMethod ( ) ;
p r i v a t e s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
boolean r e t v a l = nativeMethod ( ) ;
}
}
JNI unterstützt es außerdem, die Java Virtual Machine Implementation in nativen Code einzubinden. Native Programmteile können mit der JavaVM kommunizieren, und eine Schnittstelle zum
Ausführen von Java-Softwarekomponenten und Funktionen nutzen. Wie in Listing 4.2 gezeigt,
können aus der nativen Anwendung sogenannte Callbacks aufgerufen werden. Dabei müssen vor
dem Aufruf unter anderem die JavaVM und die aufzurufenden Java-Methoden gefunden werden. Beim Aufruf muss sich das native Programm den neuen Programmthread zunächst bei der
Kapitel 4 Android Implementierung
25
laufenden Instanz der JavaVM registrieren, sowie danach wieder abmelden.
Listing 4.2: Native Callbacks
/∗
∗ Methode i n J a v a d e f i n i e r e n
∗/
public class JavaClass {
p r i v a t e v o i d j a va M ethod ;
}
/∗
∗ J a v a Methode a u s n a t i v e r Anwendung a u f r u f e n
∗/
#i n c l u d e < j n i . h>
// Z e i g e r a u f JavaVM , muss i n d e r n a t i v e n Anwendung i n i t i a l i s i e r t werden
JavaVM ∗g_vm ;
void callback () {
// JNI i n t e r f a c e P o i n t e r
JNIEnv ∗ g_env ;
// R e g i s t r i e r e n b e i d e r A k t u e l l e n I n s t a n z d e r JavaVM
( ∗g_vm)−>A t t a c h C u r r e n t T h r e a d ( g_vm , &g_env , NULL ) ;
// N a t i v e r M e t h o d e n a u f r u f
( ∗ g_env)−>C a l l V o i d M e t h o d ( . . . , javaMethod , a r g u m e n t s ) ;
// D e r e g i s t r i e r e n
( ∗g_vm)−>D e t a c h C u r r e n t T h r e a d ( ) ;
}
v o i d main ( ) {
// JavaVM i n i t i a l i s i e r e n und Java−Methoden f i n d e n
init ();
// J a v a Methode ü b e r C a l l b a c k a u f r u f e n ;
callback ();
}
Somit kann die Java-Applikation aktiv Gerätedaten mit Methodenaufrufen im Health Manager
C-SDK abfragen (Abbildung 4.3, 1 ). Diese Methoden können sowohl Java-Standarddatentypen,
als auch eigene Datentypen enthalten. Die Daten können über Rückgabewerte, nicht jedoch über
in Java verbotene Zeiger ausgelesen werden.
Kapitel 4 Android Implementierung
26
Mit diesem Mechanismus alleine können nur durch Polling der SDK-Zustand oder z.B. Informationen über neue Geräte eingeholt werden. Darum definiert die HMCSDK-Bibliothek einige Events,
die durch Hardware-Interrupts getriggert werden (Abbildung 4.3, 4 ). Diese Events können nun
durch SDK-Funktionen an ensprechende Java-Events gebunden werden (Abbildung 4.3, 2 ). Da
diese sogenannten “Callbacks” von der Nativen Applikationen gesteuert sind, müssen sie in einem
eigenen Thread gestartet werden. Um dies zu ermöglichen, muss der neue Thread manuell bei der
Java VM registriert werden. Nun können Callbacks ausgeführt werden (Abbildung 4.3, 3 ).
Abbildung 4.3: Einsatz von Java Native Interface in der Service Applikation. Dabei können sowohl
native C-Funktionen in Java, als auch umgekehrt Java-Funktionen über Callbacks
in C ausgeführt werden
4.2.2 GUI Application
Die GUI-Applikation stellt die von der Service Application empfangenen Daten grafisch dar. Smartphones werden, anders als Personal Computer, meist nur von einem Benutzer, nämlich dem Besitzer bedient. Dies sollte auch bei Endbenutzeranwendungen berücksichtigt werden.
Deshalb werden in der Applikation nie alle Benutzerdaten gleichzeitig angezeigt, da beim Start ein
Benutzer gewählt werden muss. Daraufhin werden die Daten des gewählten Benutzers angezeigt.
Ein zentraler Hintergrunddienst verwaltet die Daten der Applikation.
Kapitel 4 Android Implementierung
27
Hintergrunddienst
Der Hintergrunddienst ist für den Datenabruf und deren Verwaltung zuständig. Da z.T. identische Daten in den verschiedenen Visualisierungen dargestellt werden, wäre ein direkter Abruf
redundant. Der Dienst bildet die Schnittstelle zur Service Applikation und empfängt UpdateBenachrichtigungen über Intents. Daraufhin werden die neuen Daten über ein AIDL-Interface
abgerufen und an gerade laufende Programmkomponenten weitergegeben.
Benutzerauswahl
Die Benutzerauswahl wird anfangs aufgerufen, um den entsprechenden Benutzer zu selektieren (4.4
links). Nicht mehr benötigte Benutzer können bei Bedarf gelöscht werden. Außerdem besteht die
Möglichkeit, neue Benutzer zu erstellen. Dazu müssen die Daten des neuen Benutzers eingegeben
werden (4.4 rechts).
Abbildung 4.4: Benutzerauswahl und Benutzererstellung
Viewpager
Zur Visualisierung der von der Service Applikation empfangenen Daten wird ein Viewpager eingesetzt, der eine intuitive Bedienung ermöglicht. Damit kann die Bildschirmseite per Wischgeste
Kapitel 4 Android Implementierung
28
gewechselt werden. Der Viewpager beinhaltet verschiedene Ansichten für Gerätedaten (4.5a ),
Messdaten sowie Geräte/Kommunikationsprobleme.
Die empfangenen Messdaten werden dabei als Liste (4.5c ), in Detailansicht (4.5b ) und in Diagrammansicht dargestellt. Derzeit existiert je ein Diagrammtyp für Blutdruck (4.6a ), Blutzucker
(4.6b ) sowie für empfangene Daten der Diagnosewaage (4.6c ). In den Diagrammen werden die
gemessenen Werte in Reihenfolge der Messung dargestellt. Die dargestellte Datenmenge kann bei
allen Vitaldatendiagrammen über eine Zoomfunktion variiert werden.
Abbildung 4.5: Geräteübersicht, Messungsdetails und Messungsliste
4.2.3 MockSDK Gui
Um das MockSDK extern steuern zu können, wurde für diesen Zweck eine graphische Oberfläche
erstellt (4.7). Diese kommuniziert über eine Server-Client-Verbindung mit der Service Applikation.
Dabei läuft diese extern am PC. Somit können neue Events getriggert werden, ohne am AndroidGerät zwischen verschiedenen Applikationen umschalten zu müssen.
Bei der Verwendung kann zunächst die IP des Zielgeräts eingegeben und dann eine Verbindung
erstellt werden. Nach Verbindung ohne Fehler können nun verschiedene Events im MockSDK
ausgelöst werden. Per Klick kann z.B. das Anstecken bzw. Abziehen des USB-Gateways simuliert
werden. Außerdem ist ein An- und Abschalten der Medizingeräte im MockSDK möglich. Zusätzlich können nach Auswahl eines Benutzers neue Messungen erstellt werden.
Für die GUI zur Steuerung des MockSDK wurde Qt-Jambi, sowie das in Java enthaltene TCP/IP-
Kapitel 4 Android Implementierung
Abbildung 4.6: Diagrammansicht je für Blutdruck-, Blutzucker und Waagenmessung
Abbildung 4.7: User Interface zur Steuerung des MockSDK
29
Kapitel 4 Android Implementierung
30
Interface genutzt.
4.3 Probleme
In diesem Abschnitt wird auf Schwierigkeiten eingegangen, die während der Entwicklung aufgetreten sind. Diese ergaben sich sowohl wegen der speziellen Hardwarekonfiguration, andererseits
durch Einsatz von plattformfremden Softwarekomponenten. Weitere traten wegen nicht behobener
Fehler in Android selbst auf.
4.3.1 Android Umgebung
Wireless Debugging
Kabelgebundenes Debugging ist bei Verwendung des USB-Gateways und einem USB-Slot nicht
mehr möglich. Deshalb wurde zum Debugging stattdessen die drahtlose Android Debug Bridge
(ADB-Wireless) verwendet [21]. Nach langwieriger drahtloser Programminstallation weißt auch
der Debugger lange Reaktionszeiten und viele Abbrüche auf. Vor allem das Übertragen von
größeren Datenmengen wird stark verlangsamt.
Geräteberechtigungen
Um auf die Gerätedatei des Gateways zugreifen zu können, müssen entsprechende Berechtigungen für die Applikation vorhanden sein. Da die Gerätedateien bei jeder Einbindung neu erstellt
wird, muss direkt bei der Einbindung eine solche Berechtigung vergeben werden. Standardmäßig
kann nur root auf beliebige Geräte zugreifen, für weitere Berechtigungen können normalerweise
(GNU/Linux) über Regeln in udev, dem Linux Gerätemanager, vergeben werden.
Unter Android als eingebettetem linuxbasiertem System wird aus Performancegründen und zur
Einsparung von Speicherplatz auf den udev-Dienst verzichtet. Stattdessen werden Berechtigungen über den uevent-daemon gesetzt.
Jedoch liegen die Konfigurationsdateien für den uevent-daemon bereits auf der ininitialen Ramdisk
(initramfs), die als anfängliches Dateisystem beim Bootvorgang dient. Um die benötigten Berechtigungen zu setzen, musste das gepackte initramfs des Android-Gerätes modifiziert und neu aufgespielt werden.
31
Kapitel 4 Android Implementierung
Application Framework
Neben dem regulären Application Framework können in Applikationen zusätzliche Bibliotheken
zur Rückwärtskompatibilität (Support-Packages) eingebunden werden. Dabei werden einige Komponenten des Application Framework reimplementiert, um die Funktionalität auf älteren AndroidVersionen zu garantieren. Dabei existieren Support-Packages je für einschließlich API-Version 4
und API-Version 13.
Die Reimplementierung oder Ersetzung dieser Klassen kann dabei zu Doppeldeutigkeiten und
Inkompatibilitäten führen. Dies tritt z.B. bei der Verwaltung von Fragments zu Problemen.
Außerdem beinhalten die Support-Packages teilweise noch Programmfehler, die zu schwierig behebbaren Programmabstürzen führen. Um diese zu beseitigen, wurden die Support-Packages neu
erstellt. Somit werden derzeit leicht modifizierte Bibliotheken verwandt, wobei die manuellen
Fehlerbehebungen (Bugfixes) bei jedem Update neu eingespielt werden müssen. Die Benutzung
eines Viewpagers, wie in Sektion 4.2.2 genannt, erfordert die Einbindung der Support-Packages
für einschließlich API-Version 4.
4.3.2 Biocomfort Resourcen
Health Manager SDK
Da bereits eine Java-Implementierung des Health Manager SDK existiert, war anfangs geplant,
diese unter Android zu verwenden.
Aufgrund bestehender Abhängigkeiten könnte diese je-
doch nicht eingesetzt werden, was eine Umstrukturierung der Applikation zur Folge hatte. Die
stattdessen genutzte C-Implementierung bedurfte manueller Einbindung mit JNI.
Das SDK-Interface jedoch bietet die identischen Schnittstellen des Health-Manager Java SDK.
Im Falle einer zukünftigen Portierung des Health Manager Java SDK nach Android kann diese
nahtlos im Biocomfort Health Assistant eingesetzt werden.
4.4 Beschränkungen
Der Biocomfort Health Assistant stellt ein funktionsfähiges Health Manager System dar. Jedoch
unterliegt die aktuelle Implementierung Beschränkungen in einigen Punkten. Diese sind einerseits
durch den begrenzten Rahmen einer Studienarbeit, andererseits durch die Neuentwicklung auf der
Android-Plattform bedingt. Im folgenden werden einige erläutert.
Kapitel 4 Android Implementierung
32
4.4.1 Stabilität
Der Biocomfort Health Assistant läuft im allgemeinen stabil. Probleme verursachen Abstürze des
Android-Systems und des USB-Hostmode Treibers.
Android
Das während der Entwicklung eingesetzte Android 4.0.3 sowie der Kernel weißen noch relativ
viele Programmfehler (Bugs) auf. Dies zeigt sich noch recht häufig durch Einfrieren des Systems
oder ungewollte Neustarts. Da Fehler durch Bugfixes und Systemupdates relativ schnell behoben
werden, ist eine baldige Besserung zu erwarten. Schon im vor kurzem erschienene Update zu 4.0.4
wurden viele Bugs entfernt.
USB-Hostmode Treiber
Der genutzte Hostmode-Treiber ist nicht besonders stabil, außerdem bei der Geräteerkennung noch
recht unzuverlässig. Einige USB-Geräte werden nicht erkannt, außerdem muss zwischen USB2.0
und USB1.1-Geräten umgeschaltet werden. USB-Geräte müssen teils mehrfach angeschlossen und
wieder entfernt werden, bis vom Kernel ein Gerät erstellt und eingebunden wird.
Der dauerhafte Betrieb des Biocomfort USB-Gateway ist mit diesem Treiber momentan nur bedingt
möglich, da die Gerätedatei häufig vom Kernel entfernt, oder mit dem falschen Device Identifier
(Gerätenamen) erstellt wird. Um diese Probleme zu beheben wurde ein Shellskript erstellt, das
ggf. entsprechende symbolische Links setzt bzw. die Gerätedatei neu erstellt.
4.4.2 Mobilität
Das derzeit eingesetzte Smartphone Nexus S bietet per USB angeschlossenen Peripheriegeräten
keine Stromversorgung. Deshalb muss die USB-Anschlussleitung extern mit Strom versorgt werden. Somit ist momentan wegen diesem zusätzlich nötigen Stromanschluss noch kein vollständig
mobiler Betrieb möglich.
4.4.3 Funktionsumfang
Um den Biocomfort Health Assistant als komplett eigenständiges System zu nutzen, sollte man auf
alle Daten der medizinischen Messgeräte zugreifen können. Dazu bietet der Health Manager SDK
viele verschiedene Methoden und Schnittstellen an. Da sich die derzeitige Implementierung auf die
Basisfunktionalitäten beschränkt werden einige SDK-Funktionen noch nicht verwendet. Derzeit
Kapitel 4 Android Implementierung
33
ist z.B. noch nicht möglich, die Gerätezeit direkt einzustellen oder Benutzer am Medizingerät zu
(de-)aktivieren. Alle grundlegenden Funktionen zum Abruf von Messdaten sind vorhanden.
4.4.4 Sicherheit
Die Sicherheit der Applikationsdatenbank am Smartphone vor unberechtigtem Zugriff kann derzeit
nicht vollständig garantiert werden. Dies liegt an den noch nötigen Root-Rechten zum Betrieb des
Biocomfort Health Assistant. Sobald diese nicht mehr erforderlich sind, ist die Datenbank automatisch vor direkten Zugriffen innerhalb des Android-Systems, also z.B. durch Fishing-Applikationen
geschützt. Der Datenabruf über AIDL ist für beliebige Applikationen möglich.
Eine Funktion zum Online-Export oder Außenzugriff auf Messdaten ist noch nicht vorhanden.
4.4.5 Bediencomfort und Akzeptanz
Beim Oberflächenentwurf wurden intuitive Bedienelemente mit Wischgesten oder MultitouchZooming berücksichtigt. Da noch keine Fallstudie erfolgt ist, können zum Bediencomfort und der
Akzeptanz des Biocomfort Health Assistant noch keine Angaben gemacht werden.
Kapitel 5
Zusammenfassung und Ausblick
5.1 Zusammenfassung
Die anfängliche Problemstellung war, ein mobiles Healthmanager System für die Android-Plattform
zu finden. Dieses sollte als ganzheitliches Gesundheitssystem in der Lage sein, Vitaldaten von
mobilen Drahtlossensoren aufzunehmen. Dabei sollte das System erweiterbar sein und außerdem
empfangene Daten für andere Applikationen zur Verfügung stellen.
Deshalb wurden zunächste bestehende Healthmanagersysteme analysiert. Nun sollte ein neues
System entstehen, das die genannten Anforderungen erfüllt. Als Basis für das neue System für
die Android-Platform wurde das existierende Biocomfort Health Manager System ausgewählt.
Ausgehende von diesem System wurden mit Hilfe des Health Manager SDK zwei Applikationen für Android-Smartphones erstellt. Diese beiden bilden den Biocomfort Health Assistant für
Android. Dieser ermöglicht zunächst, ständig Einsicht in die Persönlichen Gesundheitsdaten zu
behalten. Durch die Implementierung am Smartphone können außerdem Daten jederzeit und
überall aufgenommen werden, also z.B. im Job, beim Training oder im Urlaub.
Dies kann jedoch nur der erste Schritt für ein noch umfassenderes Health Management am Smartphone sein. Dazu stellt der Biocomfort Health Assistant anderen Applikationen, die Gesundheitsdaten berücksichtigen, gemessene Vitaldaten zur Weiterarbeitung zur Verfügung.
Somit ist dies hoffentlich eine Möglichkeit, das allgemeine Wohlbefinden eines jeden Menschen zu
verbessern und eine Hilfe, um schwerwiegenden Krankheiten vorzubeugen.
5.2 Ausblick
In diesem Abschnitt wird auf mögliche Erweiterungen des entwickelten Healthmanager-Systems
eingegangen. Dabei werden einerseits hardware- als auch softwareseitge Erweiterungen diskutiert.
34
Kapitel 5 Zusammenfassung und Ausblick
35
5.2.1 Hardware
Kompatibilität mit weiteren Smartphones
Der Healthmanager läuft in der derzeitigen Ausführung unter Android ICS 4.0 mit einem modifizierten Linuxkernel für das Nexus S, der einen USB-Hostmode Treiber bietet. Außerdem ist
externe Stromversorgung und ein USB-Hub nötig und somit kein mobiler Betrieb möglich.
Zwar wird seit längerem angekündigt [15], dass der USB-Hostmode standardmäßig unterstützt
wird, jedoch momentan mit Android 3.x nur unter einigen Tablets. Eine breite Unterstützung
unter 4.x lässt noch auf sich warten. Da sowohl die Stabilität, als auch die Verbreitung der
neuen Android-Version 4.x zunimmt, kann man auf eine baldige Integration hoffen. Mit der
Unterstützung für den USB-Hostmode wird auch der microUSB-Port mit Strom versorgt. Dies ist
z.B. schon beim Samsung Galaxy Nexus sowie beim Samsung Galaxy S3 der Fall.
Dadurch ist ein direkter Anschluss mit Adapter des USB-Gateways an der Android-Hardware ohne
Hub möglich. Somit wird der mobile Einsatz mit verschiedenen Android-Smartphones ermöglicht.
Erweiterung der Sensorpalette
Bei der Entscheidung für ein Health Manager spielt die Zahl der bereits vorhandenen Sensoren
eine wichtige Rolle. Durch ein größeres Angebot steigt die Attraktivität der Plattform. Deshalb
wird die Sensorfamilie derzeit erweitert.
Als Alternative zur vorhandenen Körperfettwaage kommt sowohl eine Körperfettwaage mit erweitertem Messbereich, als auch eine reine Körperwaage hinzu. Weiterhin steht bald ein Blutdruckmessgerät zur Messung am Oberarm bereit [22]. Denkbar wären z.B. auch noch Messgeräte
für weitere Vitaldaten wie Atmung, Körpertemperatur oder Herzfrequenz.
Schnittstellen
Am Markt für Medical Health Care Produkte existieren viele verschiedene Typen von Sensoren,
die verschiedene Schnittstellen zur Datenübertragung und Kommunikation benutzen. Um den
Biocomfort Health Manager als ganzheitliches Gesundheitssystem verwenden zu können, sollte
dieser möglichst viele verschiedene Schnittstellen unterstützen.
Zigbee ZigBee ist ein Funknetz-Standard und ermöglicht es Haushaltsgeräte, Sensoren, uvm.
auf Kurzstrecken (10 bis 100 Meter) zu verbinden. Da dieser ebenfalls auf IEEE 802.15.4 basiert,
müsste dabei nur um den Zigbee-Protokollstack erweitert werden.
Kapitel 5 Zusammenfassung und Ausblick
36
ANT Der proprietäre ANT Drahtlosstandard wird durch Dynastream Innovations, einer GarminTochter, vermarktet. Ant eignet sich durch niedrige Leistungsaufnahme und hohe Effizienz gut
für medizinische Sensoren. Sensoren können entweder über einen USB-Dongle oder direkt mit
ANT-Kompatiblen Android-Geräten eingebunden werden. Viele Sensoren verschiedener Hersteller,
z.B. Garmin [23] oder FitBit [24], verwenden den ANT-Standard und schon deshalb wäre eine
Erweiterung sinnvoll.
Bluetooth Bluetooth ist gemäß dem Industriestandard IEEE 802.15.1 für die Datenübertragung
zwischen Geräten über kurze Distanz geeignet. Die meisten aktuellen Smartphones beinhalten
bereits entsprechende Schnittstellen, wodurch man nicht mehr auf externe Geräte wie ein USBGateway angewiesen ist. Bluetooth ist sehr verbreitet, unter anderem auch für drahtlose Medizinsensorik. In kürze werden auch Biocomfort Medizingeräte und das USB-Gateway optional mit
Bluetooth ausgeliefert [25].
Wireless LAN Die drahtlose Familie von lokalen Funknetzstandards IEEE-802.11 wird von nahezu allen Android-Smartphones unterstützt. Zusätzliche Hardware, wie z.B. ein USB-Dongle ist
deshalb hierbei nicht nötig. Jedoch muss die Applikation über den Wireless Local Area Network
(WLAN) Standard gesendete Daten aufnehmen können.
5.2.2 Software
Personal Fitness Trainer
Personal Fitness Trainer Applikationen wählen Übungen basierend auf den persönlichen Vitaldaten,
der Ernährung, und des Übungsfortschritts aus. Ein Beispiel dafür ist Gymskill [26, 27], einem
Personal Trainer für Android, der für Übungen das smartphoneinterne Accelerometer in Verbindung
mit einem Balance Board nutzt.
Speziell bei Vitaldaten besteht im Personal Trainer meist keine direkte Verbindung zur Hardware.
Deshalb müssen gemessene Werte dann manuell für den jeweiligen Benutzer eingegeben werden.
Durch dieses Erfordernis sinkt bei vielen Benutzern die Akzeptanz der Applikation und schränkt die
Alltagstauglichkeit ein. Die sinnvollere Alternative dazu ist der Empfang von Vitaldaten von einem
Health Manager System. Um dies zu ermöglichen, muss der Personal Fitness Trainer lediglich ein
entsprechendes Interface zum Datenempfang implementieren. Dies wäre im Falle des Biocomfort
Health Assistant ein AIDL-Interface und beschränkt sich auf wenige Dateien. Somit werden neu
empfangene Daten automatisch an den Personal Trainer weitergeleitet und schon beim nächsten
Training berücksichtigt.
Kapitel 5 Zusammenfassung und Ausblick
37
Personal Trainer Applikationen benutzen außerdem oft Trainingsgeräte mit integrierter Sensorik,
wie z.B. Sensor-Virring [28]. Die Sensordaten der Trainingsgeräte dienen dabei meist der korrekten Ausführung von Übungen. Hierbei wäre nun denkbar, zusätzlich parallel Vitalwerte wie
Herzfrequenz oder Atmung zu messen. Dies ermöglicht, den Zustand des Benutzers während der
Übung zu überwachen und basierend darauf die Übung zu beschleunigen, zu verlangsamen oder
abzubrechen. Über gemessene Werte können zusätzlich kritische oder motivierende audiovisuelle
Anregungen, wie bereits von Kranz et al. [29] vorgeschlagen, durch die Personal Trainer Applikation gesteuert werden. Dies unterstützt die richtige Ausführung von Übungen und stellt deren
Intensität individuell auf den Benutzer ein.
Webservices
Die exklusive Speicherung der Daten auf dem Smartphone weißt nach wie vor einige Nachteile auf.
Einerseits besteht die Gefahr des Datenverlustes bei einem Gerätedefekt. Ein weiteres Problem
ist, dass bei Datenaufnahme auf verschiedenen Geräten keine Synchronisation möglich ist. Die
Weitergabe an andere beschränkt sich derzeit auf die direkte Einsicht am Smartphone. Weder eine
Überwachung von Pflegebedürftigen an entfernten Standorten, noch telemedizinische Anwendungen sind so möglich.
Alle diese Probleme können durch die Synchronisation mit einem Zentralen Speicherort gelöst werden. Diesen zentralen Speicher bildet hier ein Webserver, der bei bestehender Internetverbindung
immer erreichbar ist. Durch die geringe Datenmenge ist die Übertragung auch bei teils noch
langsamer Internetverbindung am Smartphone gut möglich. Dadurch kann auch durch telemedizinische Instanzen ein schneller Eingriff erfolgen.
Generell ist eine Anbindungen an jeden telemedizischen Webdienst möglich. Im Biocomfort Health
Manager SDK sind Anbindungen zu den Diensten Aentos and Seniokom implementiert, welche
sich deshalb für den Biocomfort Health Assistant on Android anbieten würden.
Erinnerung und Planung
Zur langsfristigen Überwachung von Patienten wird vom Hausarzt häufig die periodische Aufnahme
bestimmer Vitalwerte verordnet. Die Einhaltung dieser über mehrere Wochen kann vor allem im
Alltag schwierig sein. Die Regelmäßigkeit der Messungen sollte deshalb durch Erinnerung und
Planung unterstützt werden.
Dies kann dabei am Smartphone, oder noch besser direkt vom Health Manager aus geschehen.
Die Integration im Health Manager bietet dabei den Vorteil, dass geplante Messungen mit erfolgten Messungen abgeglichen und dem Benutzer somit Feedback darüber gegeben werden kann.
Kapitel 5 Zusammenfassung und Ausblick
38
Außerdem ist die direkte Anzeige von Erinnerungen am Smartphone über Systembenachrichtigungen möglich. Bei der Planung besteht nun die Möglichkeit, die Häufigkeit und zeitliche Verteilung
gezielt auf die Wünsche des Benutzers, Verordnungen des Arztes oder die unterschiedlichen Sensoren einzustellen. Die Gewichtsmessung kann z.B. einmal wöchentlich, die Blutzuckermessung
morgens und Abends erfolgen. Zusätzlich wäre eine Timerfunktion für die Einnahme von Medikation denkbar. Um geplante Messungen oder Medikamente mit anderen Kalenderdaten zu kombinieren, kann diese Funktion mit bestehenden Diensten wie dem Google Calendar [30] zusammenarbeiten.
Abbildungsverzeichnis
2.1
ECG Monitoring Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Biocomfort USB-Dongle und Messgeräte . . . . . . . . . . . . . . . . . . . . . .
7
3.1
Architektur des Android-Betriebssystems . . . . . . . . . . . . . . . . . . . . . .
11
3.2
Clockworkmod Recovery
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3
USB Hostcontroller Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.4
Übersicht Hardwarekonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.5
USB-Dongle und Medizingeräte . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.6
Übersicht der Programmfunktion . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1
Aufbau Service Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2
Allgemeine Funktion von Java Native Interface
. . . . . . . . . . . . . . . . . .
24
4.3
Einsatz von Java Native Interface . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.4
Benutzerauswahl und Benutzererstellung . . . . . . . . . . . . . . . . . . . . . .
27
4.5
Geräteübersicht, Messungsdetails und Messungsliste . . . . . . . . . . . . . . . .
28
4.6
Diagrammansicht je für Blutdruck-, Blutzucker und Waagenmessung . . . . . . .
29
4.7
MockSDK Gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
39
Literaturverzeichnis
[1] “Ärztezeitung.de,” mar 2012.
http://www.aerztezeitung.de/praxis_wirtschaft/
praxisfuehrung/article/806535/verdachtsfaelle-berufskrankheiten.html [Letzter Zugriff: 29. Mai 2012].
[2] “Welt Online,” mar 2012.
http://www.welt.de/gesundheit/article13621508/
Herzleiden-sind-die-haeufigste-Todesursache.html [Letzter Zugriff:
29. Mai
2012].
[3] Y.-H. Chu, Y.-C. Hsieh, C.-H. Wang, Y.-C. Pan, und R.-I. Chang, “Uphsm: Ubiquitous personal health surveillance and management system via wsn agent on open source smartphone,”
in e-Health Networking Applications and Services (Healthcom), 2011 13th IEEE International
Conference on, Seiten 60 –63, june 2011.
[4] P.-C. Hii und W.-Y. Chung, “A comprehensive ubiquitous healthcare solution on an android
mobile device,” Open Access, jun 2011.
[5] “Blutdruck App,” mar 2012. https://play.google.com/store/apps/details?id=com.
michaelfester.heart [Letzter Zugriff: 25. Mai 2012].
[6] “Blutdruck Logbuch App,” mar 2012. https://play.google.com/store/apps/details?
id=com.ptashek.bplog [Letzter Zugriff: 24. Mai 2012].
[7] “Withings
WiScale
App,”
mar
2012.
http://www.withings.com/de/waage/
funktionalitaten [Letzter Zugriff: 24. Mai 2012].
[8] NielsenWire, “Consumers purchasing new phones picked smartphones more often... while android was the top smartphone os,” Mar. 2012. http://blog.nielsen.com/nielsenwire/
?p=31688 [Letzter Zugriff: 9. Mai 2012].
[9] ComScore, “’Android tips the 51 percent mark in US share’,” Mar. 2012.
http://
www.engadget.com/2012/05/01/comscore-us-smartphone-share-march-2012/ [Letzter Zugriff: 9. Mai 2012].
[10] Linux Foundation, “Linux kernel source,” Mar. 2012. http://www.kernel.org/ [Letzter
Zugriff: 10. Mai 2012].
40
41
LITERATURVERZEICHNIS
[11] GNU Project, “Gnu general public license v2,” Mar. 2012. http://www.kernel.org/ [Letzter Zugriff: 10. Mai 2012].
[12] Android Open Source Project, “Android source,” Mar. 2012. http://source.android.
com/source/downloading.html [Letzter Zugriff: 10. Mai 2012].
[13] Android Lighthouse Project, “Creating native qt/c++ applications,” mar 2012. http://
sourceforge.net/p/necessitas/home/necessitas/ [Letzter Zugriff: 11. Mai 2012].
[14] “Screenshot
Clockworkmod,”
mar
2012.
http://www.giga.de/smartphones/
google-nexus/news/clockworkmod-recovery-3/ [Letzter Zugriff: 27. Mai 2012].
[15] Android Developers, “Usb accessory and host modes are directly supported in android 3.1,”
mar 2012. http://developer.android.com/guide/topics/usb/index.html [Letzter
Zugriff: 19. Mai 2012].
[16] “XDA Developers Webforum,” mar 2012. http://forum.xda-developers.com/ [Letzter
Zugriff: 23. Mai 2012].
[17] stzupy, “Inofficial kernel for nexus s with android 4.0 and otg-support,” mar 2012. http:
//forum.xda-developers.com/showthread.php?t=1459304 [Letzter Zugriff: 23. Mai
2012].
[18] Biocomfort, “Biocomfort health manager sourceforge project,” mar 2012.
http://
sourceforge.net/projects/hmjavasdk/files/ [Letzter Zugriff: 11. Mai 2012].
[19] Sun Microsystems, “The Java Native Interface Programmer’s Guide and Specification,” mar
2012. http://java.sun.com/docs/books/jni/html/jniTOC.html [Letzter Zugriff: 23.
Mai 2012].
[20] R. Gordon, essential JNI. Prentice Hall PTR, 2002.
[21] MrSiir, “adbwireless,” mar 2012. https://play.google.com/store/apps/details?id=
siir.es.adbWireless [Letzter Zugriff: 11. Mai 2012].
[22] Biocomfort, “Biocomfort Telemonitoring Geräte,” mar 2012. http://www.biocomfort.de/
telemonitoring_geraete.html [Letzter Zugriff: 19. Mai 2012].
[23] Garmin, mar 2012. http://www.garmin.com/de/ [Letzter Zugriff: 29. Mai 2012].
[24] FitBit, mar 2012. http://www.fitbit.com/de [Letzter Zugriff: 31. Mai 2012].
[25] Biocomfort, “Biocomfort USB Bluetooth Gateway,” mar 2012. http://www.biocomfort.
de/gateway_comfort.html [Letzter Zugriff: 19. Mai 2012].
[26] A. Möller, J. Scherr, L. Roalter, S. Diewald, N. Hammerla, T. Plötz, P. Olivier, und M. Kranz,
“Gymskill: Mobile exercise skill assessment to support personal health and fitness,” in Ninth
LITERATURVERZEICHNIS
42
International Conference on Pervasive Computing (Pervasive 2011), Video Proceedings, (San
Francisco, CA, USA), June 2011.
[27] A. Möller, L. Roalter, S. Diewald, J. Scherr, M. Kranz, N. Hammerla, P. Olivier, und T. Plötz,
“Gymskill: A personal trainer for physical exercises,” in Pervasive Computing and Communications (PerCom), 2012 IEEE International Conference on, Seiten 213 –220, march 2012.
[28] A. Schmidt, P. Holleis, und M. Kranz, “Sensor-Virrig - A Balance Cushion as Controller,”
Workshop Playing with Sensors at UbiComp 2004, Sep. 2004.
[29] M. Kranz, P. Holleis, W. Spiessl, und A. Schmidt, “The therapy top measurement and
visualization system - an example for the advancements in existing sports equipments,” International Journal of Computer Science in Sport, Band 5, Seiten 76–80, December 2006.
[30] “Google Calendar,” mar 2012. http://www.google.com/calendar [Letzter Zugriff: 27.
Mai 2012].