Personal Beat

Personal Beat

Stand: 02/2013
Lesedauer: ca. 9 Minuten

Inhalt:

  • Konzept

  • Implementierte Funktionen

  • Relationales Datenmodell

  • Wiedergabeliste

  • Beispiel Wiedergabeliste

  • Benötigte Zugriffsrechte

  • Publikationen

Personal Beat wurde im Rahmen der Vorlesung Pervasive Computing als interdisziplinäres Projekt an der Hochschule Coburg von den Informatikern Christian Schelter und Michael Koch sowie von den Designerinnen Melanie Wittig und Barbara Märzendorfer umgesetzt. Hierbei war das Augenmerk auf einer App gelegen, welche einen Benutzer beim Sport durch Sensoren überwacht und unterstützt. Aus dieser Anforderung ist eine App entstanden, welche den Puls eines Sporttreibenden überwacht und versucht diesen aufgrund der aktuell spielenden Musik aktiv zu beeinflussen.

Konzept


Abbildung 1: Konzept von Personal Beat

Die App besteht im Wesentlichen aus zwei Hauptkomponenten, dem Activity Program und dem Music Manager. Das Activity Program dient der Datenerfassung und der Interaktion mit dem Benutzer. Wird ein Trainingsprogramm gestartet, so werden kontinuierlich Sensordaten (GPS-Position, Puls und Sauerstoffsättigung) erfasst und in einer Datenbank gespeichert. Das interdisziplinäre Projekt Personal Beat umfasste auch die Gestaltung eines Pulsoximeters am Handgelenk und eines Kopfhörers [Abbildung 1] durch die Designerinnen Melanie Wittig und Barbara Märzendorfer, wobei sich dieser Artikel ausschließlich mit der App Personal Beat befasst, welche durch die Informatiker Christian Schelter und Michael Koch entwickelt wurde. Die erfassten Sensordaten werden an den Music Manager weitergeleitet, dessen Aufgabe es ist, die passende Trainingsmusik zu spielen. Ist der Puls geringer als der optimale Trainingspuls, wird Musik mit einem schnellen Takt gespielt, ist der Puls hingegen zu hoch, wird Musik mit einem langsamen Takt gespielt. Die verfügbaren Lieder werden in einer speziell erweiterten XSPF-Wiedergabeliste bereitgestellt (siehe unten). Der optimale Trainingspuls kann entweder in den Einstellungen manuell angegeben oder durch die App mittels Eingabe des Alters, Gewichts und Körpergröße selbstständig berechnet werden. Zudem kann in den Einstellungen festgelegt werden, ob die aktuellen Positionsdaten aufgezeichnet werden sollen, um die gelaufene Strecke mithilfe der integrierten Kartenansicht zu visualisieren. Während eines Telefonats wird die Musikwiedergabe automatisch pausiert.

Implementierte Funktionen

Im Folgenden werden vier ausgewählte Funktionen vorgestellt:

Programmauswahl


Abbildung 2: Programmauswahl

Dem Benutzer stehen drei unterschiedliche Trainingsprogramme [Abbildung 2] zur Verfügung. Die Schwellwerte für langsame und schnelle Musik unterscheiden sich jeweils zwischen den Trainingsprogrammen.

Programm: Joggen


Abbildung 3: Programm: Joggen

Alle Trainingsprogramme sind nach demselben Schema aufgebaut. Die Oberfläche ähnelt einem normalen Musicplayer und zeigt zusätzlich den gemessenen Puls, die Sauerstoffsättigung, die zurückgelegte Entfernung und den Status der Smartphonebatterie an. Welche Musik gespielt wird, kann in einer speziellen Wiedergabeliste festgelegt werden (siehe unten).

Historie


Abbildung 4: Historie

Personal Beat speichert automatisch sämtliche Trainingsdaten und zeigt diese dem Benutzer in der Ansicht Historie in chronologischer Reihenfolge. Durch einen Klick auf einen Eintrag werden detaillierte Informationen zu dem ausgewählten Trainingslauf angezeigt.

Detailansicht


Abbildung 5: Detailansicht

In der Detailansicht werden die erfassten Daten, wie beispielsweise maximaler, minimaler und durchschnittlicher Puls, des Trainingslaufs angezeigt. Hat der Benutzer in den Einstellungen der GPS-Aufzeichnung zugestimmt, so wird die gelaufene Strecke auf einer Landkarte visualisiert.

Relationales Datenmodell

Im Folgenden werden die Personal Beat zugrunde liegenden Datenmodelle aufgezeigt und beschrieben.

Einstellungen


Abbildung 6: Datenmodell der möglichen Einstellungen

Android stellt für die Speicherung von Anwendungseinstellungen einen eigenen Mechanismus (vgl. Windows Registry) bereit, dessen Einsatz als "guter Stil" nahegelegt wird. Die Verwendung dieser Funktionalität hat für Anwendungsentwickler den Vorteil, dass die komplette Verwaltung, sowie die Visualisierung der Konfigurationsdaten ohne eigenen Programmieraufwand automatisch abgewickelt wird. Aus Benutzersicht ergibt sich der Vorteil, dass die meisten Apps und auch das Betriebssystem diesen Mechanismus einsetzen und somit die Einarbeitung erleichtert wird.

In den Einstellungen werden diverse Werte, wie in [Abbildung 6] dargestellt, gespeichert.

Weitere Informationen zu den Einstellungen:

  • Android unterstützt zu einem Zeitpunkt nur eine aktive Benutzersitzung, weshalb Messwerte und Konfigurationsparameter automatisch dem Benutzer zugeordnet werden können, der gerade am Smartphone angemeldet ist.

  • Die Ermittlung des gerade angemeldeten Benutzers erfordert das Privileg GET_ACCOUNTS.

  • Es ist unwahrscheinlich, dass mehr als ein Benutzer die App verwendet, da ein Smartphone in aller Regel genau einem Benutzer fest zugeordnet ist. Das Datenmodell ist aber in dieser Form auch für mehrere Benutzer ausgelegt, falls sich das Nutzungskonzept von Smartphones in den nächsten Jahren ändern sollte.

  • Der Benutzername ist eine Pflichtangabe.

SQLite Datenbank

,

Abbildung 7: Datenbankmodell der Personal Beat App

Tabelle: RUN
  • Die Tabelle enthält die Ablaufdaten einer jeden Trainingseinheit des Benutzers, wie beispielsweise Start- und Endzeitpunkt.

  • Für jede Programmausführung wird eine eindeutige, fortlaufende Identifikationsnummer automatisch erzeugt, welche den PRIMARY-KEY darstellt.

  • Die Identifikationsnummer des Benutzers ist ein FOREIGN-KEY.

  • Der Programmname ist eine Pflichtangabe.

  • Der Endzeitpunkt muss nach dem Startzeitpunkt liegen.

Tabelle: SAMPLE
  • Die Tabelle enthält die aktuellen Sensormesswerte zu einem bestimmten Zeitpunkt während einer Trainingseinheit.

  • Für jede Sensorabfrage wird eine eindeutige, fortlaufende Identifikationsnummer automatisch erzeugt, welche den PRIMARY-KEY darstellt.

  • Die Identifikationsnummer des aktuell ausgeführten Programms ist ein FOREIGN-KEY.

  • Die aktuelle Uhrzeit ist eine Pflichtangabe.

  • Sensordaten können NULL sein, falls ein gewisser Sensor nicht angesprochen werden kann.

Wiedergabeliste

Die App nutzt eine speziell erweiterte XSPF-Wiedergabeliste als Grundlage, welches Lied in welcher Situation gespielt werden soll und wann sich ein flüssiger Übergang zum nächsten Lied anbietet.

Das XSPF-Format wurde deshalb gewählt, weil es von den meisten gängigen Musik Programmen unterstützt wird und beliebig durch programmspezifische Informationen erweitert werden kann. Somit muss der Anwender für Personal Beat keine eigene Wiedergabeliste definieren und pflegen, sondern kann diese auch mit anderen Programmen abspielen.

Spezifikation der Wiedergabeliste

Element Req.2 Value Type Description
playlist yes - XSPF v1 specification
title yes anyURI XSPF v1 specification
creator no anyURI XSPF v1 specification
annotation no anyURI XSPF v1 specification
info no anyURI XSPF v1 specification
location no anyURI XSPF v1 specification
identifier no anyURI XSPF v1 specification
image no anyURI XSPF v1 specification
date no dateTime XSPF v1 specification
license no anyURI XSPF v1 specification
attribution no - XSPF v1 specification
link no - XSPF v1 specification
meta no - XSPF v1 specification
extension no - XSPF v1 specification
trackList yes - XSPF v1 specification
track yes - XSPF v1 specification
title no anyURI XSPF v1 specification
creator no anyURI XSPF v1 specification
annotation no anyURI XSPF v1 specification
info no anyURI XSPF v1 specification
location yes anyURI XSPF v1 specification
identifier no anyURI XSPF v1 specification
album no anyURI XSPF v1 specification
trackNum no non negative Integer XSPF v1 specification
duration no non negative Integer XSPF v1 specification
link no - XSPF v1 specification
meta no - XSPF v1 specification
extension no - XSPF v1 specification
musicClass no {FAST, NORMAL, SLOW} When shall we play the music?
breakMode no {EVER, NEVER, BREAK-POINTS} When shall we stop the music?
breakPoints no - When can we stop the music?
breakPoint no non negative Integer Time in milliseconds after start

XSPF Version 1 Spezifikation: http://xspf.org/xspf-v1.html

1 XSPF: Namespace-URI: http://xspf.org/ns/0/, Prefix: xspf | personal beat, Prefix: pb

2 Für die App Personal Beat wird mindestens jeweils ein Element benötigt, auch wenn durch die Multiplizität kein Element zwingend vorgeschrieben ist.

3 Selektiert nur das erste <extension>-Element

Beispiel einer XSPF-Wiedergabeliste

<track>
  <location>file://imntisdcard/FILENAME.mp3</location>
  <title>Chinese Girl</title>
  <creator>FRAMETRAXX</creator>
  <duration>215776</duration>
  <extension application="http://xyz.de/pb/v1">
    <pbeat:musicClass>NORMAL</pbeat:musicClass>
    <pbeat:breakMode>BREAKPOINTS</pbeat:breakMode>
    <pbeat:breakPoints>
      <pbeat:breakPoint>40000</pbeat:breakPoint>
      <pbeat:breakPoint>80000</pbeat:breakPoint>
    </pbeat:breakPoints>
  </extension>
</track>

Benötigte Zugriffsrechte

Zugriff auf den GPS-Sensor

android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION

Zugriff auf die Bluetooth-Schnittstelle

android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN

Aktuellen Benutzernamen ermitteln

android.permission.GET_ACCOUNTS

Zugriff auf Wiedergabelisten und Musikdateien auf der SD-Karte

android.permission.WRITE_EXTERNAL_STORAGE

Publikationen

[LINK] Videobeitrag vom Coburger Hochschulfernsehen

[LINK] Pressemitteilung der Hochschule Coburg

[PDF] Beitrag in affin - Das Forschungsmagazin der Hochschule Coburg 2013 (Seite 66f)

[LINK] Zeitungsartikel der Neuen Presse

[LINK] Veröffentlichung beim Informationsdienst Wissenschaft

[LINK] Veröffentlichung auf netzathleten.de

[LINK] Veröffentlichung auf crn.de

[LINK] Veröffentlichung auf femicare.de

[LINK] Veröffentlichung auf flat-is-smart.de

[LINK] Veröffentlichung auf "Entdecke Deutschland" (Auswärtiges Amt)

[PDF] Veröffentlichung im Newsletter Nr. 20 / 21.03.2013 der Deutschen Botschaft in Sofia (Deutsch)

[PDF] Veröffentlichung im Newsletter Nr. 20 / 21.03.2013 der Deutschen Botschaft in Sofia (Bulgarisch)