Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter



Ähnliche Dokumente
Tutorial. Programmierung einer Android-Applikation. Teil 1

Android Mobile Systeme - Android

Android GUI Entwicklung

Labor 1 : Hello, World

Entwickeln für Android OS

Mobile App Development. - Alarm -

Google Android API. User Interface. Eine knappe Einführung

Naviki GPS-Anwendungsentwicklung für Mobiltelefone

Android Programmierung mit Java Studiengang MI

Android Programmierung mit Java Studiengang MI

Java - Menü und Intent. Leibniz Universität IT Services Anja Aue

Einstieg in die App-Entwicklung für Android-Geräte mit Java. Dr. Cora Burger

Mobile Systeme Android

App Entwicklung für Android F O R T G E S C H R I T T E N E P R O G R A M M I E R U N G I N J A V A

>> Hallo mobile Welt << Einstieg in die Android-App-Programmierung

App Entwicklung mit dem Android SDK

1 Der Einstieg in Java für Android

Android-App-Entwicklung

Accounts und Kontakte in Android

Seminar Multimediale Werkzeuge Sommersemester 2011

Informatik Sommercamp 2012

Einführung in Android

Java: Vererbung. Teil 3: super()

Android-Geräte Programmieren 4. Hinweise zur Android-Programmierung. Stefan Rothe

4. Software-Komponenten in Android

Überleben im Funkloch

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

3 Objektorientierte Konzepte in Java

1 Ein erstes Beispiel

Teil I Augmented Learning - Vortragender: Krischan Udelhoven. Teil II Android - Vortragender: Folker Hoffmann

Mobile App Development. - Einführung -

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober FH-Gieÿen-Friedberg Android Praktikum

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Mobile App Development. - Einführung -

Smartphone Entwicklung mit Android und Java

JOGGA Der Jogging-Companion

Android Apps. Mentoring SS 16. Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo

Programmieren in Java

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Java - Menüs und Fragmente. Leibniz Universität IT Services Anja Aue

Mobile App Development. - Activities -

Einführung in Android. 9. Dezember 2014

Java - Programmierung für Android. Leibniz Universität IT Services Anja Aue

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Software Engineering II

Übungen zur Softwaretechnik

Einführung in die Einführung in Android Anwendungsentwicklung

Einführung in die Programmierung

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

2. Hintergrundverarbeitung in Android: Services und Notifications

Übungen zur Android Entwicklung

App-Entwicklung mit Android Studio

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Objektorientierte Programmierung

Android User Interface

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS HSRM

Java - Programmierung für Android. Leibniz Universität IT Services Anja Aue

Mobile App Development

Android Processes & Services

Javakurs zu Informatik I. Henning Heitkötter

Software Engineering II

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Cocktail-Rezepte-APP

2. GUI-Programmierung für mobile Geräte

Java Einführung Packages

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Kommunikations-Parameter

Software Engineering Interaktionsdiagramme

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Übung: Verwendung von Java-Threads

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Java Einführung Collections

Listing- und Abbildungsverzeichnis

Internet Explorer Version 6

Apps Programmierung von Android-Smartphones

Android-Apps weitere Möglichkeiten

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

App-Entwicklung für Android

Autor: Version: Datum: Auerswald GmbH & Co. KG

App-Entwicklung für Android

Grundlagen von Python

Revox Joy S232 App D 1.0

Zählen von Objekten einer bestimmten Klasse

Android Umgebung einrichten Android Kurs Stufe 1 (Gelbgurt)

Dokumentation des Projektes Tic Tac Toe

Tutorial. Programmierung einer Android-Applikation Notizzettel. Teil 2

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook. 14. Januar 2015

3 Objektorientierte Konzepte in Java

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Internet und WWW Übungen

Einführung in die Java- Programmierung

1. Software-Plattform Android Android. Was ist Android? Managed Code, Angepasste Java Virtual Machine

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Auszug aus JAX-WS Folien

Einführung in die Programmierung für NF

Applets I. Grundlagen der g Applet-Programmierung

Transkript:

Einführung in die Android App-Entwicklung Patrick Treyer und Jannis Pinter

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 2

Was ist Android? Android ist ein von Google entwickeltes Smartphone Betriebssystem mit Linux-Basis Android ist freie Software und steht unter der Apache-Lizenz Marktanteil im Smartphone-Markt: 81% (3/2013) Täglich >1,5 Mio Geräteaktivierungen (April 2013) 3

Was ist Android? 4

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 5

Android Versionen (die wichtigsten Versionen) Version 1.0 Base (09.2008) Version 1.6 Donut (09.2009) Version 2.1 Eclair (01.2010) Version 2.3 Gingerbread (12.2010) Version 3 Honeycomb (02.2011) Version 4 Ice Cream Sandwich (10.2011) Version 4.1 4.3 Jelly Bean (06.2012) Version 4.4 KitKat (10.2013) 6

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 7

Layout, Strings und das AndroidManifest Das Layout einer Activity wird mittels XML definiert Verwendete Strings in der App sollten in einer XML definiert werden Bessere Wartbarkeit Einfache Übersetzung Jede App besitzt eine AndroidManifest.xml Enthält Metainformationen (Name, Version, Services, Intents, Activities) Enthält Berechtigungsinformationen 8

Beispiel strings.xml res/values/strings.xml <?xml version= 1.0 encoding= utf-8?> <resources> <string name= app_name >Soundex-Converter</string> <string name= btn_soundex_calculate >Soundex berechnen</string> <string name= tv_soundex_calculate >Name zum Berechnen:</string> <string name= tv_ergebnis_error >FEHLER</string> <string name= title_activity_ergebis >Ergebnis</string> </resources> 9

Beispiel strings.xml res/values/strings.xml <?xml version= 1.0 encoding= utf-8?> <resources> <string name= app_name >Soundex-Converter</string> <string name= btn_soundex_calculate >Soundex berechnen</string> <string name= tv_soundex_calculate >Name zum Berechnen:</string> <string name= tv_ergebnis_error >FEHLER</string> <string name= title_activity_ergebis >Ergebnis</string> </resources> Android wählt strings.xml automatisch anhand Nutzersprache Englische Übersetzung in: res/values-en/strings.xml Französische Übersetzung in: res/values-fr/strings.xml 10

Beispiel eines Layouts <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".soundexconverter" > <TextView android:id="@+id/tv_et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="name zum berechnen:" /> <EditText android:id="@+id/et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/tv_et_soundex" android:layout_below="@+id/tv_et_soundex" android:ems="10" > <requestfocus /> </EditText> <Button android:id="@+id/btn_soundex_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/et_soundex" android:layout_below="@+id/et_soundex" android:layout_margintop="40dp" android:text="@string/btn_soundex_calculate" /> </RelativeLayout> 11

Beispiel eines Layouts <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".soundexconverter" > <TextView android:id="@+id/tv_et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="name zum berechnen:" /> <EditText android:id="@+id/et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/tv_et_soundex" android:layout_below="@+id/tv_et_soundex" android:ems="10" > <requestfocus /> </EditText> <Button android:id="@+id/btn_soundex_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/et_soundex" android:layout_below="@+id/et_soundex" android:layout_margintop="40dp" android:text="@string/btn_soundex_calculate" /> </RelativeLayout> 12

Beispiel eines Layouts <TextView android:id="@+id/tv_et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="name zum berechnen:" /> 13

Beispiel eines Layouts <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".soundexconverter" > <TextView android:id="@+id/tv_et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="name zum berechnen:" /> <EditText android:id="@+id/et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/tv_et_soundex" android:layout_below="@+id/tv_et_soundex" android:ems="10" > <requestfocus /> </EditText> <Button android:id="@+id/btn_soundex_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/et_soundex" android:layout_below="@+id/et_soundex" android:layout_margintop="40dp" android:text="@string/btn_soundex_calculate" /> </RelativeLayout> 14

Beispiel eines Layouts <EditText android:id="@+id/et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/tv_et_soundex" android:layout_below="@+id/tv_et_soundex" android:ems="10" > <requestfocus /> </EditText> 15

Beispiel eines Layouts <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".soundexconverter" > <TextView android:id="@+id/tv_et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:text="name zum berechnen:" /> <EditText android:id="@+id/et_soundex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/tv_et_soundex" android:layout_below="@+id/tv_et_soundex" android:ems="10" > <requestfocus /> </EditText> <Button android:id="@+id/btn_soundex_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/et_soundex" android:layout_below="@+id/et_soundex" android:layout_margintop="40dp" android:text="@string/btn_soundex_calculate" /> </RelativeLayout> 16

Beispiel eines Layouts <Button android:id="@+id/btn_soundex_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/et_soundex" android:layout_below="@+id/et_soundex" android:layout_margintop="40dp" android:text="@string/btn_soundex_calculate" /> 17

Beispiel AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app.soundexconverter" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="18" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="my.app.soundexconverter.soundexconverter" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="my.app.soundexconverter.ergebnisactivity" android:label="@string/title_activity_ergebnis" > </activity> <activity android:name="my.app.soundexconverter.ergebisactivity" android:label="@string/title_activity_ergebis" > </activity> </application> </manifest> 18

Beispiel AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app.soundexconverter" android:versioncode="1" android:versionname="1.0" > Versionsnummer und Versionsname 19

Beispiel AndroidManifest.xml <activity android:name="my.app.soundexconverter.soundexconverter" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> Activities und Intents werden im AndroidManifest deklariert Die Entwicklungsumgebung kümmert sich automatisch darum! 20

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 21

Activities Entspricht einer Ansicht auf dem Display Implementiert die Logik (Java) Erbt von Klasse Activity Referenziert und interagiert mit UIElementen aus dem Layout-XML 22

Activity Beispiel package my.app.random; import android.app.activity; import android.os.bundle; public class RandomActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_random); } } 23

Activity Beispiel package my.app.random; import android.app.activity; import android.os.bundle; public class RandomActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_random); } } 24

Auf Layout Elemente zugreifen Zugriff auf Layout Elemente erfolgt über findviewbyid() und der Klasse R. Da findviewbyid() ein Objekt des Typs Object zurückliefert ist ein Cast notwendig! /* TextView aus Layout holen */ TextView rndtextview = (TextView) findviewbyid(r.id.tv_random_number); /* Zufallszahl auf TextView schreiben */ rndtextview.settext("13"); tv.settext("13"); 25

Beispiel OnClickListener randombutton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { // randombutton wurde gedrückt // Hier kann man z.b. eine Berechnung auslösen, ein // Textfeld auslesen oder einen Intent starten. } }); 26

27

Intents Asyncrone Nachricht um mit anderen Komponenten zu kommunizieren Kann eine Activity einer anderen App aufrufen (z.b. die Kamera) Kann eine Activity innerhalb der App aufrufen Kann zusätzliche Daten enthalten (z.b. Strings, Integers, Booleans oder serialisierte Objekte) 28

Intents 29

Intent Beispiel Intent intent = new Intent(this, WisdomActivity.class); Der Konstruktor der Klasse Intent erwartet zwei Parameter: Context (Activity erbt von Context) Eine aufzurufende Klasse, welche von Activity, BroadcastReceiver oder Service erbt. 30

Intent Beispiel Intent intent = new Intent(this, WisdomActivity.class); intent.putextra("wisdom", "The cake is a lie!"); Dem Intent lassen sich mit der Methode putextra() Daten übergeben. Die Methode erwartet zwei Parameter: Einen eindeutigen Key (vom Typ String), unter welchem die Daten abgelegt werden. Daten, in Form von einem String, einem Integer, einem Double oder einem Objekt, dessen Klasse das Interface Serializable implementiert. 31

Intent Beispiel Intent intent = new Intent(this, WisdomActivity.class); intent.putextra("wisdom", "The cake is a lie!"); startactivity(intent); Mit der Methode startactivity() lässt sich eine weitere Activity mit der Angabe des Intents starten. 32

Intent Beispiel Bundle extras = getintent().getextras(); String wisdom = extras.getstring("wisdom"); In der aufgerufenen Activity lassen sich die mitgegebenen Daten wieder aus dem Bundle holen und verwenden. 33

Services Services laufen im Hintergrund Erbt von Klasse Service Kann beim Systemstart gestartet werden Beispiel: Messenger App, welche im Hintergrund Nachrichten empfängt. 34

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 35

Entwicklungsumgebungen Ursprünglich war Eclipse mit einem Plugin und dem Android SDK die StandardEntwicklungsumgebung Mitlerweile bietet Google eine angepasste Eclipse Version speziell für AndroidEntwickler mit SDK und Plugin an Google entwickelt an einer neuen IDE Android Studio basierend auf IntelliJ IDEA 36

Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung Übungsaufgaben 37

Übungsaufgaben Der Soundex-Converter Berechnet den Soundex-Wert eines Namens und gibt dem Anwender das Ergebnis aus. 38

Vielen Dank für Ihre Aufmerksamkeit 39 PatrickTreyerundJannisPinter