Professional Documents
Culture Documents
Stapic2 PDF
Stapic2 PDF
SAETAK:
Dananji trendovi u razvoju mobilnih aplikacija odraz su velike dinamike na tritu mobilnih ureaja. Ovaj rad se temelji na
predstavljanju osnovnih koncepata i naina razmiljanja kod razvoja aplikacija za Android mobilnu platformu. Nastoji se
ukazati na jednostavnost koritenja platforme kao i na standardni stil i pristup pisanja kvalitetnog programskog kda. U
radu su prikazane dobre prakse koritenja osnovnih i naprednijih koncepata u razvoju, ukljuujui i rad sa razvojnim
okruenjem kao i specifinosti Java jezika. U konanici, temeljem iskustva autora, rad prikazuje i najee probleme s
kojima se susreu razvojni inenjeri te naine njihovog rjeavanja.
ABSTRACT:
Current trends in mobile applications software development are results of significant dynamics in mobile device market.
This paper aims to introduce the basic concepts and ways of thinking regarding application development for the Android
mobile platform. This work tries to point out a simple use of the platform as well as a standard style and an approach in
defining a good programming code. Good practices are shown regarding the use of basic and advanced development
concepts in Java language. Paper also states a few guidelines regarding the usage of integrated development
environment. At the end, based on the authors experiences, few and common issues and problems for developers are
identified and their solution is presented.
Obavijest u statusnoj traci (engl. status bar notification) 4.2 Dijeljena svojstva
oznaava trajniji tip notifikacije korisnika. Prikazuje se,
kako ime govori, u statusnoj traci, te pri selekciji okida Kako iz imena zakljuujemo radi se o zajednikim
intent definiran u obavijesti [9]. postavkama aplikacije (engl. shared preference).
Mogua je promjena primitivnih tipova podataka u obliku
final CharSequence[] items = klju => vrijednost. Takoer Activity ima indirektnu pod-
{getString(R.string.add), klasu PreferenceActivity koja nam omoguava pregled
postavki, sa preddefiniranom funkcionalnou,
getString(R.string.connect)}; spremljenom unutar odreene XML datoteke ili unutar
final AlertDialog.Builder options = klase koja koristi PreferenceActivity. Spomenuta klasa
automatski omoguava izmjene nad prije navedenim
new AlertDialog.Builder(this);
primitivnim podacima [5].
options.setTitle(getString(R.string.quick_act
ions)); final EditText name = (EditText)
options.setCancelable(true); findViewById(
R.id.text_name);
options.setItems(items, new SharedPreferences prefs =
DialogInterface.OnClickListener() PreferenceManager.getDefaultSharedPreferences
{ (
public void onClick(DialogInterface this);
dialog, int item) name.setText(prefs.getString("name",
{ //kod koji se izvrava prilikom "vrijednost"));
poziva }
});
Kd 10 Koritenje koncepta dijeljenih svojstava
options.show(); //aktiviranje dijaloga
Kd 8 Definiranje dijaloga 4.3 Unutarnja memorija
Obavijest na dijalokom okviru (engl. dialog notification) Unutarnja memorija omoguava spremanje podataka
je definirana kao novi mali dijaloki okvir koji se prikazuje aplikacija u internu memoriju ureaja. Uz razne dodatne
na vrh trenutnog dijalokog okvira, te moe pruati API-je omogueno nam je manipuliranje nad raznim
interakciju korisniku. Mogue ga je koristiti i za unos tipovima datoteka. Valja napomenuti kako se ova vrsta
malih koliina podataka [9]. Dijalog se stvara i prikazuje pohrane podataka koristi za spremanje privatnih
na nain kako je to navedeno ovim programskim podataka koji ne bi trebali biti dostupni ostalim
isjekom: aplikacijama ili korisniku [5]. U sljedeem programskom
isjeku se moe vidjeti nain pohrane podataka u
4. NAPREDNI KONCEPTI datoteku u unutarnjoj memoriji Android ureaja.
String FILENAME = "file";
Tijekom koritenja naprednih koncepata u razvoju
String string = "test";
aplikacija za Android ureaje, esto se sluimo svim
FileOutputStream fos = openFileOutput(FILENAME,
navedenim osnovnim konceptima kako bi se zadovoljila
funkcionalnost odreene komponente i postigla eljena Context.MODE_PRIVATE);
nova funkcionalnost. Budui da SDK nudi mnotvo fos.write(string.getBytes());
razliitih koncepata, ovaj rad opisuje prema naem fos.close();
izboru najee i najkoritenije koncepte. Kd 11 Koritenje unutarnje memorije
Jedan od tih koncepata su prilagodnici (engl. adapters). Gotovo uvijek pri ovom pojmu mislimo na SD
Adapteri su koncepti koji omoguavaju izmjenu, to jest memorijske kartice. Temeljna razlika izmeu unutarnje i
prilagodbu odreene skupine podataka na neki od vanjske memorije je u dostupnosti podataka. Naime
predefiniranih naina. Primjer takve prilagodbe je Andorid, kako je prije navedeno, definira vie razina
SimpleAdapter. sigurnosti podataka, a podaci zapisani na ovaj nain
postaju dostupni svim aplikacijama pa ak i korisniku to
Ako primjerice koristimo listu za izbor jedne od
postaje sutina postojanja ovakve funkcionalnosti [5].
ponuenih vrijednosti, a stavke te liste su izvedene iz
skupa jednostavnijih atributa, iste moemo putem prije File path = getExternalStorageDirectory();
navedenog adaptera prilagoditi, te umetnuti u listu kao if (path != null) {
njene vrijednosti. Postoji mnotvo razliitih adaptera, File file = new File(path, "file");
ime se jo jednom pribliavamo shvaanju opsenosti OutputStream os = new
Android razvojnog okruenja kao i njegovih mogunosti. FileOutputStream(file);
os.write(new byte["test"]);}
ArrayList<Map<String, String>> server_lst
=list_values; Kd 12 Koritenje vanjske memorije
String[] from = {"name", "version"};
int[] to = {R.id.name, R.id.version}; 4.5 Mobilna baza podatka
SimpleAdapter adapter = new
SimpleAdapter(getApplicationContext(), list,
Jedan od dakako standardnih, ali i primamljivih
koncepata mobilnih ureaja je funkcionalnost koritenja
R.layout.list, from, to); mobilne baze podataka. Android okruenje rabi sqlite3
list.setAdapter(adapter); verziju baza podataka, te postoji mnotvo primjera kako
spomenutu bazu koristiti. Potrebno je naglasiti kako je
Kd 9 Koritenje adaptera pisanje pomone (engl. helper) klase, koja e umjesto
CASEmobile - MOBILNE RAZVOJNE TEHNOLOGIJE I RJEENJA 111
nas odraivati obradu upita, to na veim projektima klasi putem koje iste obraujemo. Specifinost ove
moe skratiti vrijeme izrade [5]. podrke je u praktiki neogranienosti primjene ovih
gesti. Dakako koritenje istih je dosta olakano putem
public class DBHelper extends
SQLiteOpenHelper
Gesture API-ja. Geste trebaju svoju vlastitu oslukivaku
{
klasu kao na primjer TrackpadGestureListner klasa
private static final int DATABASE_VERSION koja implementira dva suelja (engl. interface):
= 2; OnGestureListener
private static final String DATABASE_NAME OnDoubleTapListener
=
"sqlite_db"; DocumentBuilder builder =
DictionaryOpenHelper(Context context) { factory.newDocumentBuilder();
super(context, DATABASE_NAME, null, FileInputStream fin =
openFileInput(file_name);
DATABASE_VERSION);
Document dom = builder.parse(fin);
}
NodeList servers_from_xml =
@Override
public void onCreate(SQLiteDatabase db) {
dom.getElementsByTagName("some_elem");
db.execSQL("some SQL query");
}
for (i=0; i < servers_from_xml.getLength();
}
i++)
Kd 13 Koritenje SQLite baze podataka {
Node node = servers_from_xml.item(i);
4.6 HTTP
String name =
Kao pametni telefon tree i etvrte generacije -
node.getAttributes().item(0).getNodeValue().
generacije mobilnog Interneta, Android prua opseni
toString();
API za komunikaciju sa Internetom. Pokrivena je
}
cjelokupna funkcionalnost HTTP protokola, to ukljuuje
i mogunosti koritenja raznih web servisa na razini GET
i POST metoda. Kd 15 itanje podataka iz XML datoteke
Kd 17 Definiranje animacije (JAVA) Unutar XML kda forme stvaramo element tipa
com.google.android.maps.MapView kako to prikazuje
isjeak u kodu (22). Takoer, unutar manifest datoteke je
4.10 Rad s mrenom infrastrukturom potrebno dodati i odgovarajui isjeak definiran u kodu
koji slijedi (23).
Koncepti koritenja beine mree (WiFi, Bluetootha,
GSM) su takoer kao i velika veina koncepata relativno <uses-library
jednostavni za koritenje. Dovoljno je zatraiti od
sustava dozvolu za koritenje, te manipulirati objektima. android:name="com.google.android.maps"/>
Kod ovih koncepata moe doi do problema obzirom na <uses-permission
razliite verzije SDK-a. Naime, starije verzije ne
podravaju neke funkcionalnosti, te je potrebno istima android:name="android.permission.INTERNET"/>
ograniiti pristup putem Manifest datoteke ili
implementirati kontrolu verzije unutar same aplikacije. Kd 23 Proirenje manifest datoteke
GPS za razliku od beinih mrea nije doivio vee
promjene, te koritenje istoga takoer ne predstavlja 4.12 Rad s dretvama
velike probleme. Rad s GPS-om se svodi na traenje
dozvole i koritenje preddefiniranih objekata. Slijedei Android podrava viedretvenost (engl. multi-threading),
isjeci kda prikazuju koritenje pojedinih infrastrukturnih to nam uvelike olakava izradu i funkcioniranje
koncepata na Android mobilnim ureajima: sloenijih aplikacija. Dretve se mogu koristiti na dva
naina: tako da se izvravaju na UI Thread-u to
WifiManager wm = naravno blokira isti, ili kao pozadinske dretve, iji je
(WifiManager)getSystemService(Context.WIFI_SE posao obino odraditi neki vremenski opseniji posao,
RVICE); tako da se UI Thread ne blokira, to znai da korisnik
Kd 18 Koritenje WiFi infrastrukture moe nastaviti rad s aplikacijom dok eka na rezultat
izvravanja. Komunikaciju izmeu dretvi mogue je
realizirati na vie naina. Jedan od poznatijih i
BluetoothAdapter bm = primjenjenijih je koritenje Handlera, kako bi se slale
BluetoothAdapter.getDefaultAdapter(); poruke meu dretvama i dogovorio tijek izvravanja. Jo
jedan vaan koncept preuzet iz Jave je koritenje tako
Kd 19 Koritenje Bluetooth infrastrukture zvanih sinkroniziranih (engl. syncronized) blokova za
sinkronizaciju izmeu dretvi [10].
TelephonyManager tm =
(TelephonyManager)getSystemService( 4.13 Dinamina izmjena formi
Context.TELEPHONY_SERVICE);
Kod Android platforme mogue je izmjenjivati prikaz
Kd 20 Koritenje GSM infrastrukture za pozive elemenata (View-ove) prilikom izvravanja aplikacije
ukoliko prikaz ovisi o prijanjoj akciji. Primjer ovog
koncepta je mogunost izmjene sadraja u sklopu
LocationManager lm = dijaloga, kako je prije navedeno za unos malih koliina
(LocationManager)getSystemService( podataka. Isti postupak vrijedi takoer i za izbornik,
Context.LOCATION_SERVICE); svojstva, animacije i ostale koncepte.
Kd 21 Koritenje GPS infrastrukture
CASEmobile - MOBILNE RAZVOJNE TEHNOLOGIJE I RJEENJA 113
jedno od najkonkurentnijih trita gdje svi veliki igrai primamljiv poslovni model po kojem developer sudjeluje
ulau mnogo resursa za razvoj. Prepoznato je da je u dobiti koja je nastala prodajom aplikacije koju je on
mobilna platforma sama po sebi beskorisna ukoliko ne razvio. Nedostatak Android platforme je jedino u injenici
posjeduje iroku paletu aplikacija. Model malih i relativno da su konani korisnici, u pravilu, doli iz zajednice
jeftinih aplikacija na jednom mjestu se pokazao izuzetno otvorenog koda i navikli su na besplatne aplikacije.
primamljivim za potencijalne korisnike mobilne platforme. Kao i u drugim podrujima, sraz izmeu kvalitete i
Mobilna platforma mora svojim tehnikim kvantitete te izmeu poslovnih modela koji ukljuuju i ne
karakteristikama i jednostavnou razvoja aplikacija ukljuuju plaanje ima znaajne i duboke argumente koji
moi privui to vie developera koji e oplemeniti vuku na jednu i na drugu stranu. Smatramo da je
platformu za dodatnim aplikacijama. Uz tehniki dio, najbolje ostaviti itatelju da sam odlui.
proizvoa platforme mora developerima pruiti i
Literatura:
1 Morrill D.: Announcing the Android 1.0 SDK, release 1, Android Developers Blog, 2008.
Izvor: http://android-developers.blogspot.com/2008/09/announcing-android-10-sdk-release-1.html (uitano:
14.4.2011.)
2 Rogers R., Lombardo J., Mednieks Z., Meike B.: Android Application Development: Programming with the Google
SDK, O'Reilly Media Inc., Sebastopol, 2009.
3 ***: Android Basics: Application Fundametals, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/fundamentals.html (uitano, 30.04.2011)
4 ***: Framework Topics: Audio and Video, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/media/index.html (uitano, 30.04.2011)
5 ***: Framework Topics: Data Storage, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/data/data-storage.html (uitano, 30.04.2011)
6 ***: Framework Topics: Graphics, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/graphics/index.html (uitano, 07.05.2011)
7 ***: Framework Topics: Location and Maps, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/location/index.html (uitano, 30.04.2011)
8 ***: Framework Topics: The AndroidManifest.xml File, Android Developers, 2011.
Izvor: http://developer.android.com/guide/topics/manifest/manifest-intro.html (uitano, 09.05.2011)
9 ***: Framework Topics: User Interface, Android Developer, 2011.
Izvor: http://developer.android.com/guide/topics/ui/index.html (uitano, 14.05.2011)
10 ***: Technical Resources: Painless Threading, Android Developers, 2011.
Izvor: http://developer.android.com/resources/articles/painless-threading.html (uitano, 30.04.2011)
Podaci o autorima:
Ognjen Ribii, univ. bacc. inf.
e-mail: ognjen.ribicic@foi.hr
Ognjen Ribii, univ. bacc. inf., je od svoje 13. godine u stalnom doticaju sa raunalima i informatikim svijetom, to i
odabire kao svoju primarnu struku. 2009. godine zavrava svoje prvostupniko obrazovanje na Tehnikom veleuilitu u
Zagrebu, te iste godine nastavlja naobrazbu na Fakultetu organizacije i informatike u Varadinu. Podruja interesa su mu
razvoj mobilnih i Web aplikacija, te razvoj, odravanje i modeliranje baza podataka, to i jest njegovo usmjerenje na
diplomskom studiju.
Boris Toma, mag. Inf. je od 2010. godine zaposlen kao asistent na Katedri za razvoj informacijskih sustava na Fakultetu
organizacije i informatike u Varadinu. Na istom fakultetu je i student poslijediplomskog doktorskog studija Informacijskih
znanosti. Podruja interesa su mobilne aplikacije, razvoj programskih proizvoda, razvoj GIS aplikacija, multimedijski sustavi
i aplikacijski marketing te marketing programskih proizvoda. Posjeduje dugogodinje iskustvo sa Microsoft tehnologijama
za razvoj aplikacija za veinu arhitektura i platformi.
Zlatko Stapi, mag. inf. je od 2006. godine asistent na Katedri za razvoj informacijskih sustava na Fakultetu organizacije i
informatike u Varadinu, te polaznik poslijediplomskog doktorskog studija Informacijske znanosti na istom fakultetu.
Njegova nastavna aktivnost je prvenstveno usmjerena na kolegije koji se odnose na programsko inenjerstvo, analizu i
116 CASEmobile - MOBILNE RAZVOJNE TEHNOLOGIJE I RJEENJA
razvoj programa, modeliranje poslovnih procesa i razvoj informacijskih sustava, te znaajne napore ulae u radu sa
studentima za to je dobio i posebna priznanja.
Iz znanstvenog i strunog rada treba izdvojiti viegodinje voditeljstvo strunih projekata razvoja programskih proizvoda i
sudjelovanje na razliitim strunim i znanstvenim projektima iz podruja razvoja, unapreenja poslovnih procesa,
projektnog menadmenta i slino.
U posljednje vrijeme se intenzivno bavi razvojem aplikacija za mobilne ureaje, to je i predmet njegovog istraivanja u
okviru doktorske disertacije, a osobito je vrijedno istaknuti da razvija za skoro sve platforme, ukljuujui izmeu ostalog
Android, Symbian te Windows Phone 7. Zlatkov detaljniji ivotopis, s popisom svih radova, projekata i nagrada, te drugih
vanih podataka moe se pronai na njegovoj osobnoj web stranici, na http://www.foi.hr/djelatnici/zlatko.stapic.
Zlatko Stapi is a young researcher and teaching assistant at the Faculty of Organization and Informatics working at the
Information systems development department. His main areas of interests include classic and agile software engineering
methodologies, software and information systems development, business processes modeling and others.