Heiko Mosemann Matthias Kose Android Anwendungen für das Handy-Betriebssystem erfolgreich programmieren HANSER
Inhaltsverzeichnis 1 Android stellt sich vor 1 1.1 Warum Java? ' 2 1.2 Einschränkungen 3 1.3 Android-Endgeräte 3 1.3.1 Gl von HTC 4 1.3.2 G2 von HTC 5 1.4 Android Architektur 5 1.4.1 Der Android System Stack 5 1.4.2 Linux Kernel 6 1.4.3 Libraries 6 1.4.4 Android Runtime 7 1.4.5 Application Framework 9 1.4.6 Applikationen 9 1.5 Open Handset Alliance 10 1.5.1 Endgerätehersteller 10 1.5.2 Mobilfunkbetreiber 11 1.5.3 Softwarefirmen 13 1.5.4 Halbleiterfirmen 14 1.5.5 Commercialization Companies 14 1.5.6 Die Android-Strategie von Google 14 1.5.7 Google/OHA gegen Nokia/Symbian 15 2 Erste Schritte 17 2.1 Android sagt Hallo" 17 2.1.1 Die Werkzeuge 17 2.2 Androids Installation 18
VI Inhaltsverzeichnis 2.2.1 System-Voraussetzungen (engl. System requirements)... 19 2.2.2 Installation auf einem PC 19 2.3 Beispielprogramme im Android SDK 21 2.3.1 Installieren der ApiDemo-Beispielprogramme 22 3 Android Development Tools 25 3.1 Android Tools 25 3.1.1 Android Emulator 25 3.1.2 Android Development Tools(ADT)-Plugin,27 3.1.3 Hierarchy Viewer 27 3.1.4 Draw9-Patch 29 3.1.5 Dalvik Debug Monitor Service (DDMS) 30 3.1.6 Android Debug Bridge (adb) 33 3.1.7 Android Asset Packaging Tool (aapt) 34 3.1.8 Android Interface Description Language (aidl) 35 3.1.9 sqlite3 35 3.1.10 mksdcard 35 3.1.11 Traceview 35 3.1.12 dx 37 3.1.13 UI/Application Exerdser Monkey 37 3.1.14 activitycreator 38 3.2 Android auf einem Gerät 38 3.2.1 Treiberinstallation 38 3.2.2 Screenshots, 41 4 Vermarktung von Android-Applikationen 43 4.1 Generelle Erfolgsfaktoren mobiler Applikationen 43 4.1.1 Technische Qualität der mobilen Applikation 44 4.1.2 Märktforschung - Nutzerperspektive 44 4.1.3 Benutzerfreundlichkeit der mobilen Applikation 45-- 4.1.4 Nutzen der mobilen Applikation 45 4.1.5 Wettbewerbsvorteil der mobilen Applikation 48 4.1.6 Marke - Markenführung - Branding 49 4.1.7 Kommunikation mit den Nutzern 49 4.2 Android Market 51 4.2.1 Android Market aus der Nutzerperspektive 51
Inhaltsverzeichnis ^ VII 4.2.2 Android Market aus der Anbieterperspektive 52 4.2.3 Fallbeispiel: Android Market aus Nutzersicht 54 4.3 Weitere Android-Portale 57 4.3.1 Handango 58 4.3.2 Androidgear.' 58 4.4 Distribution von Android-Applikationen auf der eigenen Website. 59 4.5 Suchmaschinenmarketing 60 4.5.1 Suchmaschinenwerbung 60 4.5.2 Suchmaschinenoptimierung 68 5 Applikationen und Aktivitäten 73 5.1 Komponenten einer Applikation 73 5.1.1 Die Manifestdatei 74 5.2 Der Lebenszyklus einer Applikation 77 5.3 Ressourcen 79 5.3.1 Ressourcen im Ordner res/values 80 5.3.2 Verwendung der Ressourcen im Code 82 5.3.3 Ressourcen für Lokalisierung und Hardware 83 5.4 Aktivitäten 85 5.4.1 Der Lebenszyklus einer Aktivität 86 6 Intent und BroadcastReceiver 89 6.1 Die Klasse Intent 89 6.1.1 Aktivitäten mit Intents starten 90 6.1.2 Rückgabedaten von Aktivitäten 90 6.1.3 Intent Filter 91 6.2 BroadcastReceiver 93 7 Androids Benutzungsschnittstellen 97 7.1 XML-basierte Layouts 99 7.1.1 Die Klasse View 101 7.1.2 Die Klasse AnalogClock 104 7.1.3 Die Klasse ImageView 105 7.1.4 Die Klasse ImageButton 106 7.1.5 Die Klasse ProgressBar 108 7.1.6 Die Klassen AbsSeekBar, RatingBar und SeekBar 109
VIII Inhaltsverzeichnis 7.1.7 Die Klassen Surf ace View und Video View 109 7.1.8 Die Klasse TextView 111 7.1.9 Die Klasse Button 116 7.1.10 Die Klasse CompoundButton. ^ 116 7.1.11 Die Klasse CheckBox >. :... 117 7.1.12 Die Klasse RadioButton 117 7.1.13 Die Klasse ToggleButton.. 117 7.1.14 Die Klasse CheckedTextView 118 7.1.15 Die Klasse Chronometer 118 7.1.16 Die Klasse DigitalClock. 118 7.1.17 Die Klasse EditText 119 7.1.18 Die Klassen AutoCompleteTextView und MultiAutoCompleteTextView ^ 119 7.1.19 Die Klasse ViewGroup 120 7.1.20 Die Klasse AbsoluteLayout.- 122 7.1.21 Die Klasse Web View 124 7.1.22 Die Klasse AdapterView :. 124 7.1.23 Die Klasse AbsListView 124 7.1.24 Die Klasse GridView 124 7.1.25 Die Klasse ListView 125 7.1.26 Die Klasse ExpandableListView 126 7.1.27 Die Klasse AbsSpinner 127 7.1.28 Die Klasse Gallery 128 7.1.29 Die Klasse Spinner 128 7.1.30 Die Klasse FrameLayout 129 7.1.31 Die Klasse DatePicker 130 7.1.32 Die Klasse MediaController 130 7.1.33 Die Klasse ScrollView 131 7.1.34 Die Klasse TabHost 131 7.1.35 Die Klasse TimePicker 131 7.1.36 Die Klassen View Animator und ViewFlipper 131 7.1.37 Die Klassen ViewSwitcher, ImageSwitcher und TextSwitcher 132 7.1.38 Die Klasse LinearLayout 132 7.1.39 Die Klasse RadioGroup 132 7.1.40 Die Klasse TabWidget 134 7.1.41 Die Klassen TableLayout und TableRow 134
Inhaltsverzeichnis. IX 7.1.42 Die Klasse ZoomControls 136 7.1.43 Die Klasse Map View 136 7.1.44 Die Klasse RelativeLayout 136 7.1.45 Die Klasse TwoLineListltem 139 7.1.46 Die Klasse ViewStub 140-7.2 Klassendiagramme der Views und ViewGroups 141 7.3 Das Werkzeug Hierarchy Viewer 141 7.4 Das Werkzeug DroidDraw 141 7.5 Methoden zur Verwaltung der Klasse View 143 7.5.1 Position, Größe und Abstände eines Views 143 7.5.2 Der Layoutvorgang und das Zeichnen des Views 145 7.5.3 Behandlung des Fokus und der Sichtbarkeit 146 ; 8 Ereignisse der Benutzungsschnittstellen 149 8.1 Die Listener der Klasse View. 149 8.2 Ereignisbehandlung für Klicks 150 8.3 Ereignisbehandlung für Tastatureingaben 154 8.4 Ereignisbehandlung bei Änderung des Fokus? 158 8.5 Ereignisbehandlung bei Berührung des Bildschirms 163 8.6 Ereignisbehandlung bei den Klassen RatingBar und SeekBar... 166 8.7 Ereignisbehandlung bei den Klassen CompoundButton, CheckBox, RadioButton und ToggleButton 166 8.8 Ereignisbehandlung bei der Klasse ViewGroup 167 8.9 Ereignisbehandlung bei der Klasse AdapterView 167 8.10 Ereignisbehandlung bei der Klasse AbsListView :. 168 8.11 Ereignisbehandlung bei der Klasse ExpandableListView 168 8.12 Ereignisbehandlung bei den Klassen DatePicker und TimePicker. 173 8.13 Ereignisbehandlung bei der Klasse TabHost 174 8.14 Ereignisbehandlung bei der Klasse RadioGroup 176 8.15 Ereignisbehandlung bei der Klasse ViewStub 176 9 Options- und Kontextmenüs 177 9.1 Optionsmenüs 177 9.1.1 Untermenüs 183 9.2 Kontextmenüs 185
Inhaltsverzeichnis 10 Dialoge und Toasts 189 10.1 Die Klasse Dialog 189 10.1.1 Die Klasse AlertDialog 191 10.1.2 Spezialisierte Dialoge 192 10.1.3 Persistente Dialoge '. 193 10.2 Aktivitäten als Dialoge 194 10.3 Toast 195 11 Hintergrundarbeit 197 11.1 Die Klasse Service 197 11.2 Threads für die Arbeit im Hintergrund 200 11.3 Toasts in Arbeitsthreads 202 11.4 Benachrichtigungen mit der Klasse Notification 203 11.4.1 Eigenschaften einer Benachrichtigung 206 11.4.2 Benachrichtigung über Töne 206 11.4.3 Benachrichtigung mit Vibration 206 11.4.4 Benachrichtigung mit LEDs 207 11.5 Alarme,.207 12 Daten 209 12.1 Einstellungen und Zustand speichern 209 12.1.1 Zustand einer Aktivität speichern 209 12.1.2 Einstellungen speichern 212 12.2 Dateien 215 12.2.1 Dateien auf der SD-Karte v.... 216 12.3 Datenbanken,.. 217 12.3.1 Komplexere Datenbankanfragen 221 12.4 Content Provider 224 12.4.1 Verwendung eines ContentProviders 225 12.4.2 Implementierung eines ContentProviders 231 13 SMS 233 13.1 Senden einer SMS 233 13.1.1 Senden und Ausliefern kontrollieren 235 13.2 Empfangen einer SMS 235 13.3 Beispiele,.236
Inhaltsverzeichnis XI 14 Android im Internet 241 14.1 Die Klasse Web View 241 14.2 Internet-Ressourcen nutzen. 243 14.2.1 Verbindung mit einer Internet-Ressource über HTTP... 243 14.2.2 Verbindung zu einer Internet-Ressource über HTTPS... 247 14.2.3 Cookies 248 14.2.4 Socket und Datagram 250 14.3 Web-Services. 250 15 Location Based Services 251 15.1 Lokalisierung 251 15.2 Das Android LBS-API 254 15.2.1 Kriterien an den Provider. 258 15.2.2 Lokalisieren - 259 15.2.3 Bereichsabfrage 262 15.3 Karten ' 265 15.3.1 Map View im Einsatz.> 268 15.3.2 Auf der Karte zeichnen 271 16 Grafik 275 16.1 2D-Grafik 275 16.1.1 Bitmaps 275 16.2 3D-Grafik 282 16.2.1 Das OpenGL ES API -. 283 16.2.2 Das erste Open GL-Beispiel,, 285 16.2.3 Objekteigenschaften 295 17 Zugriff auf die Hardware 301 17.1 Multimedia 301 17.1.1 Eine Ressource abspielen 302 17.1.2 Eine Datei oder URL abspielen 302 17.1.3 Weitere Methoden der Klasse MediaPlayer 303 17.1.4 Aufnahme 303 17.2 Kamera 305 17.2.1 Die Bildvorschau 306 17.2.2 Ein Bild aufnehmen 306
XII r Inhaltsverzeichnis 17.3 Sensoren und Aktoren 307 17.3.1 Vibrationen 314 18 SDK 1.5 315 18.1 Installation des SDK 1.5 315 18.2 Android Virtual Device 316 18.3 Unsere Beispiele mit dem SDK 1.5 318 18.4 Charakteristische Merkmale des SDK 1.5 318 18.5 Das AppWidget-API 322 18.5.1 Widgets auf dem Startbildschirm ablegen.. : 322 18.5.2 Details eines Widgets ^ 322 18.5.3 Ein Beispiel 324 A Anhang 333 A.l XML Kurzbeschreibung 333 A.l.l Syntax 335 A.1.2 Dokumenttyp-Definition 336 A.1.3 Namensräume 337 A.1.4 XML-Schema 337 A.2 Klassendiagramme der Benutzungsschnittstellen 339 Literaturverzeichnis 359 Stichwortverzeichnis 363