O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Android 4.4, 3rd Edition

Book Description

Java-erfahrene Leser lernen in diesem Buch, professionelle und sichere Apps für Android-Smartphones und -Tablets zu entwickeln.Nach einer Einführung in die grundlegenden Konzepte und Elemente von Android lernt der Leser anhand eines durchgängigen Beispiels Schritt für Schritt, eine mobile Anwendung zu entwickeln. Ein eigener Teil des Buches beschäftigt sich speziell mit der Programmierung für Tablets.Die 3. Auflage wurde komplett auf Android 4.4 aktualisiert und um neue Themen erweitert, u.a. Tablet-Programmierung, Android Studio mit Gradle und Zugriff auf Sensoren.

Table of Contents

  1. Vorwort
  2. Ein Buch zu Android
  3. Aufbau des Buchs
  4. Danksagung
  5. Inhaltsverzeichnis
  6. Teil I Einführung
  7. 1 Ein erstes Beispiel
  8. 1.1 Projekt anlegen
  9. 1.2 Die erste Activity
  10. 1.3 Layout definieren
  11. 1.4 Activities aufrufen
  12. 1.5 Das Android-Manifest
  13. 1.6 Fazit
  14. 2 Systemaufbau
  15. 2.1 Architekturübersicht
  16. 2.2 Die Dalvik Virtual Machine
  17. 2.3 Standardbibliotheken
  18. 2.4 Der Anwendungsrahmen
  19. 2.5 Android-Komponenten
  20. 2.6 Die Klasse Context
  21. 3 Sicherheit
  22. 3.1 Das Sandbox-Prinzip
  23. 3.2 Signieren von Anwendungen
  24. 3.3 Berechtigungen
  25. 3.4 Anwendungsübergreifende Berechtigungen
  26. Teil II Android in der Praxis
  27. 4 Beispielanwendung »Amando«
  28. 4.1 Aus Sicht des Anwenders
  29. 4.2 Kapitelübersicht
  30. 5 Oberflächengestaltung
  31. 5.1 Ziel
  32. 5.2 Schnelleinstieg: Activities, Layouts und Views
  33. 5.2.1 Grundbausteine der Oberflächengestaltung
  34. 5.2.2 Oberflächen implementieren
  35. 5.3 Ressourcen
  36. 5.3.1 Definition von Ressourcen
  37. 5.3.2 Zugriff auf Ressourcen
  38. 5.3.3 Textressourcen
  39. 5.3.4 Farbressourcen
  40. 5.3.5 Größendefinitionen
  41. 5.3.6 Bilder
  42. 5.3.7 Animationen
  43. 5.3.8 Multimediadateien
  44. 5.3.9 Der raw-Ordner
  45. 5.3.10 XML-Dateien
  46. 5.3.11 Der Asset-Ordner
  47. 5.4 Layouts und Views
  48. 5.4.1 Definition von Layouts
  49. 5.4.2 Übersicht vorhandener Layouts
  50. 5.4.3 Übersicht vorhandener Views
  51. 5.4.4 Views verwenden
  52. 5.5 Schaltflächen und Menüs
  53. 5.5.1 Schaltflächen
  54. 5.5.2 Oberflächenereignisse
  55. 5.5.3 Menüs im Allgemeinen
  56. 5.5.4 Menüdefinition
  57. 5.5.5 Optionsmenüs
  58. 5.5.6 Kontextmenüs
  59. 5.5.7 Dynamische Menügestaltung
  60. 5.6 Formularverarbeitung
  61. 5.6.1 Zielsetzung
  62. 5.6.2 Arbeiten mit Views
  63. 5.7 Das Android-Manifest
  64. 5.8 Formatvorlagen: Styles und Themes
  65. 5.8.1 Styles
  66. 5.8.2 Themes
  67. 5.9 Implementierung einer Bildschirmseite
  68. 5.9.1 Checkliste: Bildschirmseite implementieren
  69. 5.9.2 Texte für Bildschirmseiten definieren
  70. 5.9.3 Styles und Themes definieren
  71. 5.9.4 Weitere Ressourcen definieren
  72. 5.9.5 Layouts definieren
  73. 5.9.6 Menüs definieren
  74. 5.9.7 Activity implementieren
  75. 5.9.8 Auf Schaltflächen-Ereignisse reagieren
  76. 5.9.9 Android-Manifest anpassen
  77. 5.9.10 Bildschirmseite im Emulator testen
  78. 5.10 Tipps und Tricks
  79. 5.10.1 Scrolling
  80. 5.10.2 Umgebungsabhängige Ressourcen
  81. 5.10.3 Hilfeseiten mit WebView darstellen
  82. 5.10.4 Der Hierarchy Viewer
  83. 5.11 Fazit
  84. 6 Oberflächen und Daten
  85. 6.1 Zielsetzung
  86. 6.2 AdapterViews und Ressourcen
  87. 6.3 AdapterViews und Adapter
  88. 6.3.1 ArrayAdapter
  89. 6.3.2 Auf Ereignisse reagieren
  90. 6.4 Anwendungseinstellungen
  91. 6.4.1 Begriffsdefinitionen
  92. 6.4.2 Einstellungen definieren
  93. 6.4.3 Einstellungsseite implementieren
  94. 6.4.4 Auf Einstellungen zugreifen
  95. 6.4.5 Einstellungen bearbeiten
  96. 6.5 Fortschrittsanzeige
  97. 6.6 Fazit
  98. 7 Intents
  99. 7.1 Warum gibt es Intents?
  100. 7.2 Explizite Intents
  101. 7.3 Implizite Intents
  102. 7.3.1 Intent-Filter für implizite Intents
  103. 7.3.2 Ein Beispiel
  104. 7.3.3 Intent-Resolution
  105. 7.3.4 Beispiele für implizite Intents
  106. 7.3.5 Fehlerbehandlung
  107. 7.4 Sub-Activities
  108. 7.4.1 Sub-Activities aufrufen
  109. 7.4.2 Sub-Activities verwenden
  110. 7.5 Fazit
  111. 8 Hintergrundoperationen
  112. 8.1 Ziel
  113. 8.2 Theorie: Prozesse, Threads, Services
  114. 8.2.1 Allgemeines
  115. 8.2.2 Main Thread
  116. 8.2.3 ANR
  117. 8.2.4 Prozesse vs. Threads
  118. 8.2.5 Services
  119. 8.2.6 Services vs. Threads
  120. 8.2.7 Service-Connections
  121. 8.2.8 Binder
  122. 8.3 Implementierung eines Local Service
  123. 8.3.1 Local Service
  124. 8.3.2 Mit einem Service verbinden
  125. 8.3.3 Services starten und stoppen
  126. 8.4 Callback-Mechanismen
  127. 8.4.1 Handler
  128. 8.4.2 Implementierung
  129. 8.4.3 Threads mit Schleifen
  130. 8.5 Single Action Service
  131. 8.6 Intent Service
  132. 8.7 Fazit
  133. 9 IPC – Inter Process Communication
  134. 9.1 AIDL
  135. 9.2 Implementierung
  136. 9.3 Eigene Datenobjekte per IPC übertragen
  137. 9.3.1 Eigene Datenobjekte erstellen
  138. 9.3.2 Parameterübergabe optimieren
  139. 9.4 Asynchrone Methodenaufrufe
  140. 9.4.1 Asynchrone Methodenaufrufe mit Rückgabewert
  141. 9.4.2 Asynchrone Methodenaufrufe verwenden
  142. 9.5 Fazit
  143. 10 Systemnachrichten
  144. 10.1 Broadcast Intents
  145. 10.2 Broadcast Receiver
  146. 10.2.1 Dynamische Broadcast Receiver
  147. 10.2.2 Statische Broadcast Receiver
  148. 10.3 Notifications
  149. 10.4 Fazit
  150. 11 Datenbanken
  151. 11.1 Zielsetzung
  152. 11.2 Android: Wozu Datenbanken?
  153. 11.3 Das Datenbanksystem SQLite
  154. 11.4 Eine Datenbank erstellen
  155. 11.4.1 Berechtigungen
  156. 11.4.2 Schemaverwaltung
  157. 11.5 Datenzugriffe programmieren
  158. 11.5.1 SQLiteDatabase – Verbindung zur Datenbank
  159. 11.5.2 Datenbankanfragen
  160. 11.5.3 Ergebnistyp Cursor
  161. 11.5.4 Änderungsoperationen
  162. 11.6 Datenzugriff per Kommandozeile
  163. 11.7 Implementierung
  164. 11.7.1 Ein Architekturvorschlag
  165. 11.7.2 Das Schema erstellen
  166. 11.7.3 Anfrageergebnisse an der Oberfläche darstellen
  167. 12 Dateisystem
  168. 12.1 Aufbau des Dateisystems
  169. 12.1.1 Das Anwendungsverzeichnis
  170. 12.1.2 SD-Karten
  171. 12.2 Verwaltung
  172. 12.3 Programmierung
  173. 12.3.1 Zugriff auf das Anwendungsverzeichnis
  174. 12.3.2 Zugriff auf die SD-Karte
  175. 12.4 Zusammenfassung
  176. 13 Content Provider
  177. 13.1 Zielsetzung
  178. 13.2 Übersicht/Grundbegriffe
  179. 13.3 Content-URIs
  180. 13.4 Content Provider
  181. 13.4.1 Stammdaten
  182. 13.4.2 Operationen
  183. 13.4.3 Lebenszyklus
  184. 13.4.4 Berechtigungen
  185. 13.4.5 Deployment
  186. 13.5 Content Consumer
  187. 13.5.1 Content Resolver
  188. 13.5.2 Zugriff auf Datenbankinhalte
  189. 13.5.3 Zugriff auf Dateien
  190. 13.6 Implementierung
  191. 13.6.1 Zugriff auf das Android-Adressbuch
  192. 13.6.2 Der FotoProvider
  193. 13.6.3 FotoSpeicher als Content Consumer
  194. 14 Asynchrone Datenzugriffe
  195. 14.1 Einleitung
  196. 14.2 Datenzugriffe über Loader
  197. 14.2.1 Der CursorLoader
  198. 14.2.2 Eigene Loader implementieren
  199. 15 Lebenszyklen
  200. 15.1 Prozessverwaltung
  201. 15.2 Lebenszyklus einer Activity
  202. 15.3 Lebenszyklus eines Service
  203. Lebenszyklus bei Start mit startService
  204. Lebenszyklus bei Start mit bindService
  205. 15.4 Lebenszyklus eines Broadcast Receivers
  206. 15.5 Activities: Unterbrechungen und Ereignisse
  207. 15.6 onPause() vs. onSaveInstanceState(Bundle outState)
  208. 15.7 Beispiele aus der Praxis
  209. 15.7.1 Beispiel: Kalender-Activity
  210. 15.7.2 Beispiel: E-Mail-Programm
  211. 15.7.3 Beispiel: Quick-and-dirty-Alternative
  212. 16 Datenübertragung
  213. 16.1 Ziel
  214. 16.2 Theoretische Grundlagen
  215. 16.2.1 Das Emulator-Netzwerk
  216. 16.2.2 Die Internet-Einbahnstraße
  217. 16.2.3 Netzwerkunterstützung bei Android
  218. 16.2.4 Arten der Netzwerkübertragung
  219. 16.3 Netzwerken in der Praxis
  220. 16.3.1 Verfahren 1: Geoposition senden
  221. 16.3.2 Verfahren 2: dauerhafte Verbindung
  222. 16.3.3 Auf Funklöcher reagieren
  223. 16.4 Fazit
  224. 17 Standortbezogene Dienste
  225. 17.1 Ziel
  226. 17.2 Theoretische Grundlagen
  227. 17.2.1 Ortungsverfahren
  228. 17.2.2 GPS, KML und GPX
  229. 17.2.3 Entwickeln im Emulator
  230. 17.2.4 Debug Maps–API–Key erstellen
  231. 17.2.5 Testgerät einrichten
  232. 17.3 Praxisteil
  233. 17.3.1 Google Play Service-Bibliothek einbinden
  234. 17.3.2 Android–Manifest anpassen
  235. 17.3.3 Der Location Manager
  236. 17.3.4 Location API v1
  237. 17.3.5 Location API v2 – Fuse Location Provider
  238. 17.3.6 Google Maps API v2
  239. 17.3.7 Fortgeschrittene Techniken
  240. 17.4 Fazit
  241. 18 Fragments
  242. 18.1 Ziel
  243. 18.2 Fragments
  244. 18.2.1 Lebenszyklus von Fragments
  245. 18.3 Praxisbeispiel
  246. 18.3.1 Projektaufbau
  247. 18.3.2 Activity-Layout
  248. 18.3.3 Action Bar, Tabs und Optionsmenü
  249. 18.3.4 Fragments für Listendarstellung
  250. 18.3.5 Drag–and–Drop
  251. 18.3.6 Artikel anzeigen
  252. 18.3.7 Auswahliste mit Drop-Funktion
  253. 18.3.8 Animationen
  254. 18.3.9 Fazit
  255. Teil III Android für Fortgeschrittene
  256. 19 Debugging und DDMS
  257. 19.1 Anschluss eines Android-Geräts
  258. 19.2 Systemausgaben mit der LogCat
  259. 19.3 DDMS: Dalvik Debug Monitor Service
  260. 19.3.1 Emulator Control
  261. 19.3.2 Debugging
  262. 19.4 Traceview
  263. 20 Sicherheit und Verschlüsselung
  264. 20.1 Motivation
  265. 20.2 Grundbegriffe der Verschlüsselung
  266. 20.2.1 Verschlüsselte Datenübertragung
  267. 20.2.2 Daten oder Objekte verschlüsseln
  268. 20.2.3 Verschlüsselung anwenden
  269. 21 Automatisiertes Testen
  270. 21.1 Was testen wir?
  271. 21.2 Oberflächentests
  272. 21.2.1 Instrumentierung und Robotium
  273. 21.2.2 Ein Beispiel
  274. 21.2.3 Konflikte vermeiden
  275. 21.3 Modultests
  276. 21.3.1 Androidfreie Klassen
  277. 21.3.2 Androidabhängige Klassen
  278. 21.3.3 Beispiel für einen Modultest
  279. 21.4 Eine Teststrategie
  280. 22 Anwendungen marktreif machen
  281. 22.1 Hintergrundwissen
  282. 22.2 Das Eclipse-Plugin verwenden
  283. 22.3 Anwendungen mittels Kommandozeile marktreif machen
  284. 22.3.1 Ein eigenes Zertifikat erstellen
  285. 22.3.2 Eine Android-Anwendung signieren
  286. 23 Storage Access Framework
  287. 23.1 Überblick
  288. 23.2 Beispiel 1: Bilder-Client
  289. 23.3 Beispiel 2: Dokumenten-Client
  290. 23.4 Fazit
  291. 24 Optimierung und Performance
  292. 24.1 Erste Optimierungsregeln
  293. 24.2 Datenobjekte
  294. 24.3 Cursor oder Liste?
  295. 24.4 Time is Akku!
  296. 25 Android Studio und Gradle
  297. 25.1 Android Studio ausprobiert...
  298. Oberfläche und Bedienung
  299. Vorschau-Funktionen
  300. Modulare Projekte
  301. Build System
  302. 25.2 Gradle, das neue Build-Management-System
  303. 25.3 Eine neue Verzeichnisstruktur
  304. 25.4 Ausblick
  305. Anhang
  306. Literaturverzeichnis
  307. Index