Android Share A Run

Preview:

DESCRIPTION

This is a pdf File which describes how android share a run work

Citation preview

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

Recommended