android share a run
DESCRIPTION
This is a pdf File which describes how android share a run workTRANSCRIPT
SHARE A RUN
AGENDA
Grundlagen Einführung Android Die Applikation Share A Run Resümee (Probleme und Fazit) Demo
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2
GRUNDLAGEN
Grundlagen – Die Idee
4Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
Grundlagen – Die Zielgruppe
zwischen 15 und 45 Jahren alt interessiert an neuen Technologien bürgerliche Mitte bis Oberschicht Freizeit- und Breitensportler Spaß am Laufen
5Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
Grundlagen – Anwendungsszenar io
6Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
GRUNDLAGEN – A N F OR DE R U N G E N
Aufteilung in Muss / Soll / Kann
Features
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 7
GRUNDLAGEN – M U S S F E A T U R E S
Ortung
Wettkampf (Punktevergabe)
Höhenberechnung
Visualisierung des Lauffortschritts
Kontaktplattform
Benutzerverwaltung
Kommunikation zwischen Endgerät und Server
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 8
GRUNDLAGEN – S OL L F E A T U R E S
Sprachausgabe
Geschwindigkeitsmessung
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 9
GRUNDLAGEN – K A N N F E A T U R E S
Updatebares Bewertungsprofil
Einzelspielermodus
Online Teilnehmerstatistik
Run Einstellungsparameter
Multi Run
Vor Verabredung
Anti Betrug
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 10
ANDROID
ANDROID - B A C K G R OU N D
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 12
Android ist Open Source und umfasst
Betriebssystem für mobile Endgeräte,
Middleware, Applikationen und SDK
Nov 07 Open Handset Alliance kündigt Android an
Sept 08 T-Mobile G1 wird vorgestellt
Android 1.0 SDK
Okt 08 Source Code wird veröffentlich
Apr 09: Android 1.5 SDK
ANDROID – E N T W IC K L U N G
Java als Programmiersprache
Android benutzt eigene VM DalvikVM
DalvikVM basiert auf Linux Kernel
Jede Applikationen läuft auf eigenem Prozess und DalvikVM Instanz
Android Applikation müssen sich nicht selbst beenden, sondern werden vom
System beendet (bei Ressourcenmangel)
Anwendungen können auf Android Market angeboten werden
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 13
ANDROID - A C T IVIT IE S Anzeige des graphischen User Interface Jeder Screen erbt von Activity Activties stellen Informationen dar oder reagieren auf Interaktionen des
Users
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 14
ANDROID - S E R VIC E S
besitzen kein User Interface
sind nicht sichtbar und laufen im Hintergrund
werden fortgesetzt auch wenn Activities nicht aktiv oder sichtbar sind
Services werden von Activities gesteuert
Callbacks benachrichtigen Activity wenn ein bestimmtes Ereignis auftritt
Service Schnittstelle wird mit Android Interface Definition Language definiert (.aidl)
interface IService {double getDownloadTime();double getFilename();double getFilepath();
}
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 16
ANDROID - L A Y OU T & G U I Layout ist getrennt von der Business Logik Layouts werden in XML Dateien definiert:
<LinearLayout . . . > <Button android:id="@+id/buttonShare"android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button“/>
</LinearLayout>
Zugriff auf XML Ressource
onCreate(){Button button = (Button) findViewById(R.id.buttonShare);button.setTextColor(Color.RED);
}
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 17
ANDROID - M A N IF E S T.XM L Jede Applikation benötigt eine Android Manifest.xml-Datei
Manifest enthält Informationen über die Applikation, die das Android System
benötigt um den Code der Applikation auszuführen
<manifest><uses-permission android:name="android.permission.BLUETOOTH"/> <application>
<uses-library> … </uses-library><activity android:name=".StartWindow">
. . . </activity><service android:name=".ShareARunService"></service>
</application><uses-sdk android:minSdkVersion="3"/>
</manifest>
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 18
ANDROID - E N T W IC K L U N G S U M G E B U N G
JDK 5 or 6 Eclipse 3.3 or 3.4 Android Development Tools Plugin Android SDK 1.5
Tools: Dalvik Debug Monitor Service Android Emulator Android Virtual Devices LogCat FileExplorer GPS Daten simulieren
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 19
APPLIKATION
Die Applikat ion – Technologien
XMPP (Smack Bibliothek)
Google Maps
GPS
Text To Speech
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch21
Philipp und Stefan
Nha-Phuong und Robert
Die Applikat ion – Archit ekt ur
UserWindow
ConfigurationWizardStart
RunSettingWindow
RunStartWindow RunWindow
MapsGPSWindow
StatisticWindow
XMPPService GPSService
ConfigurationWizardSetup
Die Applikat ion – XM PP
Extensible Messaging and Presence Protocol
XML basiert Instant Messaging direkte Kommunikation zwischen
Android Endgeräten Übertragung von Punkten und Status
Nachrichten
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch23
DIE APPLIKATION - XM P P E XA M P L E
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 4
Registriert•Implementiert
IXMPPUICallback.aidl
Erstellt Instanz•Implementiert
IXMPPService.aidl•Implementiert
XMPPServiceCallback.java
Verbindungsaufbau•Implementiert
Smackable.java•Verbindungsaufbau• Senden• Empfangen
Nachricht empfangen•Greift auf Methoden
des XMPPServiceCallbackInterface zu.
•Übergibt Nachricht an Service
Broadcast zu Activities•Leitet Nachricht an alle
angemeldeten Activities weiter
Handler•Nachricht wird an
Handler übergeben•Stellt Nachricht auf
Screen dar
SHARE A RUN - G P S
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 5
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates("gps",5,10,locationListener);
private final LocationListener locationListener = newLocationListener() {
public void onLocationChanged(Location l) {l.getLatitude();l.getLongitude();l.getAltitude();l.getSpeed();
Location.distanceBetween(oldLatitude, oldLongitude, newLatitude, newLongitude, result[0]);
}}
SHARE A RUN - G P S
Distanz zum Ursprung: Distanz von: Startwerten/neuen Werten
Wegberechnung: Distanz von: alten Werten/neuen Werten Gesamtweg = Gesamtweg + Distanz neue Werte werden zu alten Werten
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 6
SHARE A RUN - G P S
Höhenberechnung:
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 7
10 Meter
5 MeterHyp = 11.18
Long /Lat/Alt Long /Lat
Alt
SHARE A RUN - G P S L OG
GPX File:<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" xm …..
<metadata> … </metadata><trk><name>ShareARun</name><trkseg>
<trkpt lat="48.74176740646362" lon="9.100788831710815"><ele>444.0</ele><time>2008-10-06T09:18:33Z</time>
</trkpt></trkseg>
</trk></gpx>
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 8
SHARE A RUN – T E XT T O S P E E C H
Installieren der TTS Anwendung auf dem Endgerät Einbinden der Library in der eigenen Anwendung
Codebeispiel:
import com.google.tts.TTS;private TTS myTts;private TTS.InitListener ttsinitListner = new TTS.InitListener() {
public void onInit(int version) {myTts.speak(„Share a run“, 0, null);
}};myTts = new TTS(GPSTracker.this, ttsinitListner, true);
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 2 9
SHARE A RUN – M A P VIE W
Verwendung der Google Maps API
Einbinden im Manifest: <uses-library android:name="com.google.android.maps" />
<uses-permission android:name="android.permission.INTERNET" />
Layout definieren
Layout in Activity verwenden
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 30
SHARE A RUN – M A P VIE W
Layout<com.google.android.maps.MapView android:id="@+id/mapview"android:layout_width="fill_parent" android:layout_height="fill_parent"android:clickable="true" android:apiKey="Your Maps API Key" />
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 31
SHARE A RUN – M A P VIE W
public class HelloMapView extends MapActivity {…
MapView mapView = (MapView) findViewById(R.id.mapview); MapController mc = mapview.getController();mc.setCenter(geopoint);mc.animateTo(geopoint);
…}
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 32
ANDROID P R O A N D CON T R A
PRO
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 34
PRO – E N T W IC K L U N G S U M G E B U N G
Einfach einzubinden in bestehende Eclipse Platform (Software Updates)
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 35
Generated R.java Interface Activity und Code Behind
PRO – E N T W IC K L U N G S U M G E B U N G
Eclipse-Debugger wird verwendet Umfangreiche Debugmöglichkeiten
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 36
Installation Einfach auf Gerät zu installieren Muss nicht Zertifiziert werden
PRO – S DK
Zentrale Verwaltung der Activities
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 37
Einfache Benutzung mehrerer Sprachen
Automatische Verwendung
Umfangreiche Klassenbibliothek
PRO – S DK
Übersicht aller Prozesse pro Emulator
Logging tool LogCat
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 38
Interaktion mit Device durch Emulator Control Übersicht aller verwendeten Threads, freier und
belegter Speicher und Dateien
PRO – E M U L A T OR
Umfangreiche Testumgebung Fast 1:1 zu Gerät Emulation von Bewegung Emulation von GPS Mehrere Emulatoren
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 39
CONTRA
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 0
CONTRA – E N T W IC K L U N G S U M G E B U N G
Generated R.java R.java lässt sich nicht manuell
generieren
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 1
Layout-Designer unzureichend
CONTRA – S DK
Versionen nicht kompatibel(nicht Abwärtskompatibel)
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 2
Multithreading verwirrend
CONTRA – S DK
Lifecycle für Neueinsteiger schlecht zu durchschauen.
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 3
CONTRA – E M U L A T OR
Oft Disconnected Emulator-Bug unter MS Vista GPS-Bug (maximal 2 Koordinatensätze) Startet langsam
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 4
CONTRA – DE VIC E
Keine Multi-Touch-Funktion Relativ schlechter GPS-Empfänger
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 5
M USS - F E A T U R E S
Ortung
Wettkampf (Punktevergabe)
Höhenberechnung
Visualisierung des Lauffortschritts
Kontaktplattform
Kommunikation zwischen Endgerät und Server
Benutzerverwaltung
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 6
Kommunikation zwischen Endgerät und Endgerät
( )
SOLL - F E A T U R E S
Sprachausgabe
Geschwindigkeitsmessung
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 7
KANN - F E A T U R E S
Updatebares Bewertungsprofil
Einzelspielermodus
Online Teilnehmerstatistik
Run Einstellungsparameter
Multi Run
Vor Verabredung
Anti Betrug
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 8
ORGANISATION
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4 9
WIR – S HA R E A R U N
5 0Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
Da nke f ür die A uf me r ks a mke it !!!E U E R S HA R E A R U N - T E A M