You are on page 1of 44

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/roRO/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.36 • Android Cupcake (2.1) – Optimizat pentru ARM • Biblioteci User Space – Bionic – SQLite – WebKit • Platformă pentru aplicații 5 .6.

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 .

Android Runtime • Mașină virtuala (Java) – Java 1.Dalvik .dex • Compilator JIT 12 .class -> .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 • .

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 .

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

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 .

pachet.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.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 onRestart (…). –… 25 . void onResume (…).onCreate (…). void onDestroy (…). void onStop (…). void onStart (…). void onPause (…). • Trebuie apelate funcțiile și funcțiile din părinte – super.

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 .

28 . • void onStart (Intent intent. – Folosind AIDL • void onBind (Intent intent).Implementarea serviciilor • Extinde clasa Service – Serviciu simplu • void onCreate (). int startID). • void onDestroy (). • void onUnbind().

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

Baze de conținut / Receptori • Baze de conținut – Oferire de informații – Legătură cu SQLite – Bazate pe URL-uri • Receptori – Observatori – Sunt informați despre 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 .

5 • 1.Simulator vs. Telefon Real • Simulator – Real • Bootează Linux – Diferite versiuni • 1.1 – Se pornește separat! • Telefon real – USB Debugging • Applications/Developent 32 .6 • 2.

DDMS 33 .Depanare .

properties bin – fișierele compilate • res – drawable – layout – values • assets – resurse • src – fișierele sursă 34 .xml build.xml default.Scheletul unei aplicații • • • • AndroidManifest.

Resurse Automate în cod Java • Drawable – Imagini – R.nume • R.nume • R.img2 • Layout – Containere – R.drawable.icon • R.img1 • R.layout.layout.people 35 .main • R.drawable.drawable.drawable.layout.

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. 37 .nume).layout.

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 .

id.button1 40 .nume – Exemplu • @+id/button1 – R.id.Exemplu de fișier GUI XML • android:id – Utilizarea componentei în codul Java – @+id/nume • R.

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 .