21
Software-Entwicklung für Android Grundlagen 29.11.2010, Martin Grotz

Software-Entwicklung für Android

Embed Size (px)

Citation preview

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 1/21

Software-Entwicklung für Android

Grundlagen

29.11.2010, Martin Grotz

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 2/21

Inhalt des Vortrags1. Google Android:

1. Software2. Hardware

2. Theoretische Grundlagen1. Komponenten einer Applikation2. Application lifecycle

3. Sicherheitsfunktionen / Rechtemanagement

3. Programmierung1. Views / Layouts2. Menüs / Dialoge3. Texte / Internationalisierung4. Grafiken unter Berücksichtigung verschiedener Gerätetypen

5. Daten-Speicherung6. Ausblick

4. Deployment5. Live-Demo

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 3/21

Schematischer Aufbau des AndroidSystems

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 4/21

Software-Versionen

• Inhomogenität und Update-Politik der Handy-Hersteller erschwert Entwickeln, da man sichnicht auf aktuelle Versionen verlassen kann:

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 5/21

Hardware

• Verschiedenste Smartphones mit Android-OS: – Auflösungen 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 mehrverschiedene Hardware, die manberücksichtigen sollte

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 6/21

Application components

• Activity: – Stellt UI für eine Aufgabe bereit. – Bspw. könnte eine IM-Anwendung eine Activity haben für

die Anzeige der Kontakte, eine zweite für das Schreiben

einer Nachricht und eine weitere für das Lesen der Chat-History – Jede Activity ist unabhängig von allen anderen

• Service: – Hat keine grafische Oberfläche – Läuft auf unbestimmte Zeit im Hintergrund und führt dort

Aufgaben aus – Beispiel: Ein Musikplayer, dessen Abspielfunktion als

Service implementiert ist

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 7/21

Application components

• Broadcast receiver – Wartet auf Broadcast-Nachrichten und reagiert

entsprechend – Kein UI

 – Broadcast-Nachrichten können vom System kommen(„neue Zeitzone“, „Batterie fast leer“, „Nutzer hat Sprachegeändert“), aber auch von User-Applikationen, z.B. wennein Update-Service eine Activity benachrichtigen möchte.

• Content provider – Stellt Teile der Programm-Daten nach außen hin bereit – Die Daten können im Dateisystem vorliegen, oder in einer

SQLite-Datenbank, oder in irgendwas anderem, das Sinnmacht

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 8/21

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 9/21

Service lifecycle

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 10/21

Sicherheit und Rechtemanagement

• Basis-Sicherheit durch Nutzung der üblichen Linux-Mechanismen (UserID, GroupID)

• Jede Applikation = eigener Prozess

Jeder Prozess läuft in einer eigenen Sandbox• Keine Applikation kann standardmäßig persönliche

Daten des Nutzers Lesen oder Schreiben

• Besondere Rechte müssen vom Nutzer bei Installation

des Programms explizit akzeptiert werden• Alle Programme müssen digital signiert sein (man kann

aber ein selbsterstelltes Zertifikat nutzen)

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 11/21

Views

• Umschalten zwischen verschiedenenAnsichten über Views:

• Wechsel mit setContentView()

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 12/21

Layout-Definition

• Kein AWT/Swing

• XML-Dateien mit verschiedenen Layouts und Widgets, die ineinander verschachtelt werden:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns: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" >

<TextViewandroid:layout_width="fill_parent" 

android:layout_height="fill_parent" 

android:text="@string/pleaseInsertNumber" 

/>

<EditTextandroid:id="@+id/game_UserInput" 

android:singleLine="true" android:layout_width="fill_parent" 

android:layout_height="fill_parent" 

android:minEms="3" 

android:numeric="integer" 

/>

</LinearLayout>

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 13/21

UI-Events behandeln

• View Objekt stellt Event Listener fürverschiedenste User-Interaktionen bereit

• Über callback handler können diese Eventsdann behandelt werden

• Beispiele:

 – onClick()

 – onLongClick()

 – onKey()

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 14/21

Menü

• Options-Menü: – Sobald man die „Menu“ Taste drückt, erscheint ein Menü mit maximal sechs Einträgen, die jeweils

ein Icon haben – Soll das Menü mehr Einträge haben, wird ein zusätzlicher Button generiert, der dann in ein reines

Textmenü mit allen Einträgen wechselt• Kontext-Menü:

 – Erscheint beim langen Drücken auf eine View• Untermenü:

 – Kann Optionen im Options- oder Kontextmenü zugeordnet werden

• Definition des Menüs 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>

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 15/21

Dialog

• Dialoge erscheinen im Vordergrund der aktuellenActivity

• Solange ein Dialog offen ist, kann nichts anderesmehr 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

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 16/21

Texte und I18N

• Texte werden als Strings in Variablen abgelegt

• Die Zuordnung von Text zur Variable wird ineiner XML-Datei festgelegt

• Internationalisierung über Dateien inverschiedenen Unterverzeichnissen im „res-Ordner“: 

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 17/21

Berücksichtigung verschiedenerGerätetypen

• Unterschiedliche Auflösungen mit unterschiedlichenDPI erfordern passende Icons:

• Ebenso können praktisch alle Menüs usw. fürverschiedene Geräteklassen variabel definiert werden

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 18/21

Zugriff auf Daten

• Fünf verschiedene Arten der Speicherung:

 – Shared Preferences: Primitive Datentypen in key-value-Paaren

 – Interner Gerätespeicher: Für private Daten, jenach Gerät eng begrenzt

 – Externer Speicher: Für öffentliche und größere

Daten -> SD-Karte – SQLite-Datenbank: Für strukturierte Daten

 – Im Netzwerk: Abruf über Internetverbindung

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 19/21

Ausblick

• Viele weitere Möglichkeiten, die hier nichtbesprochen 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 für alles komplette Tutorials von Google und

zahlreiche Foren von unabhängigen Entwicklern

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 20/21

Deployment

• Android Market Zugang kostet einmalig $25

• Auch alternative, kostenlose Markets verfügbar

• Keine Prüfung der Programme durch Google

• Zur Signierung benutztes Zertifikat mussmindestens 30 Jahre lang gültig sein

• Bei Entwicklung mit Eclipse: Assistent leitet durch

kompletten Vorgang, spuckt am Ende optimierte.apk-Datei aus, die nur noch über ein Web-Interface hochgeladen werden muss

8/3/2019 Software-Entwicklung für Android

http://slidepdf.com/reader/full/software-entwicklung-fuer-android 21/21

Live-Demo

• Eclipse + ADB-Plugin

• Querschnitt durch den Code einer einfachenDemo-Applikation („Nummern-Rate-Spiel“) 

• Testen mit dem Android Emulator

• Testen auf einem angeschlossenen Android-Handy