Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Roboter-BaukastenEinführung in Android
Manfred BorzechowskiLambdaLogic Informationssysteme GmbH
Herbstcampus 2012 – Roboter-Baukasten 2
Wir gratulieren Ihnen, daß Sie sich für einen Android-Baukasten entschieden haben
• Volle Java-Sprachunterstützung
• Reichhaltiges API
• Breite Geräteauswahl
• Vielfältige Möglichkeiten• Organizer, Social, Player, Recorder, Navigation, Spiele,
Barcode Scanner, Stimmgerät, Taschenlampe, u.v.a.m.
• Ideal für die Realisierung eigener Ideen
Herbstcampus 2012 – Roboter-Baukasten 3
Verhaltensmaßregeln
• Vermeiden Sie unnötige Instanziierungen• Heap für Ihre Prozesse begrenzt• Garbage Collection langsam
• Vermeiden Sie häufige Schreibvorgänge• Unperformant wegen Flash-basiertem Speicher
• Vermeiden Sie Blockierung des UI-Threads• „Die Anwendung reagiert nicht“
• Vermeiden Sie häufige Netzwerkzugriffe über den Mobilfunkbetreiber• Verbraucht hohe Akku-Leistung
Herbstcampus 2012 – Roboter-Baukasten 4
Der Baukasten
LaufzeitumgebungActivity
ResourcenR
ViewAndroidManifest.xml
PlatformIDE
Java JDK
DeviceBroadcast ReceiverServiceContentProviderEmulatorADTAVDSDK
Herbstcampus 2012 – Roboter-Baukasten 5
Die Bodenplatte: Ein Java JDK
• Haushaltsübliche Version• (nicht mitgeliefert)
• Nur für IDE und SDK
• Android bringt sein eigenes „Java“ mit• Eigene Laufzeitklassen und Dalvik VM
Java JDK
Herbstcampus 2012 – Roboter-Baukasten 6
Das Android SDK
• Bezugsquellehttp://developer.android.com/sdk/• Bei Bestellung angeben ob für
Windows, Mac OS X, Linux
• Bestandteile kontrollieren• Tools• SDK Manager• AVD Manager
Java JDKSDKSDK Manager AVD Managertools
Herbstcampus 2012 – Roboter-Baukasten 7
Der SDK Manager
• Installieren und aktualisieren von
• Platformen und -Tools• Dokumentation• Quellen• Ergänzende Bibliotheken
platform-<n>
SDKSDK Manager AVD Managertoolsdocs
Java JDK
SDK Manager
Herbstcampus 2012 – Roboter-Baukasten 8
Platform – android.jar
platform-<n> android.jarmaps.jar
SDKSDK Manager AVD Managertoolsdocs
Java JDK
java.awt.font java.beans java.io java.lang java.lang.annotation java.lang.ref java.lang.reflect java.math java.net java.nio.* (5) java.security.* (5) java.security.acl java.sql java.text java.util java.util.concurrent.* (3)java.util.jarjava.util.loggingjava.util.prefsjava.util.regexjava.util.zipjavax.cryptojavax.crypto.interfacesjavax.crypto.specjavax.netjavax.net.ssljavax.security.* (5)javax.sqljavax.xml.* (10)
java.appletjava.awt.* java.lang.instrument java.lang.management java.rmi.* java.util.spi
javax.accessibility javax.activation javax.activity javax.annotation javax.annotation.* javax.imageio.* javax.jws.* javax.lang.* javax.management.*javax.naming.*javax.print.*javax.rmi.* javax.sound.* javax.swing.* javax.tools.*javax.transaction.*javax.xml.soapjavax.xml.stream.*javax.xml.crypto.*javax.xml.ws.*
org.omg.*org.w3c.dom.bootstraporg.w3c.dom.events )
junit.frameworkjunit.runner
javax.microedition.khronos.openglesjavax.microedition.khronos.eglorg.apache.http.* (32)org.json
android.accessibilityserviceandroid.accountsandroid.app.* (3)android.appwidgetandroid.bluetoothandroid.content.* (3)
android.database.* (2)android.gestureandroid.graphics.* (3)android.hardwareandroid.inputmethodserviceandroid.locationandroid.mediaandroid.net.* (3)android.openglandroid.osandroid.preferenceandroid.providerandroid.saxandroid.service.wallpaperandroid.speechandroid.speech.ttsandroid.telephony.* (3)android.test.* (3)
android.text.* (5)android.utilandroid.view.* (4)android.webkitandroid.widget
Herbstcampus 2012 – Roboter-Baukasten 9
Der AVD Manager
• Erstellen Virtueller Devices
• Images und Konfigurationen
• Varianten von• Bildschirmgröße• Pixeldichte• Hardwareausstattung• Speicherkartengröße und -Inhalt
QVGA 240x320WQVGA400 240x400WQVGA432 240x432HVGA 320x480WVGA800 480x800WVGA854 480x854
SDKSDK Manager AVD Managertoolsdocs
Java JDK
platform-<n> android.jarmaps.jar AVD
WVGA800AVD Manager
Herbstcampus 2012 – Roboter-Baukasten 10
Emulator
• Führt ein AVD aus
• Aber langsam
SDKSDK Manager AVD Managertoolsdocs
Java JDK
platform-<n> android.jarmaps.jar AVD
EmulatorScreen
SD-Card
LAN
(Telefon)
Herbstcampus 2012 – Roboter-Baukasten 11
Mit Smartphone/Tablet entwickeln
• Geeignete USB-Treiber installieren
• Am Gerät• Einstellungen > • Anwendungen > • Entwicklung > • USB-Debugging aktivieren
SDKSDK Manager AVD Managertoolsdocs
Java JDK
platform-<n> android.jarmaps.jar AVD
EmulatorScreen
SD-Card
LAN
(Telefon)
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Herbstcampus 2012 – Roboter-Baukasten 12
ADB – Android Debug Bridge
• Für Kommunikation mit Emulatoren und echten Geräten• Deviceliste• Logausgaben
• Shell• Dateiaustausch• (De)Installation von Apps
SDKSDK Manager AVD Managertoolsdocs
Java JDK
platform-<n> android.jarmaps.jar AVD
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
adb
logcatshell
EmulatorScreen
SD-Card
LAN
(Telefon)
Herbstcampus 2012 – Roboter-Baukasten 13
IDE – Unterstützung
• Für alle namhaften IDEs• Für Eclipse direkt von Google
• ADT – Android Developer Tools
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
Java JDKSDK
platform-<n> adb AVDandroid.jar
SDK Manager AVD Managertoolsdocs
maps.jarIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
Herbstcampus 2012 – Roboter-Baukasten 14
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Emulator
Die AndroidManifest.xml
• Identifizierung• Package
• Voraussetzungen• Hardware• Berechtigungen• Versionen
• Bestandteile
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Herbstcampus 2012 – Roboter-Baukasten 15
AndroidManifest.xml uses-sdkrequires-featureuses-permission
View• Oberflächen
und -elemente• Layouts• Widgets• CustomViews
• WYSIWYG Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
View
IDE Eclipse + ADT
Herbstcampus 2012 – Roboter-Baukasten 16
Ressourcen
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
View
View
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Activity
ContentView
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu
Ressourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
• Arten:• Texte, Bilder,
Layouts, Menüs, Farben, Größen,Animationen
• Varianten:• Sprache, Land,
Auflösung, Größe,Orientierung, Version
Herbstcampus 2012 – Roboter-Baukasten 17
R • Zugriff auf Ressourcen
• Auswahl zur Laufzeit abhängig von Konfiguration
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
View
Ressourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
R
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
Herbstcampus 2012 – Roboter-Baukasten 18
Activity
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Activity
ContentView
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu
View
onClick
onCreate
Launcher
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
• Für User Interfaceverantwortlich
• Was ist zu sehen?• Content View• Action Bar?
• Was geschieht bei Events?• Nichts Blockierendes
• Warum bin ich so kurzlebig
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
sichtbar
aktiv
onCreate
onStart
onResume
onPause
onStop
onDestroy
onRestart
Herbstcampus 2012 – Roboter-Baukasten 19
Service
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Activity
ContentView
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu
• Hintegrundoperationen• Startbar von User oder
bei Systemereignissen
• Öffentliche Dienste• AIDL• Aufrufbar von anderen Prozessen
Service AIDLLong Operations
Herbstcampus 2012 – Roboter-Baukasten 20
Service AIDLLong Operations
Activity
ContentView
Adapter
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
AIDLLong Operations AIDLLong Operations
Intent
Laufzeitumgebung App
• Nachricht zum Start einer Activity oder Service• Dedizierte Klasse• Standard-Action und Uri
• Objekt oder Content Ressource• Wird von Laufzeitumgebung aufgelöst
• Custom Action mit Extra-Daten
Intent
Action Scheme Startet Activity für
Intent.ACTION_DIAL tel: Telefon
Intent.ACTION_VIEW http: Internet
Intent.ACTION_SENDTO mailto: Email
Intent.ACTION_VIEW geo: Map
Herbstcampus 2012 – Roboter-Baukasten 21
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Activity
ContentView
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu
• Erhalten Nachricht beiSystemereignissen
• Boot completed• SMS received• WiFi connected• Battery low
• Können Services starten
Broadcast Receiver
Service AIDLLong Operations
Broadcast Receiver
Laufzeitumgebung
Herbstcampus 2012 – Roboter-Baukasten 22
Laufzeitumgebung
Widget
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Activity
ContentView
Event Listener
LifecycleOperations
Bundle
Short Operations
ActionBar
Dialog
Menu• Injizieren RemoteView in Oberfläche
• Periodischaktualisierbar
• Broadcast• Alarm
Broadcast ReceiverWidget
onUpdate
AlarmManager
Herbstcampus 2012 – Roboter-Baukasten 23
Laufzeitumgebung
Activity
ContentView
Broadcast ReceiverWidget
ListActivity
Adapter
AlarmManager
Event Listener
LifecycleOperations
android.R
Bundle
Service AIDLLong Operations
App
Short Operations
ActionBar
Notifications
Dialog
Menu
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
Content Provider• Bereitstellung von Daten
• Adressierung durch Uri
• Auslesen durch Projektionen
ContentProvider
Uri CRUD Operations
SQLite
Content
…com.android.bluetooth.opp.BluetoothOppProvidercom.android.browser.BrowserProvidercom.android.htmlviewer.FileContentProvidercom.android.providers.applications.ApplicationsProvidercom.android.providers.calendar.CalendarProvider2com.android.providers.contacts.HtcContactsProvider2com.android.providers.contacts.SocialProvidercom.android.providers.downloads.DownloadProvider...
Herbstcampus 2012 – Roboter-Baukasten 24
Laufzeitumgebungandroid.R
Activity
ContentView
ContentProvider
Broadcast ReceiverWidget
Uri CRUD Operations
AlarmManager
Event Listener
LifecycleOperations
Bundle
Service AIDLLong Operations
App
Short Operations
ActionBar
Notifications
Dialog
Menu
AndroidManifest.xml uses-sdkrequires-featureuses-permission
Emulator
DeviceScreen
Sensoren
SD-Card
WLAN
GPS
Camera
Telefon
Screen
SD-Card
LAN
(Telefon)
RRessourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
layout
View
Java JDKSDK
platform-<n> adb AVDIDE Eclipse + ADT
IntelliJ IDEA
NetBeans
android.jar
SDK Manager AVD Managertoolsdocs
maps.jar
SQLite
• Adapter verbindet• Views eines Teil-Layouts• Projektion eines Cursors
• Custom oder android.R
ListActivity
Adapter
ListActivity
layout
Herbstcampus 2012 – Roboter-Baukasten 25
Java JDKSDK
platform-<n> adb AVD
Emulator
Device
AndroidManifest.xml uses-sdkrequires-feature
IDE Eclipse + ADT
IntelliJ IDEA
NetBeans
Ressourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
RActivity
ContentView
ContentProvider
Screen
Sensoren
SD-Card
Broadcast ReceiverWidget
Laufzeitumgebung
ListActivity
Adapter
WLAN
Uri CRUD Operations
AlarmManager
GPS
Camera
Telefon
Screen
SD-Card
LAN
uses-permission
(Telefon)
Event Listener
LifecycleOperations
layout
android.jar
android.R
Bundle
Service AIDLLong Operations
Vie
w
App
Short Operations
ActionBar
Notifications
Dialog
Menu
SDK Manager AVD Managertoolsdocs
maps.jar
SQLite
Herbstcampus 2012 – Roboter-Baukasten 26
Laufzeitumgebung
Java JDKSDK
platform-<n> adb AVD
Emulator
Device
AndroidManifest.xml uses-sdkrequires-feature
IDE Eclipse + ADT
IntelliJ IDEA
NetBeans
Ressourcen
layout-land
animxml
drawable-mdpidrawable-hdpi
drawable
values-envalues
menu
RActivity
ContentView
ContentProvider
Screen
Sensoren
SD-Card
Broadcast ReceiverWidget
Service
ListActivity
Adapter
WLAN
Uri CRUD Operations
AIDL
AlarmManager
GPS
Camera
Telefon
Screen
SD-Card
LAN
uses-permission
(Telefon)
Event Listener
LifecycleOperations
layout
android.jar
android.R
Bundle
Long Operations
Vie
w
App
Short Operations
ActionBar
Notifications
Dialog
Menu
SDK Manager AVD Managertoolsdocs
maps.jar
SQLite
logcatshell
Launcher
onCreate
onClickonClick
onUpdate
WVGA800
Intent
Content
Vielen Dank!
Manfred BorzechowskiLambdaLogic Informationssysteme GmbH