Android2012 - Prva lekcija

Embed Size (px)

Citation preview

  • 7/29/2019 Android2012 - Prva lekcija

    1/18

    10/23/2012

    1

    Programiranje Android aplikacija-prvo predavanje-

    Visoka kola elektrotehnike i raunarstva

    strukovnih studija Beograd, 2012

    Android

    Softverska platforma i operativni sistem za mobilneureaje

    Baziran na Linux kernelu

    Razvijen od strane Google-a a kasnije od OpenHandset Aliance (OHA)

    OHA organizacija iji je glavni cilj razvoj otvorenihstandarda za mobilne ureaje

    Mogunost pisanja aplikacija u upravljivom kodu(managed code), tanije u programskom jeziku Java

  • 7/29/2019 Android2012 - Prva lekcija

    2/18

    10/23/2012

    2

    irenje Android sistema

    http://metrics.admob.com/wp-content/uploads/2010/06/May-2010-AdMob-Mobile-Metrics-Highlights.pdf

    irenje Android sistema 2012

  • 7/29/2019 Android2012 - Prva lekcija

    3/18

    10/23/2012

    3

    Android platforma

    Kompletna end-to-end softverska platforma prilagodljiva

    velikom broju hardverskih konfiguracija Sadri sve: od bootloader-a pa sve do korisnikih

    aplikacija

    Operativni sistem Linux koji upravlja hardverskim resursima, procesima,

    memorijom i umreavanjem

    Sledei sloj su Android native biblioteke napisane uC/C++, a koje se pozivaju kroz Java interfejse. Ovdespadaju Surface Manager, 2D i 3D grafika, Mediacodecs, SQL baza (SQLite), i native web browserengine (WebKit).

    Sigurnost

    Prati standardne Linux smernice: Svaka aplikacija je pokrenuta u posebnom procesu (u

    okviru kojeg je podrana vienitnost)

    Dozvole koje ima proces se definiu za korisnika ili grupu(User ID ili Group ID)

    Detaljnije dozvole se definiu prema operacijama Korienje interneta, pozivi, slanje SMS-a, uvid u imenik,

    korienje GPS-a ...

    O ovom XML-u bie rei kasnije...

  • 7/29/2019 Android2012 - Prva lekcija

    4/18

    10/23/2012

    4

    Android platforma

    Kako se pokree Java ?

    Dalvik Virtual Machine

    Deo Android platforme

    Optimizovana za rad sa manjom memorijom idizajnirana da omogui pokretanje vie instanci u istovreme, oslanjajui se na operativni sistem koji

    omoguava izolaciju procesa, upravljanje memorijom ipodrku za niti.

    Dalvik nije isto to i JVM: njen bytecode nije isti kaoJava bytecode. Java klase kompajlirane regularnimJava kompajlerom se transformiu u drugi format: .dex

    Dex datoteke se komprimuju u jedinstvenu .apkdatoteku i smetaju u memoriju ureaja.

  • 7/29/2019 Android2012 - Prva lekcija

    5/18

    10/23/2012

    5

    Razvoj aplikacija

    Zahtevi Java

    SDK

    Razvojno okruenje (opciono) npr. Eclipse

    Programski jezici Java zvanino podrana

    C/C++ - takoe mogue ali nije podrano

    Razvojno okruenje (IDE) i SDKAndroid SDK

    Class Library Developer Tools

    dx Dalvik Cross-Assembler aapt Android Asset Packaging Tool adb Android Debug Bridge ddms Dalvik Debug Monitor Service

    Emulator i System Images

    Dokumentacija i primeri

    Eclipse IDE + ADT (Android Development Tools) Smanjuje vreme razvoja i testiranja Olakava kreiranje korisnikog interfejsa Olakava opisivanje aplikacija

  • 7/29/2019 Android2012 - Prva lekcija

    6/18

    10/23/2012

    6

    Gradivni blokovi aplikacije

    Sve aplikacije su napisane u jeziku Java i dostupne su

    jedna drugoj Svaka aplikacije moe da objavi svoje mogunosti

    koje druge aplikacije mogu da korsite

    Resource Manageromoguava pristupresursima kao to su lokalizovanistringovi, grafika, dizajn kor. Interfejsa...

    Notification Manageromoguavaaplikacijama da objave poruke ustatusnoj linij i

    Activity Managerupravljaivotnim ciklusom aplikacije iomoguava navigaciju izmeunjenih delova

    Views kao to su Button, Textbox, grid, liste pa ak i ugraeni

    web pretraiva

    Content Providers omoguavajuaplikacijama pristup podacima izdrugih ap., kao i da podele svojepodatke

    Gradivni blokovi aplikacije - nastavak

    Broadcast receivers mogu dapokrenu aplikaciju reagovanjena neki dogaaj

    Data storage podaci za aplikaciju: datoteke ulokalnom sistemu datoteka, baza (SQLite). Mogue jedeljenje tih podataka izmeu aplikacija

    Sve aplikacije imaju istu strukturu

  • 7/29/2019 Android2012 - Prva lekcija

    7/18

    10/23/2012

    7

    Activity - aktivnost

    Obino odgovara jednom UI ekranu

    Ali moe: Biti bez korisnikog interfejsa (faceless)

    Da bude u lebdeem prozoru (widget)

    Da vrati neku vrednost (pri vraanju na prethodnuaktivnost)

    Aktivnost moe da prikae neki UI i da mu dafunkcionalnost: dogaaji, izmena prikaza UI, poziv zapokretanje druge aktivnosti...

    ivotni ciklus aktivnosti

  • 7/29/2019 Android2012 - Prva lekcija

    8/18

    10/23/2012

    8

    ivotni ciklus aktivnosti

    Kao to se vidi na dijagramu aktivnost moe biti

    pauzirana, pa ak i prekinuta ukoliko je sistemupotrebna memorija.

    Svi podaci koji su u tom trenutku bili u memoriji mogubiti izgubljeni

    Postoji mehanizam da se oni sauvaju i ponovo vratena svoje mesto nakon ponovnog pokretanja aktivnosti

    IntentReceivers

    Komponente koje odgovaraju na broadcast Intents

    Ovo je nain na koji se odgovara na poruku ili alarm kojidolazi spolja (van aplikacije)

    Aplikacija moe da ima svoj Intent i da ga objavi

  • 7/29/2019 Android2012 - Prva lekcija

    9/18

    10/23/2012

    9

    Intents

    Intent namera da se neto uradi Npr: VIEW, CALL, PLAY ...

    Sistem uporeuje Intent sa aktivnou koja najboljeodgovara zahtevu

    Activities i IntentReceivers opisuju koje namere (Intents)mogu da opslue

    Intents - nastavak

    GMail

    Contacts

    Home

    Blogger

    Chat

    Pick photo

    Blogger

    PicasaPhoto

    Gallery

    Klijentska komponenta zahteva odreenuakciju

    Sistem bira najbolju komponentu za tu akciju

    Nove komponente mogu da koristepostojee funkcionalnosti

    Intents se izmeu ostalog koriste da bismo iz jedneaktivnosti pokrenuli drugu aktivnost unutar jedneaplikacije. Pored toga mogue je proslediti podatke drugojaktivnosti, koja na kraju moe da vrati neki drugi podatak.

  • 7/29/2019 Android2012 - Prva lekcija

    10/18

    10/23/2012

    10

    Servisi

    Komponente koje se izvravaju u pozadini Nemaju UI

    Aplikacije poput muzikog plejera, programa za skidanjesadraja sa interneta, itd.

    Android Emulator Dolazi sa instalacijom Android SDK

    SDK & AVD Manager

    Izvrava se isti image koji je na ureajima

    Izbor verzije OS-a (1.6, 2.1...)

    Izbor veliine ekrana, memorije

    Internet, pozivi i SMS izmeu dva emulatora

    Prima informacije od simulatora iz razvojnogokruenja (npr. GPS koordinate)

    Ogranienje nema kamere postojigenerisana slika, ali u novijim emulatorimapostoji mogunost povezivanja sa USB webkamerom

  • 7/29/2019 Android2012 - Prva lekcija

    11/18

    10/23/2012

    11

    Razvojno okruenje

    Pogodno za brz razvoj aplikacija, organizaciju

    programskog koda, debug, interakciju sa emulatorom ipravim ureajem

    Struktura Android projekta:

    code

    images

    files

    UI layouts

    constants

    Autogeneratedresource list

    Razvojno okruenje

    Debug je mogu kada se koristi emulator, ali i praviureaj!

    Ureaj treba postaviti u Debug mode Settings->Applications->Development->USB Debugging

    Pri pokretanju aplikacije iz okruenja izabrati iz liste

    prethodno prikljuen ureaj i tada e se aplikacijapokrenuti na njemu nakon ega je spremna zakorienje i prekidanje na breakpoint-ima

  • 7/29/2019 Android2012 - Prva lekcija

    12/18

    10/23/2012

    12

    AndroidManifest.xml

    AndroidManifest.xml - nastavak

    Ova datoteka opisuje aplikaciju Moraju se definisati sve aktivnosti koje e se eventualno

    pozvati u aplikaciji

    Moraju se definisati sve dozvole koje e se ponuditikorisniku za odobravanje

  • 7/29/2019 Android2012 - Prva lekcija

    13/18

    10/23/2012

    13

    Korisniki interfejs

    Definie se pomou XML-a

    Java programskog koda

    Eclipse okruenje prua mogunost vizuelnogdefinisanja kor. interfejsa, a rezultat je XML koji sesmeta u folder res/layout

    Postoji odreen broj vizuelnih komponenti koje supredefinisane, a mogue je kreirati i sopstvene, sloenekomponente koje su sastavljene od proizvoljnog brojapredefinisanih. Mogu se podeliti na

    komponente koje odreuju raspored na ekranu

    komponente koje slue za interakciju sa korisnikom

    Korisniki interfejs - nastavak

    Osnovna komponenta je View koja je predstavljenaJava klasom i iz koje se izvode sve komponente kojeine UI.

  • 7/29/2019 Android2012 - Prva lekcija

    14/18

    10/23/2012

    14

    Korisniki interfejs - View

    Korisniki interfejs raspored

    Odreuje se izborom odgovarajueg Layout-a AbsoluteLayout

    LinearLayout

    RelativeLayout

    FrameLayout

    TableLayout... Svaki od navedenih ima svoje specifinosti u pogledu

    rasporeivanja kontrola na ekranu

    U XML-u mora da postoji bar jedan root layout, uokviru koga se proizvoljno mogu ugnjedavati drugilayout-i ili postavljati kontrole

  • 7/29/2019 Android2012 - Prva lekcija

    15/18

    10/23/2012

    15

    Primer 1 UI

    Primer 2 - UI

  • 7/29/2019 Android2012 - Prva lekcija

    16/18

    10/23/2012

    16

    Primer 2 - UI

    U ovom primeru su korieni LinearLayout-i sa

    podeavanjima LayoutGravity i Gravity Zadatak 1:

    Napraviti jednostavan ekran za prijavu na sistem: Tekst: Dobrodoli na ...prijavite se

    Dve tekstualne oznake

    Dva polja za unos

    Dugme Prijava

    Zadatak 2: Ekran za ocenjivanje slike

    Opis tekstualna oznaka

    ImageView sa nekom slikom

    RatingBar

    Dugme za potvrdu

    Zadatak 3

    Isprobati u Properties prozoru svojstva koja se mogupodeavati i videti efekat na ekranu

    Visina i irina se mogu podeavati na nekoliko naina brojano

    pixels px

    scaled pixels sp za tekst

    density independent pixels dp za grafiku

    relativno fill_parent

    wrap_content

    Bie jo rei o dizajnu UI sada moemo da pokrenemoaplikaiju i da vidimo rezultat... ili moda ne jo?

  • 7/29/2019 Android2012 - Prva lekcija

    17/18

    10/23/2012

    17

    Prikaz UI Aktivnost koja se pokree kao poetna mora da zna koji e

    UI da prikae Kada se to deava?

    u onCreate metodi koja e biti override

    Na koji nain se ukazuje ba na odreeni XML?

    Pogledati datoteku gen/ime_paketa/R.Java R.Java je generisana klasa koja uva reference na sve resurse

    koji postoje u projektu.

    Prikaz UI - nastavak Pozivajui metodu klase Activity setContentViewi prosleujui joj

    identifikator naeg ekrana prikazujemo UI.

    Svaki View ima svoj ID koji ga jedinstveno identifikuje iomoguava pristup u kodu.

    Novi zadatak: U metodi OnCreate programski promeniti tekst nanekom dugmetu Kako pristupiti nekom dugmetu?

    Ne postoji referenca na dugme sama po sebi, treba je dobiti odaktivnosti na sledei nain:

  • 7/29/2019 Android2012 - Prva lekcija

    18/18

    10/23/2012

    Reagovanje na dogaaje

    Slino kao u Java desktop programiranju btn.SetOnClickListener(...neki Listener)

    Zadatak

    Napraviti jednostavan kalkulator koji ima displej, 2 poljaza tekst (operandi), 4 osnovne raunske operacije(dugmii) i dugme za izraunavanje i prikazivanjerezultata. Voditi rauna o

    funkcionalnosti

    izgledu UI