Docstoc

Einfhrung in Android Einfhrung Android

Document Sample
Einfhrung in Android Einfhrung Android Powered By Docstoc
					                             Einführung Android
                              Einführung in Android

                                 Sebastian Süß

                                  FH Gießen Friedberg


                                12. Oktober 2010




Mittwoch, 13. Oktober 2010
 Inhalt




                 • Historie / Prognosen / Trends
                 • Grundlagen
                 • Entwicklungsumgebung
                 • Standardbeispiel
                 • Erweitertes Beispiel
                 • Übung / Quellen


Sebastian Süß                                      2
Mittwoch, 13. Oktober 2010
 Grundlagen - Historie



           2005              • Google kauft Android Inc.

                             • Open Handset Alliance mit 35 (jetzt 78) Mitgliedern gegründet.
                              Unternehmen aus den Branchen: Software, Hardware, Netzbetreiber,
           2007               Marketing
                             • Early Look Android SDK
                             • T-Mobile G1 (HTC Dream) Start in USA und GB
           2008              • SDK 1.0 (API Level 1) veröffentlicht
                             • Android wird Open Source (Apache License V. 2.0)
                             • Versionen: 1.1 (AL 2), 1.5 „Cupcake“, 1.6 „Donut“, 2.0 (AL 5) „Eclair“
           2009
                             • Marktanteil: 3,9%
                             • 2.1 „Eclair“, 2.2 (AL 8) „Froyo“ Mai, 3.0 „Gingerbread“ Oktober?
           2010
                             • Marktanteil: ca. 17,7%




Sebastian Süß                                                                                           3
Mittwoch, 13. Oktober 2010
 Prognosen




                      OS     Unit Sales WW (M) 2014                                  2009 Difference
            Symbian                     264,4                       30,2 % 46,9 %            -16,7 %
            Android                     259,3                       29,6 % 3,9 %              25,7 %
            RIM OS                      102,6                       11,7 % 19,9 %             -8,2 %
              iOS                       130,4                       14,9 % 14,4 %              0,5 %
           Win Phone                     34,5                        3,9 % 8,7 %              -4,8 %
             Other                       84,5                        9,6 % 6,1 %               3,5 %
             Total                      875,7

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



Sebastian Süß                                                                                          4
Mittwoch, 13. Oktober 2010
 Trends




                                                                                iPhone 4




    http://blog.nielsen.com/nielsenwire/online_mobile/android-most-popular-operating-system-in-u-s-among-recent-smartphone-buyers
Sebastian Süß                                                                                                                       5
Mittwoch, 13. Oktober 2010
 Trends




                             www.indeed.com



Sebastian Süß                                 6
Mittwoch, 13. Oktober 2010
 Trends




                             www.fittkaumaass.de



Sebastian Süß                                     7
Mittwoch, 13. Oktober 2010
 Grundlagen




Sebastian Süß                8
Mittwoch, 13. Oktober 2010
 Grundlagen - Android Platform

                                                   Applications

                   Home              Contacts                         Browser                        ...

                                            Application Framework
                 Activity            Location                          Audio
                                                                                                     ...
                 Manager             Manager                          Manager

                               Libraries (C/C++)                                              Android Runtime
                                                                       Media
                  SQLite                 SSL                                                     Core Lib
                                                                    Framework


                 WebKit            OpenGL ES                               ...                   Dalvik VM


                                                   Linux Kernel
                  Display             Camera                          Power
                                                                                                     ...
                  Driver              Driver                        Management

                             http://developer.android.com/guide/basics/what-is-android.html
Sebastian Süß                                                                                                   9
Mittwoch, 13. Oktober 2010
 Grundlagen - Dalvik Virtual Machine



                             Dan Bornstein (Google Inc.)




          • VM speziell für mobile Geräte (knappe Ressourcen)
          • Benannt nach isländischer Stadt
          • Basis bildet Projekt „Apache Harmony“
          • Dalvik VM ist keine Java VM!
          • Verarbeitet Dalvik-Bytecode (kompakter als Java-
                  Bytecode)
          • Seit Android 2.2 mit Just-in-time-Kompilierung (JIT)

Sebastian Süß                                                      10
Mittwoch, 13. Oktober 2010
 Grundlagen - Android package



                             .java                   .class
                             .java   javac           .class                 dx
                             .java                   .class

                             .xml
                             .xml            aapt                   classes.dex
                             .png
                                      .xml      classes.dex
                                      .xml
                                      .png
                                                         .apk   signieren




Sebastian Süß                                                                     11
Mittwoch, 13. Oktober 2010
 Grundlagen - Anwendung & Prozesse



              Jede Anwendung...
                 • wird in einem eigenen Linux-Prozess mit eigener
                         Dalvik VM ausgeführt
                 • besitzt eine eindeutige Benutzer/Gruppen ID
                         (app_<nummer>)
                 • besitzt einen eigenen Arbeitsbereich
                         („Sandkasten“) im Dateisystem (/data/data/
                         <app_package>)
                 • bekommt nur die Berechtigungen, die vom
                         Entwickler nach außen bekannt gemacht werden
                         (<uses-permission>)


                                 http://developer.android.com/guide/topics/fundamentals.html
Sebastian Süß                                                                                  12
Mittwoch, 13. Oktober 2010
 Grundlagen - Anwendung & Prozesse

                             /data/data/




                             http://developer.android.com/guide/topics/fundamentals.html
Sebastian Süß                                                                              13
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung




Sebastian Süß                14
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android SDK



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


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




                                            Installierte Android Plattformen: z.B. API level 7 = Android 2.1 „Eclair“




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

                                            Android Package and Device Manager




                                 .
                                 .
                                 .




Sebastian Süß                                                                                                           15
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android AVD Manager




Sebastian Süß                                 16
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android AVD Manager




Sebastian Süß                                 17
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android AVD Manager




Sebastian Süß                                 18
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android Emulator




Sebastian Süß                              19
Mittwoch, 13. Oktober 2010
 Entwicklungsumgebung - Android Developer Tools (ADT) Eclipse




                             Installation über: https://dl-ssl.google.com/android/eclipse/
Sebastian Süß                                                                                20
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Projekt erstellen




     ID der Anwendung




Sebastian Süß                           21
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Projektstruktur




                             Activity-Klasse: Erster Einstiegspunkt in die Anwendung.


                             Ressourcen-Klasse: Enthält Referenzen auf Ressourcen. Wird automatisch erstellt / aktualisiert.


                             Ressourcen-Ordner: Enthält verschiedene Ressourcen (z.B. Icons für verschiedene Auflösungen)




                             Manifest-Datei: Enthält Konfigurationen für eine Anwendung.




Sebastian Süß                                                                                                                  22
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Activity

          import android.app.Activity;
          import android.os.Bundle;

          public class MyFirstAppActivity extends Activity {
          	 /** Called when the activity is first created. */
          	 @Override
          	 public void onCreate(Bundle savedInstanceState) {
          	 	 super.onCreate(savedInstanceState);
          	 	 setContentView(R.layout.main);
          	 }
          }


          •       Behandelt eine bestimmte Benutzer-Aufgabe
                  (z.B. Editieren oder Auswählen von Daten)
          •       Anwendungen besitzen i.d.R. mehrere Activities
          •       Eigene Activities erweitern android.app.Activity
          •       Setzen GUI-Layout mit
                  setContentView(int resource constant)
Sebastian Süß                                                        23
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Layout


                                                                        ViewGroup



                                R.layout.main
                                                         ViewGroup        View      View




                                                      View       View



                                res/layout/main.xml




          •       ViewGroups (z.B. Linear- oder Grid-Layout)
          •       Views (z.B. Text, Button oder Spinner)
          •       Definition auch im Code möglich, aber nicht empfohlen

Sebastian Süß                                                                              24
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Layout

          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/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>


                                                                   System-Statusleiste
                                                                   Activity-Titelleiste
                                                                   TextView
                             LinearLayout




Sebastian Süß                                                                             25
Mittwoch, 13. Oktober 2010
 Standardbeispiel - Text-Ressource




                               R.string.hello, in XML: @string/hello




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




          •       Texte werden einem Schlüssel zugeordnet (z.B. „hello“)
          •       Zugriff mit: @string/<Schlüssel>
          •       Erleichtert die Lokalisierung der Anwendung
Sebastian Süß                                                                                          26
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel


          •       Anwendung: „Notensammler“
          •       Ansicht zum Eintragen einer Leistung
          •       Listenansicht der eingetragenen Leistungen

                             Activity: NoteListe               Activity: NoteErfassen




                                                   anlegen




                                                   speichern




Sebastian Süß                                                                           27
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Layout NoteErfassen




                                   LinearLayout (vertical)
TextView
    .
    .                              AutoCompleteTextView
    .


                                   RadioGroup



                                   Spinner


                                   EditText (number)


                                   EditText (decimal)

                                   Button




Sebastian Süß                                                28
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Layout NoteErfassen

          <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>



          •       Neue Ressource hinzufügen mit: @+id/<id>
          •       Schwellwert Vorschläge:
                  completionThreshold="<Anzahl Zeichen>"
Sebastian Süß                                                                                  29
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Layout NoteErfassen

         <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="numberDecimal" .../>

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

Sebastian Süß                                                                           30
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Ressourcen erweitern




                             R.array.modules, in XML: @array/modules




                             <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>



Sebastian Süß                                                                            31
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Ressourcen erweitern




                             <resources>
                             	 <string name="app_name">Notensammler</string>
                             	 <string name="info_insert_mark">In dieser Ansicht ...</string>
                             	 <string name="module">Modul:</string>
                             	 <string name="wt">Wintersemester</string>
                             	 <string name="st">Sommersemester</string>
                             	 <string name="year">Jahr</string>
                             	 <string name="crp">Creditpoints:</string>
                             	 <string name="mark_percent">Note in %:</string>
                             	 <string name="save">Speichern</string>
                             </resources>




Sebastian Süß                                                                              32
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Android R class
                             /* AUTO-GENERATED FILE. DO NOT MODIFY.
                              *
                              * ...
                              */
                             package de.suess.firstapp;

                             public final class R {

                                 public static final class array {
                                     public static final int modules=0x7f040000;
                                 }

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

                                 public static final class id {
                                     public static final int autotxt_modul=0x7f060000;
                                     public static final int btn_save=0x7f060006;
                                    ...
                                 }

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

                                 public static final class string {
                                      public static final int app_name=0x7f050000;
                                      public static final int crp=0x7f050006;
                                      public static final int info_insert_mark=0x7f050001;
                                     ...
                                 }
                                 ...
                             }

Sebastian Süß                                                                                33
Mittwoch, 13. Oktober 2010
 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);
          ...
Sebastian Süß                                                                              34
Mittwoch, 13. Oktober 2010
 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“


Sebastian Süß                                                  35
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Activity NoteListe erstellen




                                            ListView
                                            ListItem (android.R.layout.simple_list_item_1)
                                                                   .
                                                                   .
                                                                   .




Sebastian Süß                                                                          36
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Activity NoteListe erstellen


          public class NoteListe extends ListActivity {
          ...
              @Override
              protected void onStart() {
          	      super.onStart();

          	              String[] noten = getNoten();

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

          	              setListAdapter(adapter);
          }




          •       ListActivity enthält Standard-Layout (ListView)
          •       Adapter verbindet Daten mit Darstellung
          •       ListItem-Layout:         simple_list_item_1


Sebastian Süß                                                                            37
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - Activity NoteListe erstellen




                             <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                             	   package="de.suess.firstapp" android:versionCode="1"
                             	   android:versionName="1.0">

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

                             	   	   <activity android:name=".NoteListe" ... >
                             	   	   	   ...
                             	   	   </activity>

                             	   	   <activity android:name=".NoteErfassen" ... />

                             	   </application>

                             </manifest>




Sebastian Süß                                                                                              38
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - NoteListe Optionsmenü




Sebastian Süß                                   39
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - NoteListe Optionsmenü




                             <menu xmlns:android="http://schemas.android.com/apk/res/android">

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

                             </menu>




Sebastian Süß                                                                                        40
Mittwoch, 13. Oktober 2010
 Erweitertes Beispiel - NoteListe Optionsmenü

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

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

          	              return true;
                  }
                  @Override
                  public boolean onOptionsItemSelected(MenuItem item) {
          	          switch (item.getItemId()) {
          	             case R.id.item_add_mark:
          	                Intent intent = new Intent(this, NoteErfassen.class);
          	                startActivity(intent);
          	                break;
          	          }

          	              return super.onOptionsItemSelected(item);
                  }
          ...


Sebastian Süß                                                                        41
Mittwoch, 13. Oktober 2010
 Übung 1




          • Arbeitsumgebung einrichten
          • Notensammler implementieren
          • Notensammler erweitern:
                    • Neuer Menüeintrag „Stats“ in NoteListe
                    • „Stats“ öffnet Dialog und zeigt die Anzahl
                             eingetragener Noten und die gewichtete
                             Durchschnittsnote




Sebastian Süß                                                         42
Mittwoch, 13. Oktober 2010
 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




Sebastian Süß                                                        43
Mittwoch, 13. Oktober 2010

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:79
posted:3/21/2011
language:German
pages:43