Android
Sistem, platformă, tipuri de
aplicații

Drd. Ing. Alexandru RADOVICI
Bibliografie

1. Mark MURPHY, Beginning Android 2, Apress,
   2010
2. Satya KOMATINENI, Sayed HASHIMI, Pro
   Android 2, Apress 2010
3. Android Application Fundamentals,
   http://developer.android.com/guide/topics/f
   undamentals.html
4. Google IO, http://code.google.com/intl/ro-
   RO/events/io/2010/
                                                 2
Google Android




                 3
Platforma Android

 • Android
    – Sistem de operare
    – Platforma
 • Tipuri de aplicații
    –   Activități
    –   Servicii
    –   Baze de conținut
    –   Intenții
    –   Receptori


                           4
NU doar un sistem de operare

 • Radio Firmware
    – Sistemul de telefonie
       • GSM/CDMA / UMTS
 • Linux
    – Kernel 2.6.36
       • Android Cupcake (2.1)
    – Optimizat pentru ARM
 • Biblioteci User Space
    – Bionic
    – SQLite
    – WebKit
 • Platformă pentru aplicații

                                 5
Schema Android




                 6
Kernel
 • Sistemul de operare
 • Nu se vede
 • Mașina extinsă
    – Abstractizare a hardware-ului
 • Conține driver-ele
 • Gestionarea
    – Proceselor
    – Perifericelor
        •   Audio
        •   Video
        •   GPS
        •   WiFi
    – Intrare/Ieșire
    – Stiva de rețea
                                      7
Kernel - Optimizări

 • Gestionare de memorie
    – Fară swap
    – Sistem de inchidere de
      aplicații la nevoie
 • Gestionarea consumului
    – WAIT_LOCK
 • IPC specific
    – Binder
       • AIDL
       • Apeluri sincron între procese


                                         8
Gestiunea consumului de putere




                                 9
Biblioteci User Space

 • Biblioteci pentru
   programare
    – Fac legărura între kernel
      și program
    – Afișare pe ecran
       • printf (…)
       • scanf (…)
    – Acces la rețea
       • socket (…)
 • Bionic
    – Libc pentru Android

                                  10
Biblioteci User Space

 •   SQlite
 •   WebKit
 •   Surfaces
 •   FreeType
 •   Media Framework
 •   OpenGL|ES
 •   SSL
 •   …

                        11
Dalvik - Android Runtime

 • Mașină virtuala (Java)
    – Java 1.5 SE
       • Aproximativ
       • Lipsesc
           – AWT / Swing
           – Imprimare
           – Alte componente speciale
    – Optimizată pentru mobile
       • Spațiu mic de memorie
       • Colectare de gunaoie rapidă
    – Format de fișiere diferit
       • .class -> .dex
 • Compilator JIT
                                        12
Bibliotecile Android

 • Pentru Dalvik
    – Nu sunt biblioteciile user
      space!
 • Scrise în Java
 • Access la funcțiile
   telefonului
    – Telefonie
    – Mesaje
    – Senzori
 • Servicii
    – Manager de ferestre
    – Manager Audio


                                   13
Schema Android




                 14
Facilități

 • API pentru dezvoltarea de   • Sezori
   aplicații                       –   Aparat foto
     – Dalvik                      –   GPS / AGPS
 • Browser integrat                –   Magnetometru
 • Grafică                         –   Accelerometru
     – 2D optimizată           • Platformă de dezvoltare
     – 3D – OpenGL ES 1.0          – Linie de comandă
 • SQLite                          – Eclipse
     – Baza de date
 • Support Multimedia
     – Audio / Video
 • GSM
 • Conectivitate
     – Bluetooth
     – WiFi
     – GPRS / EDGE / 3G

                                                           15
Posibilități de programare
 • Dalvik (Aplicație)
     – În Java
     – Viteză medie
     – Acces la multe biblioteci
 • AJAX
     – În Browser (WebKit)
     – Lent
     – Programare JavaScript
 • Native Development Kit (NDK)
     –   C/C++
     –   Număr limitat de biblioteci
     –   Rapid
     –   Suport JNI
     –   Nerecomandat
          • Beta
 • C/C++ (direct pe sistem)
                                       16
Securitatea Aplicațiilor
 • Implmentată in kernel
    – Politica din Linux
        • Sistem de fișiere ext3
        • Utilizatorii pot scrie doar în
          directorul lor
    – Fiecare aplicație rulează sub alt
      utilizator
        • Determinat de semnătura digitală!
    • Grupuri de permisiuni
        • Verificare subsitemul de rețea
    – Poate scrie în
        • /data/nume.pachet.aplicație/
        • /SDCard/
    – Funcționează pentru orice tip de
      apliucație
        • Dalvik / AJAX / NDK / C/C++

                                              17
Securitatea Aplicațiilor
 • Implmentată in bibliotecile Android
    – Drepturi (Permission)
        • Declarate de aplicație în Manifest
        • Access la funcțiile telefonului
            –   Rețea
            –   Telefon / mesaje
            –   Aparat foto
            –   GPS
        • Access la componentele altei aplicații
            – Drepturi impuse de aplicația respectivă
    – Utilizatorul va fi avertizat la instalare
    – Funcționează doar pentru aplicațiile
      Dalvik
                                                        18
Programe (Dalvik)

 • Nu exista main()
 • Formate din componente
   –   Activiăți
   –   Servicii
   –   Intenții
   –   Baze de conținut
   –   Receptori de evenimente
 • Componentele pot rula
   separat

                                 19
Aplicație (Dalvik)

 • Fișier APK
    – JAR nearhivat
       • Componente
           – Fișier .dex
       • Resurse
           – Imagini
           – Fișiere XML
       • Manifest
           – Fișier de informații
    – Semnătura digitala
       • Pentru dezvoltare
       • Pentru producție
           – Autentică
           – Autosemnată

                                    20
Componentele aplicației




                          21
Task (aplicație cu interfață grafică)
 • Rulează într-un process
    – în general!
    – există excepții
 • Stivă de activități
    – Activitate rădăcină
        • Root activity
    – Adăugarea
        • Afișare
        • push
    – Ștergerea
        • Ascundere
        • pop
    – Activiăți din altă aplicație
                                        22
Task (aplicație cu interfață grafică)
 • Rulează într-un process
    – în general!
    – există excepții
 • Stivă de activități
    – Activitate rădăcină
        • Root activity
    – Adăugarea
        • Afișare
        • push
    – Ștergerea
        • Ascundere
        • pop
    – Activiăți din altă aplicație
                                        23
Activitatea




              24
Funcții importante
 • Clasa Activity
    –   void onCreate (…);
    –   void onStart (…);
    –   void onRestart (…);
    –   void onResume (…);
    –   void onPause (…);
    –   void onStop (…);
    –   void onDestroy (…);
 • Trebuie apelate funcțiile
   și funcțiile din părinte
    – super.onCreate (…);
    –…                         25
Activitatea

 • Fereastră
 • Supraviețuiește
   procesului
    – Serializarea
    – Parțial controlată de
      programator
 • Nu este pentru
   procesare multă



                              26
Servicii

 • Componentă Android
 • Specială pentru
   procesare
 • Rulează în fundal
   (background)
 • Proces
    – Prioritate mai mică
    – Mai stabil (în timp)



                             27
Implementarea serviciilor

• Extinde clasa Service
   – Serviciu simplu
      • void onCreate ();
      • void onStart (Intent intent,
                      int startID);
      • void onDestroy ();
   – Folosind AIDL
      • void onBind (Intent intent);
      • void onUnbind();




                                       28
Implmentarea unui serviciu

 1. Extinderea clasei Service
   –   Implmentarea funcțiilor
   –   Crearea unor fire de execuție
 2. Declararea în manifest
 3. Pornirea / oprirea
   –   startService (…)
   –   stopService (…)




                                       29
Baze de conținut / Receptori

 • Baze de conținut          • Receptori
   – Oferire de informații     – Observatori
   – Legătură cu SQLite        – Sunt informați despre
   – Bazate pe URL-uri           evenimente publice
                                  • SCREEN_ON
                                  • SCREEN_OFF
                                  • BATTER_STATUS_CHANGED




                                                         30
Dezvoltare

• Android SDK
  – Compilator DEX
  – Simulator
  – Programe pentru depanare
• Eclipse
  – Plugin Android
• Telefon Android
  – Preferabil cu drept de root

                                  31
Simulator vs. Telefon Real

 • Simulator
    – Real
       • Bootează Linux
    – Diferite versiuni
       • 1.5
       • 1.6
       • 2.1
    – Se pornește separat!
 • Telefon real
    – USB Debugging
       • Applications/Developent


                                   32
Depanare - DDMS




                  33
Scheletul unei aplicații

 •   AndroidManifest.xml
 •   build.xml
 •   default.properties
 •   bin
     – fișierele compilate
 • res
     – drawable
     – layout
     – values
 • assets
     – resurse
 • src
     – fișierele sursă

                             34
Resurse Automate în cod Java

 • Drawable
   – Imagini
   – R.drawable.nume
      • R.drawable.icon
      • R.drawable.img1
      • R.drawable.img2
 • Layout
   – Containere
   – R.layout.nume
      • R.layout.main
      • R.layout.people

                               35
Resurse Automate în XML

 • Drawable
   – Imagini
   – @drawable/nume
      • @drawable/icon
      • @drawable/img1
      • @drawable/img2
 • Layout
   – Containere
   – @layout/nume
      • @layout/main
      • @layout/people

                          36
Construcția GUI cu XML
 •   Componentă complexă
 •   Cod simplu
 •   Fără cod Java
 •   În codul activității
     – this.setContentView (R.layout.nume);




                                              37
Exemplu de fișier GUI XML




                            38
Exemplu de fișier GUI XML

 • xmlns:android
    – Doar componenta rădăcină
    – necesar
 • android:layout_width
 • android:layout_height
    – necesare
    – Valori
       •   fill_parent
       •   wrap_content
       •   n px
       •   n cm

                                 39
Exemplu de fișier GUI XML

 • android:id
    – Utilizarea componentei
      în codul Java
    – @+id/nume
       • R.id.nume
    – Exemplu
       • @+id/button1
          – R.id.button1




                               40
Exemplu de fișier GUI XML

 XML                Cod Jave




                               41
Concluzii
• Paltforma Android
    – Sistem de operare Linux
    – Biblioteci de programare Android
• Modalități de programare
    – Dalvik – Java
    – AJAX – Web
    – NDK – C/C++
• Aplicațiile Dalvik sunt compuse din componente
    –   Activități
    –   Servicii
    –   Intenții
    –   Baze de conșinut
    –   Receptori de enimente
    –   Nu există main()
• Simulator real
• Task - Aplicațiile cu interfață grafică
    – Compuse din Activități
         • Supraviețuiesc procesului

                                                   42
Application Inventor




                       43
Întrebări




            44

Prezentare generala a platformei Android

  • 1.
    Android Sistem, platformă, tipuride aplicații Drd. Ing. Alexandru RADOVICI
  • 2.
    Bibliografie 1. Mark MURPHY,Beginning Android 2, Apress, 2010 2. Satya KOMATINENI, Sayed HASHIMI, Pro Android 2, Apress 2010 3. Android Application Fundamentals, http://developer.android.com/guide/topics/f undamentals.html 4. Google IO, http://code.google.com/intl/ro- RO/events/io/2010/ 2
  • 3.
  • 4.
    Platforma Android •Android – Sistem de operare – Platforma • Tipuri de aplicații – Activități – Servicii – Baze de conținut – Intenții – Receptori 4
  • 5.
    NU doar unsistem de operare • Radio Firmware – Sistemul de telefonie • GSM/CDMA / UMTS • Linux – Kernel 2.6.36 • Android Cupcake (2.1) – Optimizat pentru ARM • Biblioteci User Space – Bionic – SQLite – WebKit • Platformă pentru aplicații 5
  • 6.
  • 7.
    Kernel • Sistemulde operare • Nu se vede • Mașina extinsă – Abstractizare a hardware-ului • Conține driver-ele • Gestionarea – Proceselor – Perifericelor • Audio • Video • GPS • WiFi – Intrare/Ieșire – Stiva de rețea 7
  • 8.
    Kernel - Optimizări • Gestionare de memorie – Fară swap – Sistem de inchidere de aplicații la nevoie • Gestionarea consumului – WAIT_LOCK • IPC specific – Binder • AIDL • Apeluri sincron între procese 8
  • 9.
  • 10.
    Biblioteci User Space • Biblioteci pentru programare – Fac legărura între kernel și program – Afișare pe ecran • printf (…) • scanf (…) – Acces la rețea • socket (…) • Bionic – Libc pentru Android 10
  • 11.
    Biblioteci User Space • SQlite • WebKit • Surfaces • FreeType • Media Framework • OpenGL|ES • SSL • … 11
  • 12.
    Dalvik - AndroidRuntime • Mașină virtuala (Java) – Java 1.5 SE • Aproximativ • Lipsesc – AWT / Swing – Imprimare – Alte componente speciale – Optimizată pentru mobile • Spațiu mic de memorie • Colectare de gunaoie rapidă – Format de fișiere diferit • .class -> .dex • Compilator JIT 12
  • 13.
    Bibliotecile Android •Pentru Dalvik – Nu sunt biblioteciile user space! • Scrise în Java • Access la funcțiile telefonului – Telefonie – Mesaje – Senzori • Servicii – Manager de ferestre – Manager Audio 13
  • 14.
  • 15.
    Facilități • APIpentru dezvoltarea de • Sezori aplicații – Aparat foto – Dalvik – GPS / AGPS • Browser integrat – Magnetometru • Grafică – Accelerometru – 2D optimizată • Platformă de dezvoltare – 3D – OpenGL ES 1.0 – Linie de comandă • SQLite – Eclipse – Baza de date • Support Multimedia – Audio / Video • GSM • Conectivitate – Bluetooth – WiFi – GPRS / EDGE / 3G 15
  • 16.
    Posibilități de programare • Dalvik (Aplicație) – În Java – Viteză medie – Acces la multe biblioteci • AJAX – În Browser (WebKit) – Lent – Programare JavaScript • Native Development Kit (NDK) – C/C++ – Număr limitat de biblioteci – Rapid – Suport JNI – Nerecomandat • Beta • C/C++ (direct pe sistem) 16
  • 17.
    Securitatea Aplicațiilor •Implmentată in kernel – Politica din Linux • Sistem de fișiere ext3 • Utilizatorii pot scrie doar în directorul lor – Fiecare aplicație rulează sub alt utilizator • Determinat de semnătura digitală! • Grupuri de permisiuni • Verificare subsitemul de rețea – Poate scrie în • /data/nume.pachet.aplicație/ • /SDCard/ – Funcționează pentru orice tip de apliucație • Dalvik / AJAX / NDK / C/C++ 17
  • 18.
    Securitatea Aplicațiilor •Implmentată in bibliotecile Android – Drepturi (Permission) • Declarate de aplicație în Manifest • Access la funcțiile telefonului – Rețea – Telefon / mesaje – Aparat foto – GPS • Access la componentele altei aplicații – Drepturi impuse de aplicația respectivă – Utilizatorul va fi avertizat la instalare – Funcționează doar pentru aplicațiile Dalvik 18
  • 19.
    Programe (Dalvik) •Nu exista main() • Formate din componente – Activiăți – Servicii – Intenții – Baze de conținut – Receptori de evenimente • Componentele pot rula separat 19
  • 20.
    Aplicație (Dalvik) •Fișier APK – JAR nearhivat • Componente – Fișier .dex • Resurse – Imagini – Fișiere XML • Manifest – Fișier de informații – Semnătura digitala • Pentru dezvoltare • Pentru producție – Autentică – Autosemnată 20
  • 21.
  • 22.
    Task (aplicație cuinterfață grafică) • Rulează într-un process – în general! – există excepții • Stivă de activități – Activitate rădăcină • Root activity – Adăugarea • Afișare • push – Ștergerea • Ascundere • pop – Activiăți din altă aplicație 22
  • 23.
    Task (aplicație cuinterfață grafică) • Rulează într-un process – în general! – există excepții • Stivă de activități – Activitate rădăcină • Root activity – Adăugarea • Afișare • push – Ștergerea • Ascundere • pop – Activiăți din altă aplicație 23
  • 24.
  • 25.
    Funcții importante •Clasa Activity – void onCreate (…); – void onStart (…); – void onRestart (…); – void onResume (…); – void onPause (…); – void onStop (…); – void onDestroy (…); • Trebuie apelate funcțiile și funcțiile din părinte – super.onCreate (…); –… 25
  • 26.
    Activitatea • Fereastră • Supraviețuiește procesului – Serializarea – Parțial controlată de programator • Nu este pentru procesare multă 26
  • 27.
    Servicii • ComponentăAndroid • Specială pentru procesare • Rulează în fundal (background) • Proces – Prioritate mai mică – Mai stabil (în timp) 27
  • 28.
    Implementarea serviciilor • Extindeclasa Service – Serviciu simplu • void onCreate (); • void onStart (Intent intent, int startID); • void onDestroy (); – Folosind AIDL • void onBind (Intent intent); • void onUnbind(); 28
  • 29.
    Implmentarea unui serviciu 1. Extinderea clasei Service – Implmentarea funcțiilor – Crearea unor fire de execuție 2. Declararea în manifest 3. Pornirea / oprirea – startService (…) – stopService (…) 29
  • 30.
    Baze de conținut/ Receptori • Baze de conținut • Receptori – Oferire de informații – Observatori – Legătură cu SQLite – Sunt informați despre – Bazate pe URL-uri evenimente publice • SCREEN_ON • SCREEN_OFF • BATTER_STATUS_CHANGED 30
  • 31.
    Dezvoltare • Android SDK – Compilator DEX – Simulator – Programe pentru depanare • Eclipse – Plugin Android • Telefon Android – Preferabil cu drept de root 31
  • 32.
    Simulator vs. TelefonReal • Simulator – Real • Bootează Linux – Diferite versiuni • 1.5 • 1.6 • 2.1 – Se pornește separat! • Telefon real – USB Debugging • Applications/Developent 32
  • 33.
  • 34.
    Scheletul unei aplicații • AndroidManifest.xml • build.xml • default.properties • bin – fișierele compilate • res – drawable – layout – values • assets – resurse • src – fișierele sursă 34
  • 35.
    Resurse Automate încod Java • Drawable – Imagini – R.drawable.nume • R.drawable.icon • R.drawable.img1 • R.drawable.img2 • Layout – Containere – R.layout.nume • R.layout.main • R.layout.people 35
  • 36.
    Resurse Automate înXML • Drawable – Imagini – @drawable/nume • @drawable/icon • @drawable/img1 • @drawable/img2 • Layout – Containere – @layout/nume • @layout/main • @layout/people 36
  • 37.
    Construcția GUI cuXML • Componentă complexă • Cod simplu • Fără cod Java • În codul activității – this.setContentView (R.layout.nume); 37
  • 38.
  • 39.
    Exemplu de fișierGUI XML • xmlns:android – Doar componenta rădăcină – necesar • android:layout_width • android:layout_height – necesare – Valori • fill_parent • wrap_content • n px • n cm 39
  • 40.
    Exemplu de fișierGUI XML • android:id – Utilizarea componentei în codul Java – @+id/nume • R.id.nume – Exemplu • @+id/button1 – R.id.button1 40
  • 41.
    Exemplu de fișierGUI XML XML Cod Jave 41
  • 42.
    Concluzii • Paltforma Android – Sistem de operare Linux – Biblioteci de programare Android • Modalități de programare – Dalvik – Java – AJAX – Web – NDK – C/C++ • Aplicațiile Dalvik sunt compuse din componente – Activități – Servicii – Intenții – Baze de conșinut – Receptori de enimente – Nu există main() • Simulator real • Task - Aplicațiile cu interfață grafică – Compuse din Activități • Supraviețuiesc procesului 42
  • 43.
  • 44.