2. A GENDA
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
4. Gr undlagen – Die Idee
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 4
5. Gr undlagen – Die Zielgr uppe
zwischen 15 und 45 Jahren alt
interessiert an neuen Technologien
bürgerliche Mitte bis Oberschicht
Freizeit- und Breitensportler
Spaß am Laufen
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 5
6. Gr undlagen – A nwendungs s zenar io
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 6
7. GRUNDL A GEN – 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
8. GRUNDL A GEN – 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
9. GRUNDL A GEN – 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
10. GRUNDL A GEN – 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
12. A NDROID - B A C K G R OU N D
Nov 07 Open Handset Alliance kündigt Android an
Android ist Open Source und umfasst Sept 08 T-Mobile G1 wird vorgestellt
Betriebssystem für mobile Endgeräte, Android 1.0 SDK
Okt 08 Source Code wird veröffentlich
Middleware, Applikationen und SDK
Apr 09: Android 1.5 SDK
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 12
13. A NDROID – 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
14. A NDROID - A C T IV IT 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
15.
16. A NDROID - S E R V IC 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
17. A NDROID - 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
18. A NDROID - 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
19. A NDROID - 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
21. Die A pplikat ion – Technologien
XMPP (Smack Bibliothek) Philipp und
Stefan
Google Maps
GPS Nha-Phuong
und Robert
Text To Speech
21 Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
22. Die A pplikat ion – A r chit ekt ur
Configuration Configuration MapsGPS
WizardStart WizardSetup Window
RunSetting RunStart Statistic
UserWindow RunWindow
Window Window Window
XMPPService GPSService
23. Die A pplikat ion – XM PP
Extensible Messaging and Presence
Protocol
XML basiert
Instant Messaging
direkte Kommunikation zwischen
Android Endgeräten
Übertragung von Punkten und Status
Nachrichten
23 Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch
24. DIE A PPL IKATION - XM P P E XA M P L E
Handler
Registriert Broadcast zu Activities
Erstellt Instanz Verbindungsaufbau
Nachricht empfangen
•Implementiert an
•Nachricht wird •Implementiert an alle
•Leitet Nachricht •Implementiert
•Greift auf Methoden
IXMPPUICallback.aidl
Handler übergeben IXMPPService.aidl
angemeldeten Smackable.java
des
•Stellt Nachricht auf Activities weiter
•Implementiert •Verbindungsaufbau
XMPPServiceCallback
Screen dar XMPPServiceCallback. •Interface zu.
Senden
java • Empfangen
•Übergibt Nachricht an
Service
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 24
25. SHA RE A RUN - G P S
LocationManager lm =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates("gps",5,10,locationListener);
private final LocationListener locationListener = new
LocationListener() {
public void onLocationChanged(Location l) {
l.getLatitude();
l.getLongitude();
l.getAltitude();
l.getSpeed();
Location.distanceBetween(oldLatitude, oldLongitude,
newLatitude, newLongitude, result[0]);
}
}
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 25
26. SHA RE 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 26
27. SHA RE A RUN - G P S
Alt
Höhenberechnung:
Hyp = 11.18
5 Meter
10 Meter
Long /Lat/Alt Long /Lat
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 27
28. SHA RE 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 28
29. SHA RE 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 29
30. SHA RE A RUN – M A P V IE 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
31. SHA RE A RUN – M A P V IE 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
32. SHA RE A RUN – M A P V IE 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
35. 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)
Generated R.java
Interface Activity und Code Behind
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 35
36. 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
Installation
Einfach auf Gerät zu installieren
Muss nicht Zertifiziert werden
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 36
37. PRO – S DK
Zentrale Verwaltung der Activities
Einfache Benutzung mehrerer
Sprachen
Automatische Verwendung
Umfangreiche Klassenbibliothek
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 37
38. PRO – S DK
Übersicht aller Prozesse
pro Emulator
Logging tool LogCat
Interaktion mit Device durch Emulator Control
Übersicht aller verwendeten Threads, freier und
belegter Speicher und Dateien
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 38
39. 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
41. 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
Layout-Designer unzureichend
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 41
42. CONTRA – S DK
Versionen nicht kompatibel
(nicht Abwärtskompatibel)
Multithreading verwirrend
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 42
43. CONTRA – S DK
Lifecycle für Neueinsteiger schlecht
zu durchschauen.
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 43
44. 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 44
45. CONTRA – DE V IC E
Keine Multi-Touch-Funktion
Relativ schlechter GPS-Empfänger
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 45
46. 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
Endgerät
Benutzerverwaltung
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 46
47. SOL L - F E A T U R E S
Sprachausgabe
Geschwindigkeitsmessung
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 47
48. KA NN - 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 48
50. WIR – S HA R E A R U N
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
Nha-Phuong Nguyen | Philipp Lehmann | Robert Krüger | Stefan Zülch 50