Android 2 (eBook) - Arno Becker, Marcus Pant

Marcus Pant Arno Becker 

Android 2 (eBook)

Grundlagen und Programmierung

eBook
 
Kopierschutz: Adobe-DRM
Nicht lieferbar
Nicht lieferbar
Bewerten Empfehlen Merken Auf Lieblingsliste


Andere Kunden interessierten sich auch für

Android 2 (eBook)

Android hat sich mittlerweile als Plattform für Mobiltelefone und Kleincomputer etabliert. Java-Entwickler, die sich damit beschäftigen, erhalten über das Android SDK interessante Möglichkeiten der Anwendungsentwicklung für eine Vielzahl von Geräten, nicht nur für Mobiltelefone. Zahlreiche Android-spezifische Klassen ermöglichen den Zugriff auf die Gerätefunktionen und erfordern spezielles Wissen im Umgang mit begrenztem Speicher und begrenzter Rechenleistung.

Dieses Buch versetzt Java-erfahrene Leser in die Lage, professionelle Software für die Android-Plattform zu entwickeln. Dabei werden die besonderen Rahmenbedingungen berücksichtigt, die sich aus geringer Prozessorleistung, instabilen Netzwerkverbindungen und plötzlichen Programmunterbrechungen, z.B. durch Telefonanrufe, ergeben.

Behandelt werden u.a. folgende Themen:
- Oberflächen, Dialoge und Menüs
- Komponenten einer Android-Anwendung
- Hintergrundprozesse
- Datenbanken und Dateisystem
- Netzwerk- und Datenübertragung
- Location Based Services
- Testen einer Android-Anwendung
- Debuggen, Signieren und Performance Anhand eines durchgängigen Beispiels kann der Leser die vorgestellten Inhalte praktisch nachvollziehen. Alle Codebeispiele werden zusätzlich auf der Buchwebsite (www.androidbuch.de/beispiele.htm) zum Download angeboten.

Die 2. Auflage wurde umfassend überarbeitet und auf die Android-Version 2 aktualisiert. Folgende Themen wurden ergänzt:

- SMS senden und empfangen
- Hierarchy Viewer
-Trace View


Produktinformation

  • Deutsch
  • ISBN-13: 9783898649797
  • ISBN-10: 3898649792
  • Best.Nr.: 33011496
Dipl.-Inform. Arno Becker ist bei der visionera GmbH verantwortlich für den Bereich "'Mobile Lösungen"'. Nach langjähriger Erfahrung mit Java ME beschäftigte er sich von Beginn an intensiv mit Android. Seine dadurch erworbenen Kenntnisse gibt er als Berater, in Schulungen und auf Vorträgen weiter. Früh hat er die Einsatzmöglichkeiten von Android in Embedded Systems und im Entertainment-Bereich erkannt und sich auch in die Systeminterna von Android eingearbeitet. Dipl.-Inform. Marcus Pant arbeitet für die visionera GmbH als Berater in Kundenprojekten. Seine Schwerpunkte liegen in der Entwicklung von Java-EE-Systemen und im Projektmanagement. Er beschäftigt sich seit 2007 mit Android und hat sich auf die Bereiche Datenspeicherung und Tests spezialisiert.

Inhaltsangabe

1;Vorwort;6 2;Inhaltsverzeichnis;10 3;1 Ein erstes Beispiel;20 3.1;1.1 Projekt anlegen;20 3.2;1.2 Die erste Activity;22 3.3;1.3 Layout definieren;23 3.4;1.4 Activities aufrufen;26 3.5;1.5 Das Android-Manifest;28 3.6;1.6 Fazit;34 4;2 Systemaufbau;36 4.1;2.1 Architekturübersicht;36 4.2;2.2 Die Dalvik Virtual Machine;38 4.3;2.3 Standardbibliotheken;40 4.4;2.4 Der Anwendungsrahmen;41 4.5;2.5 Android-Komponenten;41 4.6;2.6 Die Klasse Context;43 5;3 Sicherheit;44 5.1;3.1 Das Sandbox-Prinzip;44 5.2;3.2 Signieren von Anwendungen;45 5.3;3.3 Berechtigungen;46 5.4;3.4 Anwendungsübergreifende Berechtigungen;48 6;4 Beispielanwendung Amando;52 6.1;4.1 Aus Sicht des Anwenders;52 6.2;4.2 Kapitelübersicht;55 7;5 Oberflächengestaltung;56 7.1;5.1 Ziel;56 7.2;5.2 Schnelleinstieg: Activities, Layouts und Views;56 7.2.1;5.2.1 Grundbausteine der Oberflächengestaltung;57 7.2.2;5.2.2 Oberflächen implementieren;58 7.3;5.3 Ressourcen;61 7.3.1;5.3.1 Definition von Ressourcen;61 7.3.2;5.3.2 Zugriff auf Ressourcen;64 7.3.3;5.3.3 Textressourcen;67 7.3.4;5.3.4 Farbressourcen;68 7.3.5;5.3.5 Größendefinitionen;69 7.3.6;5.3.6 Bilder;69 7.3.7;5.3.7 Animationen;71 7.3.8;5.3.8 Multimediadateien;72 7.3.9;5.3.9 Der raw-Ordner;73 7.3.10;5.3.10 XML-Dateien;74 7.3.11;5.3.11 Der Asset-Ordner;74 7.4;5.4 Layouts und Views;75 7.4.1;5.4.1 Definition von Layouts;75 7.4.2;5.4.2 Übersicht vorhandener Layouts;78 7.4.3;5.4.3 Übersicht vorhandener Views;82 7.4.4;5.4.4 Views verwenden;83 7.5;5.5 Schaltflächen und Menüs;85 7.5.1;5.5.1 Schaltflächen;86 7.5.2;5.5.2 Oberflächenereignisse;87 7.5.3;5.5.3 Menüs im Allgemeinen;88 7.5.4;5.5.4 Menüdefinition;89 7.5.5;5.5.5 Optionsmenüs;91 7.5.6;5.5.6 Kontextmenüs;92 7.5.7;5.5.7 Dynamische Menügestaltung;94 7.6;5.6 Formularverarbeitung;96 7.6.1;5.6.1 Zielsetzung;96 7.6.2;5.6.2 Arbeiten mit Views;97 7.7;5.7 Das Android-Manifest;101 7.8;5.8 Formatvorlagen: Styles und Themes;103 7.8.1;5.8.1 Styles;103 7.8.2;5.8.2 Themes;105 7.9;5.9 Implementierung einer Bildschirmseite;107 7.9.1;5.9.1 Checkliste: Bildschirmseite implementieren;107 7.9.2;5.9.2 Texte für Bildschirmseiten definieren;108 7.9.3;5.9.3 Styles und Themes definieren;110 7.9.4;5.9.4 Weitere Ressourcen definieren;110 7.9.5;5.9.5 Layouts definieren;110 7.9.6;5.9.6 Menüs definieren;112 7.9.7;5.9.7 Activity implementieren;112 7.9.8;5.9.8 Android-Manifest anpassen;114 7.9.9;5.9.9 Bildschirmseite im Emulator testen;115 7.10;5.10 Tipps und Tricks;117 7.10.1;5.10.1 Scrolling;117 7.10.2;5.10.2 Umgebungsabhängige Ressourcen;119 7.10.3;5.10.3 Hilfeseiten mit WebView darstellen;121 7.10.4;5.10.4 Der Hierarchy Viewer;125 7.11;5.11 Fazit;127 8;6 Oberflächen und Daten;128 8.1;6.1 Zielsetzung;128 8.2;6.2 AdapterViews und Ressourcen;129 8.3;6.3 AdapterViews und Adapter;130 8.3.1;6.3.1 ArrayAdapter;131 8.3.2;6.3.2 SimpleCursorAdapter;133 8.3.3;6.3.3 Auf Ereignisse reagieren;134 8.4;6.4 Performante Listen;137 8.5;6.5 Anwendungseinstellungen;140 8.5.1;6.5.1 Begriffsdefinitionen;141 8.5.2;6.5.2 Einstellungen definieren;141 8.5.3;6.5.3 Einstellungsseite implementieren;144 8.5.4;6.5.4 Auf Einstellungen zugreifen;146 8.5.5;6.5.5 Einstellungen bearbeiten;147 8.6;6.6 Fortschrittsanzeige;148 8.7;6.7 Fazit;149 9;7 Intents;152 9.1;7.1 Warum gibt es Intents?;152 9.2;7.2 Explizite Intents;153 9.3;7.3 Implizite Intents;154 9.3.1;7.3.1 Intent-Filter für implizite Intents;154 9.3.2;7.3.2 Ein einfaches Beispiel;157 9.3.3;7.3.3 Intent-Resolution;159 9.3.4;7.3.4 Beispiele für implizite Intents;159 9.3.5;7.3.5 Fehlerbehandlung;166 9.4;7.4 Sub-Activities;167 9.4.1;7.4.1 Sub-Activities aufrufen;167 9.4.2;7.4.2 Sub-Activities verwenden;168 9.5;7.5 Anruf einleiten;172 9.6;7.6 Fazit;173 10;8 Hintergrundoperationen;176 10.1;8.1 Ziel;176 10.2;8.2 Theorie: Prozesse, Threads, Services;177 10.2.1;8.2.1 Allgemeines;177 10.2.2;8.2.2 UI-Thread;177 10.2.3;8.2.3 ANR;178 10.2.4;8.2.4 Prozesse vs. Threads;179 10.2.5;8.2.5 Services;180 10.2.6;8.2.6 Services vs. Threads;181 10.2.7;8.2.7 Binder;182 10.3;8.3 Implementierung eines Local Service;185 10.3.1;8.3.1 Local Service;185 10.3.2;8.3.2 Mit einem Service verbinden;186 10.3.3;8.3.3 Services starten und stoppen;189 10.4;8.4 Tipps und Tricks;190 10.5;8.5 Callback-Mechanismen;191 10.5.1;8.5.1 Handler;192 10.5.2;8.5.2 Implementierung;194 10.5.3;8.5.3 Threads mit Schleifen;199 10.6;8.6 Fazit;201 11;9 IPC – Inter Process Communication;204 11.1;9.1 AIDL;204 11.2;9.2 Implementierung;205 11.3;9.3 Eigene Datenobjekte per IPC übertragen;209 11.3.1;9.3.1 Eigene Datenobjekte erstellen;209 11.3.2;9.3.2 Parameterübergabe optimieren;212 11.4;9.4 Asynchrone Methodenaufrufe;213 11.4.1;9.4.1 Asynchrone Methodenaufrufe mit Rückgabewert;214 11.4.2;9.4.2 Asynchrone Methodenaufrufe verwenden;218 11.5;9.5 Fazit;221 12;10 Systemnachrichten;222 12.1;10.1 Broadcast Intents;222 12.2;10.2 Broadcast Receiver;223 12.2.1;10.2.1 Dynamische Broadcast Receiver;225 12.2.2;10.2.2 Statische Broadcast Receiver;227 12.3;10.3 Meldungen an den Notification Manager;237 12.4;10.4 Fazit;241 13;11 Datenbanken;242 13.1;11.1 Zielsetzung;242 13.2;11.2 Android: Wozu Datenbanken?;242 13.3;11.3 Das Datenbanksystem SQLite;243 13.4;11.4 Eine Datenbank erstellen;244 13.4.1;11.4.1 Berechtigungen;244 13.4.2;11.4.2 Schemaverwaltung;244 13.5;11.5 Datenzugriff programmieren;247 13.5.1;11.5.1 SQLiteDatabase – Verbindung zur Datenbank;248 13.5.2;11.5.2 Datenbankanfragen;249 13.5.3;11.5.3 Ergebnistyp Cursor;254 13.5.4;11.5.4 Änderungsoperationen;256 13.6;11.6 Datenzugriff per Kommandozeile;259 13.7;11.7 Implementierung;261 13.7.1;11.7.1 Ein Architekturvorschlag;261 13.7.2;11.7.2 Das Schema erstellen;264 13.7.3;11.7.3 Anfrageergebnisse an der Oberfläche darstellen;265 13.8;11.8 Spielzeit!;267 14;12 Dateisystem;268 14.1;12.1 Aufbau des Dateisystems;268 14.1.1;12.1.1 Das Anwendungsverzeichnis;268 14.1.2;12.1.2 SD-Karten;268 14.2;12.2 Verwaltung;269 14.3;12.3 Programmierung;270 14.3.1;12.3.1 Zugriff auf das Anwendungsverzeichnis;271 14.3.2;12.3.2 Zugriff auf die SD-Karte;274 14.4;12.4 Zusammenfassung;275 15;13 Content Provider;276 15.1;13.1 Zielsetzung;276 15.2;13.2 Übersicht/Grundbegriffe;276 15.3;13.3 Content-URIs;278 15.4;13.4 Content Provider;280 15.4.1;13.4.1 Stammdaten;281 15.4.2;13.4.2 Operationen;281 15.4.3;13.4.3 Lebenszyklus;283 15.4.4;13.4.4 Berechtigungen;283 15.4.5;13.4.5 Deployment;283 15.5;13.5 Content Consumer;284 15.5.1;13.5.1 Content Resolver;285 15.5.2;13.5.2 Zugriff auf Datenbankinhalte;286 15.5.3;13.5.3 Zugriff auf Dateien;287 15.6;13.6 Implementierung;288 15.6.1;13.6.1 Zugriff auf das Android-Adressbuch;288 15.6.2;13.6.2 Der FotoProvider;290 15.6.3;13.6.3 FotoSpeicher als Content Consumer;297 15.7;13.7 Content Provider für Fortgeschrittene;299 15.7.1;13.7.1 Asynchrone Operationen;299 15.7.2;13.7.2 Alternativen zum Content Provider;301 16;14 Lebenszyklen;302 16.1;14.1 Prozessverwaltung;303 16.2;14.2 Lebenszyklus einer Activity;304 16.3;14.3 Lebenszyklus eines Service;307 16.4;14.4 Lebenszyklus eines Broadcast Receivers;308 16.5;14.5 Activities: Unterbrechungen und Ereignisse;309 16.6;14.6 onPause() vs. onSaveInstanceState(Bundle outState);310 16.7;14.7 Beispiele aus der Praxis;315 16.7.1;14.7.1 Beispiel: Kalender-Activity;315 16.7.2;14.7.2 Beispiel: E-Mail-Programm;317 16.7.3;14.7.3 Beispiel: Quick-and-dirty-Alternative;318 17;15 Datenübertragung;320 17.1;15.1 Ziel;320 17.2;15.2 Theoretische Grundlagen;321 17.2.1;15.2.1 Das Emulator-Netzwerk;321 17.2.2;15.2.2 Die Internet-Einbahnstraße;323 17.2.3;15.2.3 Netzwerkunterstützung bei Android;324 17.2.4;15.2.4 Arten der Netzwerkübertragung;326 17.3;15.3 Netzwerken in der Praxis;326 17.3.1;15.3.1 Verfahren 1: Geoposition senden;327 17.3.2;15.3.2 Verfahren 2: dauerhafte Verbindung;328 17.3.3;15.3.3 Auf Funklöcher reagieren;332 17.4;15.4 Fazit;334 18;16 Standortbezogene Dienste;336 18.1;16.1 Ziel;336 18.2;16.2 Theoretische Grundlagen;337 18.2.1;16.2.1 GPS, KML und GPX;337 18.2.2;16.2.2 Entwickeln im Emulator;338 18.2.3;16.2.3 Debug Maps API-Key erstellen;339 18.3;16.3 Praxisteil;341 18.3.1;16.3.1 Vorbereitung;341 18.3.2;16.3.2 Der Location Manager;342 18.3.3;16.3.3 Google Maps;344 18.3.4;16.3.4 MapActivity;346 18.4;16.4 Fazit;353 19;17 Debugging und DDMS;358 19.1;17.1 Anschluss eines Android-Geräts;358 19.2;17.2 Systemausgaben mit der LogCat;359 19.3;17.3 DDMS: Dalvik Debug Monitor Service;362 19.3.1;17.3.1 Emulator Control;363 19.3.2;17.3.2 Debugging;364 19.4;17.4 Traceview;364 20;18 Sicherheit und Verschlüsselung;368 20.1;18.1 Motivation;368 20.2;18.2 Grundbegriffe der Verschlüsselung;369 20.2.1;18.2.1 Verschlüsselte Datenübertragung;370 20.2.2;18.2.2 Daten oder Objekte verschlüsseln;385 20.2.3;18.2.3 Verschlüsselung anwenden;387 21;19 Automatisiertes Testen;390 21.1;19.1 Was testen wir?;390 21.2;19.2 Oberflächentests;392 21.2.1;19.2.1 Instrumentierung und robotium;393 21.2.2;19.2.2 Ein Beispiel;395 21.2.3;19.2.3 Konflikte vermeiden;396 21.3;19.3 Modultests;397 21.3.1;19.3.1 Androidfreie Klassen;397 21.3.2;19.3.2 Androidabhängige Klassen;398 21.3.3;19.3.3 Ein Beispiel;399 21.4;19.4 Eine Teststrategie;402 22;20 Anwendungen marktreif machen;404 22.1;20.1 Hintergrundwissen;404 22.2;20.2 Das Eclipse-Plugin verwenden;405 22.3;20.3 Anwendungen mittels Kommandozeile marktreif machen;406 22.3.1;20.3.1 Ein eigenes Zertifikat erstellen;406 22.3.2;20.3.2 Eine Android-Anwendung signieren;408 23;21 Optimierung und Performance;410 23.1;21.1 Erste Optimierungsregeln;410 23.2;21.2 Datenobjekte;411 23.3;21.3 Cursor oder Liste?;411 23.4;21.4 Time is Akku!;412 24;Anhang;414 25;Literaturverzeichnis;418 26;Index;422