Android

Werbung
Arno Becker • Marcus Pant
Android
Grundlagen und Programmierung
TJi dpunkt.verlag
IX
Inhaltsverzeichnis
I
Einführung
1
1.1
1.2
1.3
1.4
1.5
1.6
Ein erstes Beispiel
Projekt anlegen
Die erste Activity
Layout definieren
Activities aufrufen
Das Android-Manifest
Fazit
3
3
4
5
8
11
13
2
2.1
2.2
2.3
2.4
2.5
2.6
Systemaufbau
Architekturübersicht
Die Dalvik Virtual Machine
Standardbibliotheken
Der Anwendungsrahmen
Android-Komponenten
Die Klasse Context
15
15
17
19
19
20
21
3
3.1
3.2
3.3
3.4
Sicherheit
Die Sandbox
:
Signieren von Anwendungen
Berechtigungen
'•>.
Anwendungsübergreifende Berechtigungen
•
?.
.:
23
23
24
24
25
II
Android in der Praxis
29
4
4.1
4.2
Projekt »Staumelder«
Aus Sicht des Anwenders
Iterationsplan
31
31
34
5
5.1
5.2
Iteration 1 - Oberflächengestaltung
Iterationsziel
Activities, Layouts und Views
37
37
37
Inhaltsverzeichnis
5.3
5.4
5.5
5.6
5.7
5.8
6
6.1
6.2
6.3
6.4
6.5
5.2.1 Grundbegriffe der Oberflächengestaltung
5.2.2 Zusammenwirken der Elemente
5.2.3 Theorie der Implementierung
Ressourcen
5.3.1 Definition von Ressourcen
5.3.2 Zugriff auf Ressourcen
5.3.3 Text-Ressourcen
5.3.4 Farb-Ressourcen
,
5.3.5 Formatvorlagen: Styles und Themes
5.3.6 Bilder
5.3.7 Multimediadaten
Menüs
5.4.1 Allgemeine Menüdefinition
5.4.2 Optionsmenüs
5.4.3 Kontextmenüs
5.4.4 Dynamische Menügestaltung
Das Android-Manifest
Implementierung eines Bildschirmdialogs
5.6.1 Checkliste Dialogerstellung
5.6.2 Texte für Bildschirmseiten definieren .:..-.5.6.3 Multimedia-Ressourcen definieren
5.6.4 Bildschirmseite definieren
5.6.5 Menüs definieren
5.6.6 Activity implementieren
5.6.7 Android-Manifest anpassen
5.6.8 Bildschirmdialog im Emulator testen
Tipps und Tricks
5.7.1 Scrolling
5.7.2 Umgebungsabhängige Ressourcen
Fazit
Iteration 2 - Oberflächen und Daten
Zielsetzung
Arbeiten mit Views
6.2.1 Zugriff auf Views
;
6.2.2 AdapterViews und Adapter
Oberflächenereignisse
Implementierung von Listendarstellungen
6.4.1 Bildschirmdialog definieren
6.4.2 Liste mit Daten füllen
6.4.3 Auf Listenauswahl reagieren
Anwendungseinstellungen
6.5.1 Begriffsdefinitionen
:
:
38
38
39
41
41
42
44
45
46
49
50
51
51
53
54
56
56
57
57
58
59
59
63
64
67
68
69
70
71
74
75
75
75
76
78
79
80
80
81
83
84
84
Inhaltsverzeichnis
6.6
6.7
6.5.2 Einstellungen definieren
6.5.3 Auf Einstellungen zugreifen
6.5.4 Einstellungen bearbeiten
Fortschrittsanzeige
Fazit
7
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
Exkurs: Intents
Warum gibt es Intents?
Explizite Intents
Implizite Intents
.'
Intent-Filter für implizite Intents
Empfang eines Intent
Intent-Resolution
Sub-Activities
Fazit
93
93
94
94
95
100
101
102
104
8
8.1
8.2
8.4
Iteration 3 - Hintergrundprozesse
Iterationsziel
Theoretische Grundlagen
8.2.1 Prozesse und Threads
8.2.2 Langlaufende Prozesse
8.2.3 Prozesse vs. Threads
Implementierung
8.3.1 Services
8.3.2 Threads
Fazit
105
105
106
106
107
108
109
109
131
138
9
9.1
9.2
9.3
9.4
9.5
9.6
Exkurs: Systemnachrichten
Broadcast Intents
Broadcast Receiver
Dynamische Broadcast Receiver
Statische Broadcast Receiver
Meldungen an den Notification Manager
Fazit
141
141
142
143
145
148
152
10
10.1
Exkurs: Dateisystem
Aufbau des Dateisystems
10.1.1 SD-Karten
10.1.2 Berechtigungen
Dateizugriffe
10.2.1 Verzeichnisverwaltung
10.2.2 Dateiverwaltung
8.3
10.2
'
:...
./.
:
85
87
87
90
91
155
155
155
156
157
157
159
xi
Inhaltsverzeichnis
11
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
12
12.1
12.2
12.3
12.4
12.5
12.6
12.7
12.8
13
13.1
13.2
Iteration 4 - Datenbanken
Iterationsziel
Wozu Datenbanken?
Das Datenbanksystem SQLite
Eine Datenbank erstellen
,
11.4.1 Berechtigungen
11.4.2 Schemaverwaltung
Datenzugriff programmieren
11.5.1 ,SQLiteDatabase - Verbindung zur Datenbank
11.5.2 Datenbankanfragen
:
11.5.3 Ergebnistyp Gursor
11.5.4 Änderungsoperationen
Datenzugriff per Kommandozeile
Alternative zu SQLite
Implementierung
11.8.1 Ein Architekturvorschlag ..-.
11.8.2 Das Schema erstellen
11.8.3 Anfrageergebnisse an der Oberfläche darstellen
Fazit
161
161
161
162
163
163
164
166
167
168
173
175
178
180
180
181
183
184
186
Iteration 5 - Content Provider
Iterationsziel
Grundbegriffe
Auf Content Provider zugreifen
12.3.1 Content-URIs
12.3.2 Zugriff über implizite Intents
12.3.3 Zugriff über Content Resolver
Content Provider erstellen
12.4.1 Allgemeines
y.
12.4.2 Datenbank-Zugriffsmetlipden
12.4.3 Datei-Zugriffsmethoden
Asynchrone Operationen
Deployment
Alternativen zum Content Provider
Implementierung
12.8.1 Ein Datenbank-Content-Provider
12.8.2 Fazit
12.8.3 Ein Datei-Content-Provider
189
189
190
191
191
193
194
196
197
198
199
200
202
203
204
204
215
216
Exkurs: Lebenszyklen
Prozess-Management
Lebenszyklus von Komponenten
13.2.1 Lebenszyklus einer Activity
219
219
221
221
Inhaltsverzeichnis
13.3
14
14.1
14.2
14.3
14.4
15
15.1
15.2
15.3
15.4
13.2.2 Lebenszyklus eines Service
13.2.3 Lebenszyklus eines Broadcast Receivers
13.2.4 Activities: Unterbrechungen und Ereignisse
Beispiele aus der Praxis
13.3.1 Beispiel: Kalender-Activity
13.3.2 Beispiel: E-Mail-Programm
13.3.3 Beispiel: Quick-and-dirty-Altemative
Iteration 6 - Netzwerk und Datenübertragung
Iterationsziel
.'
Theoretische Grundlagen
14.2.1 Das Emulator-Netzwerk
14.2.2 Die Internet-Einbahnstraße
14.2.3 Androids Netzwerkunterstützung
14.2.4 Arten der Netzwerkübertragung
Netzwerken in der Praxis
'
14.3.1 Verfahren 1: Stau melden
'
14.3.2 Daten zum Stauserver übertragen
14.3.3 Verfahren 2: dauerhafte Verbindungen
Fazit
Iteration 7 - Location Based Services
Iterationsziel
Theoretische Grundlagen
15.2.1 GPS, KML und GPX
15.2.2 Entwickeln im Emulator
15.2.3 Debug Maps API-Key erstellen
Praxisteil
15.3.1 Vorbereitung
15.3.2 Der Location Manager
15.3.3 Google Maps
15.3.4 MapActivity
Fazit
III Android für Fortgeschrittene
16
16.1
16.2
223
224
224
229
229
230
232
Debugging und das DDMS-Tool
Anschluss eines Android-Geräts per USB
DDMS: Dalvik Debug Monitor Service
16.2.1 Emulator Control
16.2.2 Debugging
.
/.
:
.'
235
235
236
236
238
239
240
241
242
248
250
259
261
261
262
262
262
263
265
265
266
270
271
276
277
279
279
280
281
284
Inhaltsverzeichnis
17
17.1
17.2
17.3
Anwendungen signieren
Vorbereitung
Ein eigenes Zertifikat erzeugen
Eine Android-Anwendung signieren
285
285
286
288
18
18.1
18.2
Sicherheit und Verschlüsselung
Sicherheit
Verschlüsselung
18.2.1 Verschlüsselte Datenübertragung
18.2.2 Daten oder Objekte verschlüsseln
18.2.3 Verschlüsselung anwenden
289
289
291
292
308
311
19
19.1
19.2
19.3
19.4
Unit- und Integrationstests
Allgemeines
Tests von Nicht-Android-Komponenten
Tests von Android-Komponenten
19.3.1 Instrumentierung
19.3.2 Wahl der Testklasse
19.3.3 Beispiel: Test einer Activity
Ausblick
313
313
314
316
316
318
319
322
20
20.1
20.2
20.3
20.4
Optimierung und Performance
Erste Optimierungsregeln
Datenobjekte
Cursor oder Liste?
Time is Akku!
323
323
324
324
325
21
21.1
21.2
Das Android-SDK
Unterschiede zum Java-SDK
Wege aus der Krise
y
327
327
328
Literaturverzeichnis
,
,
331
Herunterladen