software-entwicklung für android
Post on 06-Apr-2018
226 Views
Preview:
TRANSCRIPT
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
top related