16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
2
Heute
● Was ist Android?● Programmieren für Android● App-Struktur● Activities und Intents● App-Design● GUI und Layout
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
3
Android in a nutshell
● Open-Source (Open Headset Alliance)● Basiert auf Linux● Dalvik VM – optimierte Java VM● Voll nutzbar nur mit Google Services, z.B.
● Play Store● Maps usw.
Keine Teile von Android!
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
4
Programmiersprachen
● Grundsätzlich: Java● Java-Code wird in Dalvik-Format konvertiert● Sämtliche systemnahen Java-Funktionen sind nicht
nutzbar
● Für Layout und Metadaten: XML● Wird letzendlich auch zu Java-Code gemacht, ist
aber komfortabler● R.java enthält Referenzen für diese Objekte
● "Native development kit": C/C++
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
5
Probleme - Energie
● Akkus halten meist nicht lange● Betriebssysteme werden auf Akkulebenszeit
optimiert● Apps mit hohem Verbrauch fallen auf● Folgen:
● Viele Callback-Funktionen
● Activities und Services können "einfach so" vom System beendet werden
● PassiveLocationProvider
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
6
Probleme - Netzwerk
● Es kann nicht von einer vorhandenen/stabilen Netzwerkverbindung ausgegangen werden● System verbietet Netzwerkoperationen im Main-
Thread● Wichtige Daten zwischenspeichern
● Volumenbeschränkte Tarife/Langsame Verbindung● Möglichst wenig Daten schicken/empfangen● Mobilfunk ist für http optimiert!
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
7
Probleme - Hardware
● Es gibt sehr viele verschiedene Geräte:● Angaben in density-independent pixels (dp)● Sensoren, Kamera, GPS usw. verschieden● Leistung sehr unterschiedlich
● Generell oft wenig Platz und immer nur eine App sichtbar● Gutes Layout entscheidend● Viel Feedback an den User notwendig
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
8
Probleme - Software
● Neue Funktionen in neueren Versionen● Support-libraries und Fallunterscheidungen
http://developer.android.com/about/dashboards/index.html
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
9
Android Developer Tools
● ADT-bundle (Empfohlen!)● http://developer.android.com/sdk/● Eclipse mit Android-Plugin● SDK-Manager zum Download der benötigten
Dateien für jede Android-Version
● Android Studio● Von Google als Ersatz für Eclipse entwickelt● Basiert auf IntelliJ● Beta, relativ instabil
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
10
Tutorials, Dokumentation, APIs...
http://developer.android.com/
ist Ausgangspunkt für alles, was man braucht:● Erklärungen und Einführungen zu allen
Funktionen● Beispiele● APIs● Design und Designrichtlinien
...
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
11
Geräte
● Hardwarebuttons● An/Aus● Lautstärkeregler● Home
sollten klar sein.● Zurück: führt immer zur letzten Ansicht (nicht
notwendigerweise in der gleichen App)● Menü: Wird abgeschafft und durch die ActionBar
ersetzt
Man kann die Funktion aber auch überschreiben!
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
12
App-Struktur
● Leeres Projekt● Was ist das Grundgerüst einer App?
● /src/: Wie in Java, beinhaltet Java-Quelldateien● /gen/ und /bin/: Gebautes Projekt● /libs/: Verwendete Libraries, z.B. Support-library● /res/: Resource-Files, z.B. Layout, Grafiken, Strings● AndroidManifest.xml: Meta-Informationen zur App
und ihren Bestandteilen
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
13
Manifest.xml
● API-Versionen● Packagename (wichtig v.a. für Google Play)● Auflistung von Activities und Services● Permissions
● Apps brauchen für viele Aktionen (z.B. Zugriff auf Kontakte) eine Genehmigung
● Wird diese Permission nicht im Manifest gesetzt, wird eine Exception geworfen
● Intent-Filter (mehr dazu kommt noch)
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
14
Hallo Welt
● Live-Demo● Was sieht man und wo kommt es her?● Localization mit values-xx
● Funktioniert ähnlich mit Bildschirmgrößen-/und Formaten (z.B. res/drawable-small-land-stylus)
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
15
Activity● Meist in voller Größe angezeigt● Nur eine Ansicht innerhalb der App● Demo Lifecycle:
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
16
Intent
● Systemnachricht, die immer eine Aufgabe enthält
● Parameter möglich
Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:"+number)); startActivity(callIntent);
● Aufruf anderer Activities innerhalb der App:
Intent intent = new Intent(this, blubb.class);
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
17
IntentFilter
● Wertet aus, ob ein Aufgabe übernommen werden kann
● Erlaubt es z.B., sich für Aktionen (Telefon) oder Protokolle (im Sinne einer URI) zu registrieren
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:host="www.medien.ifi.lmu.de" path="/lehre/ws1314/pem/" android:scheme="http"></data>
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
18
Soweit die Theorie...
● Fragen?● Pause?● Danach:
Crashkurs Android-App-Design
Layout
Wichtigste Views und GUI-Elemente
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
19
Design-Philosophie
● Einheitliches Design erleichtert dem User das "erlernen" neuer Apps
● Nicht iOS- oder Windows Phone-Elemente nachbauen, weil sie besser aussehen oä.
● Am besten nur von Google-Apps abschreiben● Wie man es nicht machen sollte: DB-Navigator
Konsistenz über Plattformen hinweg ist meist sinnlos!● Details auf http://developer.android.com/design/get-
started/creative-vision.html
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
20
Design-Prinzipien
● Real objects are more fun than buttons and menus
● Get to know me
● Keep it brief
● Pictures are faster than words
● Only show what I need when I need it
● If it looks the same, it should act the same
● Only interrupt me if it's important
● Make important things fast
http://developer.android.com/design/get-started/principles.html
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
21
UI-Aufbau
Alte Version von Gmail!
http://developer.android.com/design/get-started/ui-overview.html
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
22
Action Bar
1. Icon – führt eine Hierarchiestufe nach oben
2. App-Name oder Auswahl der darunterliegenden View (z.B. In der Galerie: Alben, Orte, Zeiten...) über Spinner
3. Häufig benutzte Aktionen (Action buttons)
4. "Action overflow" – weniger häufig benutzt
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
23
Navigation Drawer● Kann die Navigation zu
allen Views übernehmen● Wann sollte man den
Navigation Drawer einem Spinner oder einer Tabbed View vorziehen?
Spiegel Online-App
16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14
24
Layout● Der statische Teil wird in xml-Dateien definiert● Demo LinearLayout● Demo Button● sp und dp