Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

10/23/2012

Programiranje Android aplikacija


-prvo predavanje-

Visoka kola elektrotehnike i raunarstva


strukovnih studija Beograd, 2012

Android
Softverska platforma i operativni sistem za mobilne
ureaje
Baziran na Linux kernelu
Razvijen od strane Google-a a kasnije od Open
Handset Aliance (OHA)
OHA organizacija iji je glavni cilj razvoj otvorenih
standarda za mobilne ureaje

Mogunost pisanja aplikacija u upravljivom kodu


(managed code), tanije u programskom jeziku Java

10/23/2012

irenje Android sistema

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

irenje Android sistema


2012

10/23/2012

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 u


C/C++, a koje se pozivaju kroz Java interfejse. Ovde
spadaju Surface Manager, 2D i 3D grafika, Media
codecs, SQL baza (SQLite), i native web browser
engine (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 ...
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.app.myapp" >
<uses-permission id="android.permission.RECEIVE_SMS" />
</manifest>
O ovom XML-u bie rei kasnije...

10/23/2012

Android platforma

Kako se pokree Java ?


Dalvik Virtual Machine
Deo Android platforme
Optimizovana za rad sa manjom memorijom i
dizajnirana da omogui pokretanje vie instanci u isto
vreme, oslanjajui se na operativni sistem koji
omoguava izolaciju procesa, upravljanje memorijom i
podrku za niti.
Dalvik nije isto to i JVM: njen bytecode nije isti kao
Java bytecode. Java klase kompajlirane regularnim
Java kompajlerom se transformiu u drugi format: .dex
Dex datoteke se komprimuju u jedinstvenu .apk
datoteku i smetaju u memoriju ureaja.

10/23/2012

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 SDK


Android 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

10/23/2012

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
Activity Manager upravlja
ivotnim ciklusom aplikacije i
omoguava navigaciju izmeu
njenih delova
Views kao to su Button, Text
box, grid, liste pa ak i ugraeni
web pretraiva

Notification Manager omoguava


aplikacijama da objave poruke u
statusnoj liniji
Resource Manager omoguava pristup
resursima kao to su lokalizovani
stringovi, grafika, dizajn kor. Interfejsa...

Content Providers omoguavaju


aplikacijama pristup podacima iz
drugih ap., kao i da podele svoje
podatke

Gradivni blokovi aplikacije - nastavak


Broadcast receivers mogu da
pokrenu aplikaciju reagovanje
na neki dogaaj
Data storage podaci za aplikaciju: datoteke u
lokalnom sistemu datoteka, baza (SQLite). Mogue je
deljenje tih podataka izmeu aplikacija

Sve aplikacije imaju istu strukturu

10/23/2012

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 prethodnu
aktivnost)

Aktivnost moe da prikae neki UI i da mu da


funkcionalnost: dogaaji, izmena prikaza UI, poziv za
pokretanje druge aktivnosti...

ivotni ciklus aktivnosti

10/23/2012

ivotni ciklus aktivnosti


Kao to se vidi na dijagramu aktivnost moe biti
pauzirana, pa ak i prekinuta ukoliko je sistemu
potrebna memorija.
Svi podaci koji su u tom trenutku bili u memoriji mogu
biti izgubljeni
Postoji mehanizam da se oni sauvaju i ponovo vrate
na svoje mesto nakon ponovnog pokretanja aktivnosti

IntentReceivers
Komponente koje odgovaraju na broadcast Intents
Ovo je nain na koji se odgovara na poruku ili alarm koji
dolazi spolja (van aplikacije)
Aplikacija moe da ima svoj Intent i da ga objavi

10/23/2012

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

Sistem uporeuje Intent sa aktivnou koja najbolje


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

Intents - nastavak
Home

Picasa
Photo
Gallery

Contacts

GMail

Klijentska komponenta zahteva odreenu


akciju
Pick photo
Sistem bira najbolju komponentu za tu akciju

Chat

Nove komponente mogu da koriste


postojee funkcionalnosti

Blogger
Blogger

Intents se izmeu ostalog koriste da bismo iz jedne


aktivnosti pokrenuli drugu aktivnost unutar jedne
aplikacije. Pored toga mogue je proslediti podatke drugoj
aktivnosti, koja na kraju moe da vrati neki drugi podatak.

10/23/2012

Servisi
Komponente koje se izvravaju u pozadini
Nemaju UI
Aplikacije poput muzikog plejera, programa za skidanje
sadraja 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 razvojnog
okruenja (npr. GPS koordinate)
Ogranienje nema kamere postoji
generisana slika, ali u novijim emulatorima
postoji mogunost povezivanja sa USB web
kamerom

10

10/23/2012

Razvojno okruenje
Pogodno za brz razvoj aplikacija, organizaciju
programskog koda, debug, interakciju sa emulatorom i
pravim ureajem
Struktura Android projekta:
code
Autogenerated
resource list

files
images

UI layouts
constants

Razvojno okruenje
Debug je mogu kada se koristi emulator, ali i pravi
ureaj!
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 aplikacija
pokrenuti na njemu nakon ega je spremna za
korienje i prekidanje na breakpoint-ima

11

10/23/2012

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/re
s/android"
package="com.my_domain.app.helloactivity">
<application android:label="@string/app_name">
<activity android:name=".HelloActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/
>
</intent-filter>
</activity>
</application>

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 ponuditi
korisniku za odobravanje

12

10/23/2012

Korisniki interfejs
Definie se pomou
XML-a
Java programskog koda

Eclipse okruenje prua mogunost vizuelnog


definisanja kor. interfejsa, a rezultat je XML koji se
smeta u folder res/layout
Postoji odreen broj vizuelnih komponenti koje su
predefinisane, a mogue je kreirati i sopstvene, sloene
komponente koje su sastavljene od proizvoljnog broja
predefinisanih.
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 predstavljena
Java klasom i iz koje se izvode sve komponente koje
ine UI.

13

10/23/2012

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, u
okviru koga se proizvoljno mogu ugnjedavati drugi
layout-i ili postavljati kontrole

14

10/23/2012

Primer 1 UI

Primer 2 - UI

15

10/23/2012

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 mogu
podeavati 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 pokrenemo


aplikaiju i da vidimo rezultat... ili moda ne jo?

16

10/23/2012

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 setContentView i prosleujui joj
identifikator naeg ekrana prikazujemo UI.
Svaki View ima svoj ID koji ga jedinstveno identifikuje i
omoguava pristup u kodu.
Novi zadatak: U metodi OnCreate programski promeniti tekst na
nekom dugmetu
Kako pristupiti nekom dugmetu?
Ne postoji referenca na dugme sama po sebi, treba je dobiti od
aktivnosti na sledei nain:

17

10/23/2012

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

Zadatak
Napraviti jednostavan kalkulator koji ima displej, 2 polja
za tekst (operandi), 4 osnovne raunske operacije
(dugmii) i dugme za izraunavanje i prikazivanje
rezultata.
Voditi rauna o
funkcionalnosti
izgledu UI

18

You might also like