You are on page 1of 21

Software-Entwicklung fr Android Grundlagen

29.11.2010, Martin Grotz

Inhalt des Vortrags


1. Google Android:
1. 2. Software Hardware

2.

Theoretische Grundlagen
1. 2. 3. Komponenten einer Applikation Application lifecycle Sicherheitsfunktionen / Rechtemanagement

3.

Programmierung
1. 2. 3. 4. 5. 6. Views / Layouts Mens / Dialoge Texte / Internationalisierung Grafiken unter Bercksichtigung verschiedener Gertetypen Daten-Speicherung Ausblick

4. 5.

Deployment Live-Demo

Schematischer Aufbau des Android Systems

Software-Versionen
Inhomogenitt und Update-Politik der HandyHersteller erschwert Entwickeln, da man sich nicht auf aktuelle Versionen verlassen kann:

Hardware
Verschiedenste Smartphones mit Android-OS:
Auflsungen von 240x400 (Samsung Galaxy 3) bis 480x800 (HTC Desire HD) Mit/ohne Lagesensor, GPS-Modul, Kompass Langsame CPU, schnelle CPU Wenig RAM, viel RAM

Bald: Android-Tablets -> noch mehr verschiedene Hardware, die man bercksichtigen sollte

Application components
Activity:
Stellt UI fr eine Aufgabe bereit. Bspw. knnte eine IM-Anwendung eine Activity haben fr die Anzeige der Kontakte, eine zweite fr das Schreiben einer Nachricht und eine weitere fr das Lesen der ChatHistory Jede Activity ist unabhngig von allen anderen

Service:
Hat keine grafische Oberflche Luft auf unbestimmte Zeit im Hintergrund und fhrt dort Aufgaben aus Beispiel: Ein Musikplayer, dessen Abspielfunktion als Service implementiert ist

Application components
Broadcast receiver
Wartet auf Broadcast-Nachrichten und reagiert entsprechend Kein UI Broadcast-Nachrichten knnen vom System kommen (neue Zeitzone, Batterie fast leer, Nutzer hat Sprache gendert), aber auch von User-Applikationen, z.B. wenn ein Update-Service eine Activity benachrichtigen mchte.

Content provider
Stellt Teile der Programm-Daten nach auen hin bereit Die Daten knnen im Dateisystem vorliegen, oder in einer SQLite-Datenbank, oder in irgendwas anderem, das Sinn macht

Activity Lifecycle

Service lifecycle

Sicherheit und Rechtemanagement


Basis-Sicherheit durch Nutzung der blichen LinuxMechanismen (UserID, GroupID) Jede Applikation = eigener Prozess Jeder Prozess luft in einer eigenen Sandbox Keine Applikation kann standardmig persnliche Daten des Nutzers Lesen oder Schreiben Besondere Rechte mssen vom Nutzer bei Installation des Programms explizit akzeptiert werden Alle Programme mssen digital signiert sein (man kann aber ein selbsterstelltes Zertifikat nutzen)

Views
Umschalten zwischen verschiedenen Ansichten ber Views:

Wechsel mit setContentView()

Layout-Definition
Kein AWT/Swing XML-Dateien mit verschiedenen Layouts und Widgets, die ineinander verschachtelt werden:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_game" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"

>
<TextView
android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/pleaseInsertNumber"

/> <EditText
android:id="@+id/game_UserInput" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:minEms="3" android:numeric="integer"

/>

</LinearLayout>

UI-Events behandeln
View Objekt stellt Event Listener fr verschiedenste User-Interaktionen bereit ber callback handler knnen diese Events dann behandelt werden Beispiele:
onClick() onLongClick() onKey()

Men
Options-Men: Sobald man die Menu Taste drckt, erscheint ein Men mit maximal sechs Eintrgen, die jeweils ein Icon haben Soll das Men mehr Eintrge haben, wird ein zustzlicher Button generiert, der dann in ein reines Textmen mit allen Eintrgen wechselt Kontext-Men: Erscheint beim langen Drcken auf eine View Untermen: Kann Optionen im Options- oder Kontextmen zugeordnet werden

Definition des Mens als XML-Datei:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/menuStartNewGame" android:id="@+id/item_newGame" android:icon="@drawable/start_new_game"></item> <item android:id="@+id/item_quitApp" android:title="@string/menu_stopApp" android:icon="@drawable/close_app"></item> </menu>

Dialog
Dialoge erscheinen im Vordergrund der aktuellen Activity Solange ein Dialog offen ist, kann nichts anderes mehr in der Activity angeklickt werden Vier verschiedene Dialog-Typen:
AlertDialog mit 0-3 Buttons und einem Auswahlmen ProgressDialog: Fortschrittsanzeige mit 0-3 Buttons DatePickerDialog: Datums-Auswahl TimePickerDialog: Zeit-Auswahl

Dialog-Definition als XML

Texte und I18N


Texte werden als Strings in Variablen abgelegt Die Zuordnung von Text zur Variable wird in einer XML-Datei festgelegt Internationalisierung ber Dateien in verschiedenen Unterverzeichnissen im resOrdner:

Bercksichtigung verschiedener Gertetypen


Unterschiedliche Auflsungen mit unterschiedlichen DPI erfordern passende Icons:

Ebenso knnen praktisch alle Mens usw. fr verschiedene Gerteklassen variabel definiert werden

Zugriff auf Daten


Fnf verschiedene Arten der Speicherung:
Shared Preferences: Primitive Datentypen in keyvalue-Paaren Interner Gertespeicher: Fr private Daten, je nach Gert eng begrenzt Externer Speicher: Fr ffentliche und grere Daten -> SD-Karte SQLite-Datenbank: Fr strukturierte Daten Im Netzwerk: Abruf ber Internetverbindung

Ausblick
Viele weitere Mglichkeiten, die hier nicht besprochen werden:
Animierte 2D-Grafik ber eigene Android-Klassen 3D-Grafik ber OpenGL ES 1.0 Nutzung von GPS-Koordinaten, Kompass-Daten, Lagesensor usw. Einbindung von Sound und Videos Gibt fr alles komplette Tutorials von Google und zahlreiche Foren von unabhngigen Entwicklern

Deployment
Android Market Zugang kostet einmalig $25 Auch alternative, kostenlose Markets verfgbar Keine Prfung der Programme durch Google Zur Signierung benutztes Zertifikat muss mindestens 30 Jahre lang gltig sein Bei Entwicklung mit Eclipse: Assistent leitet durch kompletten Vorgang, spuckt am Ende optimierte .apk-Datei aus, die nur noch ber ein WebInterface hochgeladen werden muss

Live-Demo
Eclipse + ADB-Plugin Querschnitt durch den Code einer einfachen Demo-Applikation (Nummern-Rate-Spiel) Testen mit dem Android Emulator Testen auf einem angeschlossenen AndroidHandy