59
Einführung in Android Sebastian Süß Einführung in die Anwendungsentwicklung FH Gießen Friedberg 27. Oktober 2010 Freitag, 29. Oktober 2010

Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Einführung in Android

Sebastian Süß

Einführung in die Anwendungsentwicklung

FH Gießen Friedberg

27. Oktober 2010

Freitag, 29. Oktober 2010

Page 2: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Inhalt

• Was bisher geschah / Prognosen

• Grundlagen

• Entwicklungsumgebung

• Beispiel: Notensammler

• Intents und Filter

• Beispiel: Erweiterungsmechanismus

• Fragen

2Freitag, 29. Oktober 2010

Page 3: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Was bisher geschah

2005 • Google kauft Android Inc.

2007 • Open Handset Alliance mit 35 (jetzt 78) Unternehmen gegründet. Branchen: Software, Hardware, Netzbetreiber, Marketing

2008• T-Mobile G1 / Android Market Start in USA und GB

• Android wird Open Source (Apache License V. 2.0)

• SDK 1.0 (API Level 1) veröffentlicht

2009 • Versionen: 1.1 , 1.5 „Cupcake“, 1.6 „Donut“, 2.0 „Eclair“

2010 • 2.1 „Eclair“, 2.2 (AL 8) „Froyo“ Mai, 3.0 „Gingerbread“ Ende 2010

3

Android Market 20.10.2010

Freitag, 29. Oktober 2010

Page 4: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Prognosen - Aufteilung weltweit 2010 - 2014

4

Source (2010): http://www.gartner.com/it/page.jsp?id=1434613

OS Unit Sales WW (M) 2014 2010 Difference

Symbian 264,4 30,2 % 40,1 % -9,9 %

Android 259,3 29,6 % 17,7 % 11,9 %iOS 130,4 14,9 % 15,4 % -0,5 %

RIM OS 102,6 11,7 % 17,5 % -5,8 %Win Phone 34,5 3,9 % 4,7 % -0,8 %

Other 84,5 9,6 % 4,7 % 4,9 %Total 875,7

Freitag, 29. Oktober 2010

Page 5: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen

5Freitag, 29. Oktober 2010

Page 6: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Android Platform

6

Libraries (C/C++)

SQLite

WebKit

FreeType

OpenGL ES

MediaFramework

...

Android Runtime

Core Lib

Dalvik VM

Application Framework

LocationManager

NotificationManager

ResourceManager

...

Applications (Apps)

Home / Launcher Contacts Browser MyApp

http://developer.android.com/guide/basics/what-is-android.html

Linux Kernel

DisplayDriver

CameraDriver

ProcessManagement

...

Freitag, 29. Oktober 2010

Page 7: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Build einer Anwendung

7

.java

.java

.java

.xml

.png

.xml

javac

.class

.class

.class dx

classes.dexaapt

.xml

.png

.xml

classes.dex

.apk signieren

Projektsrc

res

Freitag, 29. Oktober 2010

Page 8: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendung & Prozesse

Jede Anwendung...

• besitzt eine eindeutige Benutzer ID (app_<nummer>)

• läuft isoliert in einem Linux-Prozess mit eigener DVM

http://developer.android.com/guide/topics/fundamentals.html

8

USER PID ! PPID!! NAMEroot 33 1 ! zygoteapp_17 127 33 ! com.android.launcherapp_21 241 33 ! com.android.emailapp_34 314 33 ! de.mlh.vtrainerapp_32 337 33 ! ! de.tu.ap.notensammleru2

Freitag, 29. Oktober 2010

Page 9: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendung & Prozesse

Jede Anwendung...

• besitzt einen eigenen „Sandkasten“ im Dateisystem(/data/data/<app_ID>)

• bekommt nur die Berechtigungen, die vom Entwickler nach außen bekannt gemacht werden(<uses-permission>)

http://developer.android.com/guide/topics/fundamentals.html

9

/data/data/

Freitag, 29. Oktober 2010

Page 10: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendungs-Komponenten

10

Anwendungs-Komponenten

Activity Service

BroadcastReceiver

ContentProvider

Freitag, 29. Oktober 2010

Page 11: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendungs-Komponenten - Activity

11

• Komponente für eine bestimmte Benutzeraktivität

• Verwaltet Benutzerschnittstelle / Menüs / Dialoge

• Eine Anwendung besitzt i.d.R. mehrere Activities

Activity 1: ListContacts Activity 2: EditContact

...

Anwendung: Kontakte

Freitag, 29. Oktober 2010

Page 12: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendungs-Komponenten - Service

12

• Komponente für Hintergrundaktivitäten

• Keine Benutzerschnittstelle

• Stellt Dienste (remote/local) bereit

Service: MusicPlayer Activity: MusicController

Anwendung: Music player

local

Activity: MusicController

Anwendung: Music player 2

remote

Freitag, 29. Oktober 2010

Page 13: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendungs-Komponenten - Broadcast receiver

13

• Empfängt und verarbeitet Nachrichten

• Bsp. „battery low“ oder „picture taken“

Anwendung: Music player

local

Service: MusicPlayer

BR: CallReceiver

incoming call

Freitag, 29. Oktober 2010

Page 14: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Grundlagen - Anwendungs-Komponenten - Content provider

14

• Regelt Datenzugriff zwischen Anwendungen

• Unterstützt Records und Datenströme

URI (enthält Content Provider Id + Datentyp)

+ Projektion, Selektion und Sortierung

Anwendung: Kontakte

DB

Activity: Backup

Anwendung: Backup

Data Cursor (read only): contact recordsContentResolver ContactCP

URI Beispiel:

content://com.example.contactcp/contacts

Präfix Authority (CP Id) Datentyp

Freitag, 29. Oktober 2010

Page 15: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung

15Freitag, 29. Oktober 2010

Page 16: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung - Android SDK

Android SDK http://developer.android.com/sdk

Debug Monitor, Tracer, Emulator,...

Installierte Android Plattformen: System images, Dev libs,...

Installierte add-on APIs: z.B. Google API level 7 (Android 2.1)

16

Android SDK and Device Manager

.

.

.

Freitag, 29. Oktober 2010

Page 17: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung - Android AVD Manager

17Freitag, 29. Oktober 2010

Page 18: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung - Android AVD Manager

18Freitag, 29. Oktober 2010

Page 19: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung - Android Emulator

19

Home App

Standard Knöpfe

Launcher

System-Statusleiste

Freitag, 29. Oktober 2010

Page 20: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Entwicklungsumgebung - Android Developer Tools (ADT) Eclipse

Installation über: https://dl-ssl.google.com/android/eclipse/20

Freitag, 29. Oktober 2010

Page 21: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projekt erstellen

21

ID der Anwendungz.B. com.android.phonecom.google.maps

Freitag, 29. Oktober 2010

Page 22: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projektstruktur

22

public class MyFirstAppActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

}

Freitag, 29. Oktober 2010

Page 23: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projektstruktur

Ressourcen-Ordner: Verschiedene Ressourcen-Typen (Bilder, Texte,...)

23

<resources> <string name="hello">Hello World, MyFirstAppActivity!</string> <string name="app_name">My first Android application</string></resources>

Freitag, 29. Oktober 2010

Page 24: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projektstruktur

24

/* AUTO-GENERATED FILE. DO NOT MODIFY. * * ... */package de.suess.firstapp;

public final class R {

public static final class drawable { public static final int icon=0x7f020000; }

public static final class layout { public static final int main=0x7f030000; }

public static final class string { public static final int app_name=0x7f050000; public static final int hello=0x7f040000; }}

Freitag, 29. Oktober 2010

Page 25: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projektstruktur

25

Enthält weiterhin nur eine ID für Standard- und Alternativ-Ressource

Alternativen für Landscape

Alternativen für Sprache „deutsch“

App

Freitag, 29. Oktober 2010

Page 26: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Projektstruktur

26

<manifest xmlns:android="..." package="de.suess.firstapp" android:versionCode="1" android:versionName="1.0_pre-alpha-midnight-build">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".MyFirstAppActivity" ... > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>

</application>

<uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.CAMERA" />

</manifest>

Freitag, 29. Oktober 2010

Page 27: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Standardbeispiel - Layout

27

<LinearLayout xmlns:android="..." android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

Activity-TitelleisteTextView

LinearLayout

ViewGroup

View

Freitag, 29. Oktober 2010

Page 28: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Anwendung: Notensammler

Erweitertes Beispiel: Notensammler

28

speichern

Activity 2: NoteErfassenActivity 1: NoteListe

anlegen

Freitag, 29. Oktober 2010

Page 29: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Layout NoteErfassen

TextView...

RadioGroup

Spinner

EditText (number)

EditText (number)

Button

LinearLayout (vertical)

AutoCompleteTextView

29Freitag, 29. Oktober 2010

Page 30: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Layout NoteErfassen

30

• Neue Ressource hinzufügen: @+id/<name>

• Schwellwert Vorschläge:completionThreshold="<Anzahl Zeichen>"

<LinearLayout ...>

<TextView android:text="@string/info_insert_mark".../> <TextView android:text="@string/module".../>

<AutoCompleteTextView android:id="@+id/autotxt_modul" android:layout_width="fill_parent" android:layout_height="wrap_content" android:completionThreshold="3" />

<RadioGroup android:id="@+id/rgrp_term"...>

<RadioButton android:id="@+id/rbtn_st" android:text="@string/st" android:checked="true" .../> <RadioButton android:id="@+id/rbtn_wt" android:text="@string/wt".../>

</RadioGroup>

Freitag, 29. Oktober 2010

Page 31: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Layout NoteErfassen

31

<Spinner android:id="@+id/spin_year" .../>

<TextView android:text="@string/crp" .../>

<EditText android:id="@+id/etxt_crp" android:inputType="number" .../>

<TextView android:text="@string/mark_percent".../>

<EditText android:id="@+id/etxt_mark_percent" android:inputType="number" .../>

<Button android:id="@+id/btn_save" android:text="@string/save" android:onClick="onButtonClick" .../>

</LinearLayout>

• Eingabewerte bestimmen mit: inputType="<type>"

• Call-back-Methode für ButtonClick: onClick="onButtonClick"

Freitag, 29. Oktober 2010

Page 32: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Ressourcen erweitern

<resources> <string-array name="modules"> <item>CS1001 Grundlagen der Informatik</item> <item>CS1003 Rechnerarchitektur</item> <item>CS1004 Algorithmen &amp; Datenstrukturen</item> <item>CS1005 Objektorientierte Programmierung</item> ... </string-array></resources>

32

Konstante: R.array.modules

Freitag, 29. Oktober 2010

Page 33: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Activity NoteErfassen anpassen

public class NoteErfassen extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.note_erfassen); // configure auto text view AutoCompleteTextView autotxtModul = (AutoCompleteTextView) findViewById(R.id.autotxt_modul);

String[] suggest = getResources().getStringArray(R.array.modules);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, suggest);

autotxtModul.setAdapter(adapter);

// configure year spinner Spinner spinModul = (Spinner) findViewById(R.id.spin_year);

ArrayAdapter<Integer> adapter2 = new ArrayAdapter<Integer>(this, android.R.layout.simple_spinner_item, getYears());

spinModul.setAdapter(adapter2);...

33Freitag, 29. Oktober 2010

Page 34: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Activity NoteErfassen anpassen

public class NoteErfassen extends Activity {... public void onButtonClick(View target) {

switch (target.getId()) { case R.id.btn_save: persistNote(); // beende Activity finish(); break; } }...

• Note wird gespeichert

• Activity beendet und zurück zu „NoteListe“

34Freitag, 29. Oktober 2010

Page 35: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Activity NoteListe erstellen

35

ListViewListItem (android.R.layout.simple_list_item_1)

.

.

.

Freitag, 29. Oktober 2010

Page 36: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - Activity NoteListe erstellen

public class NoteListe extends ListActivity {... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(Bundle savedInstanceState);

NoteVO[] noten = getNoten();

ArrayAdapter<NoteVO> adapter = new ArrayAdapter<NoteVO>(this, android.R.layout.simple_list_item_1, noten);

setListAdapter(adapter); }...

• ListActivity enthält Standard-Layout (ListView)

• ListItem-Layout: simple_list_item_1

36Freitag, 29. Oktober 2010

Page 37: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - NoteListe Optionsmenü

37Freitag, 29. Oktober 2010

Page 38: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - NoteListe Optionsmenü

38

<menu ...>

<item android:id="@+id/item_add_mark"android:title="@string/add_mark"android:icon="@android:drawable/ic_menu_add" />

<item android:id="@+id/item_show_catalog" android:title="@string/show_catalog" android:icon="@android:drawable/ic_menu_view" />

</menu>

http://androiddrawableexplorer.appspot.com/

Freitag, 29. Oktober 2010

Page 39: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - NoteListe Optionsmenü

39

public class NoteListe extends ListActivity {...@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);

getMenuInflater().inflate(R.menu.note_liste_menue, menu);

return true; }

Freitag, 29. Oktober 2010

Page 40: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - NoteListe Optionsmenü

40

public class NoteListe extends ListActivity {...@Override public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item_add_mark: Intent i = new Intent(this, NoteErfassen.class); startActivity(i); break;

; ; ; }

return super.onOptionsItemSelected(item); }

Freitag, 29. Oktober 2010

Page 41: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Erweitertes Beispiel - NoteListe Optionsmenü

41

public class NoteListe extends ListActivity {...@Override public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item_add_mark: Intent i = new Intent(this, NoteErfassen.class); startActivity(i); break;

case R.id.item_show_catalog: Intent i2 = new Intent(Intent.ACTION_VIEW); i2.setData(Uri.parse("http://www.mni.fh-giessen.de")); startActivity(i2); break; }

return super.onOptionsItemSelected(item); }

Expliziter IntentKomponente zur Programmierzeit bekannt!

Impliziter IntentKomponente wird zur Laufzeit ermittelt

Freitag, 29. Oktober 2010

Page 42: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - implizit

42

startActivity

Activity aus App Browser

AndroidPlatform

startActivity

search matching Activity

Freitag, 29. Oktober 2010

Page 43: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - implizit

43

Activity aus App Contact Activity aus App Phone

Intent i = new Intent(Intent.ACTION_DIAL);i.setData(Uri.parse("tel:+49 641 309 1234"));startActivity(i);

startActivity

AndroidPlatform

startActivity

search matching Activity

Freitag, 29. Oktober 2010

Page 44: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - implizit

44

Mehrere Activities für einen Intent

Keine Activity gefunden

Was kann beim Senden von impliziten Intents passieren?

• Genau eine Activity wurde gefunden und gestartet

• Mehrere Activities wurden gefunden

• Keine Activity wurde gefunden

Freitag, 29. Oktober 2010

Page 45: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filter

45

IntentKomp. A

Komp. C

Komp. B

?

Wie findet das System eine passende Komponente zu einem impliziten Intent?

Filter A

Filter B

Filter C

Ein Filter beschreibt, auf welche Intents eine Komponente (Activity, Service, BR) reagiert

Freitag, 29. Oktober 2010

Page 46: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filter

46

<activity android:name=".MyVideoViewer"> <intent-filter> <action android:name="android.intent.action.VIEW" />

<data android:mimeType="video/quicktime" /> <data android:mimeType="video/mpeg" />

<category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>

Freitag, 29. Oktober 2010

Page 47: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filter

47

<activity android:name=".MyBrowser"> <intent-filter> <action android:name="android.intent.action.VIEW" />

<data android:scheme="http" /> <data android:scheme="https" />

<category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>

Freitag, 29. Oktober 2010

Page 48: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filter

48

<receiver android:name=".StartUpBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter></receiver>

Freitag, 29. Oktober 2010

Page 49: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filtertest

49

Action test

Positiv, wenn die Action mit einem Action-Filter-Element übereinstimmt

android.intent.action.VIEWandroid.intent.action.EDIT

android.intent.action.VIEWCATEGORY_DEFAULThttp://xyz.de/test.mpg

http://developer.android.com/guide/topics/intents/intents-filters.html#ires

Intent filter

Freitag, 29. Oktober 2010

Page 50: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filtertest

50

• Positiv, wenn alle Kategorien im Intent auch im Filter vorkommen

• Positiv, wenn Kategorie im Intent leer

• Intents, die über startActivity oder startActivityForResult versendet werden, besitzen immer die Kategorie „Default“

Category testpositiv

android.intent.category.DEFAULTandroid.intent.category.BROWSABLEandroid.intent.category.ALTERNATIVE

http://developer.android.com/guide/topics/intents/intents-filters.html#ires

Intent filter

Action test

android.intent.action.VIEWCATEGORY_DEFAULThttp://xyz.de/test.mpg

Freitag, 29. Oktober 2010

Page 51: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Intent - Filtertest

51

Positiv, wenn die Daten im Intent zu einem Data-Filter-Element passen

<data android:mimeType="video/mpeg" android:scheme="http"/><data android:mimeType="audio/mpeg" android:scheme="http"/>

Data test

http://developer.android.com/guide/topics/intents/intents-filters.html#ires

Category testAction test

android.intent.action.VIEWCATEGORY_DEFAULThttp://xyz.de/test.mpg

positiv

Intent filter

Freitag, 29. Oktober 2010

Page 52: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Beispiel: Erweiterungsmechanismus

Anforderungen:• Basisanwendung mit Testlektion• Weitere Lektionen können nachgekauft werden

52Freitag, 29. Oktober 2010

Page 53: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Beispiel: Erweiterungsmechanismus

Plugin: A

DB

CP RequestBR

Anwendung: Small-Talk

DB

ResponseBR

Plugin: B

DB

CP RequestBR

1. Start

2. sendBroadcastID: de.mlh.st.PLUGIN_REQUEST

53Freitag, 29. Oktober 2010

Page 54: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Beispiel: Erweiterungsmechanismus

Plugin: A

DB

CP RequestBR

Anwendung: Small-Talk

DB

ResponseBR

Plugin: B

DB

CP RequestBR

4. Register

3. sendBroadcastID: de.mlh.st.PLUGIN_RESPONSE

ContentProvider Authority ID

54Freitag, 29. Oktober 2010

Page 55: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Beispiel: Erweiterungsmechanismus

Plugin: A

DB

CP RequestBR

Anwendung: Small-Talk

DB

ResponseBR

Plugin: B

DB

CP RequestBR

CResolver

6. Query:

content://de.mlh.st.pluginA/lection

5.

55Freitag, 29. Oktober 2010

Page 56: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Beispiel: Erweiterungsmechanismus

Plugin: A

DB

CP RequestBR

Anwendung: Small-Talk

DB

ResponseBR

Plugin: B

DB

CP RequestBR

CResolver

7. Query:

content://de.mlh.st.pluginB/lection

5.

56Freitag, 29. Oktober 2010

Page 57: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Stresstest

57

http://developer.android.com/guide/developing/tools/monkey.html

Freitag, 29. Oktober 2010

Page 58: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Fragen

58

?

Freitag, 29. Oktober 2010

Page 59: Einf hrung in Android Einführung in die Anwendungsentwicklunghg10187/av-isa-suess-27.10.2010.pdf · Debug Monitor, Tracer, Emulator,... Installierte Android Plattformen: System images,

Sebastian Süß

Quellen

• Google Inc. Webseite, 19.6.2010. http://developer.android.com

• Arno Becker, Markus Pant: Android, Grundlagen der Programmierung, dpunkt.verlag 2009

• Sayed Hashimi et al.: Pro Android 2, Apress 2010

59Freitag, 29. Oktober 2010