}w!"#$%&'()+,-./012345<ya

Similar documents
Registrácia účtu Hik-Connect

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

}w!"#$%&'()+,-./012345<ya

Copyright 2016 by Martin Krug. All rights reserved.

Aplikačný dizajn manuál

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Mesačná kontrolná správa

Vzory, rámce a webové aplikácie

Riešenia a technológie pre jednotnú správu používateľov

Databázové systémy. SQL Window functions

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle.

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

kucharka exportu pro 9FFFIMU

Mesačná kontrolná správa

Spôsoby zistenia ID KEP

1 Komplexný príklad využitia OOP

VZDÁLENÝ PŘÍSTUP K MOBILNÍM ZAŘÍZENÍM REMOTE ACCESS TO MOBILE DEVICES

Tvorba webových interaktívnych aplikácií pomocou nástroja Silverlight Interactive web applications using the Silverlight

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Návod na odstránenie certifikátov so zrušenou platnosťou

VYLEPŠOVANIE KONCEPTU TRIEDY

Mobile Programming. Two Scenarios Web sites, like Tuubi where you read/write/download/ upload material

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

Prvky inovácie nových jazykov HTML5 a CSS3

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY. Moderné trendy pri tvorbe webových aplikácií

Tvorba informačných systémov. 4. prednáška: Návrh IS

Tvorba webových stránok pre mobilné platformy

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia

JEDNODUCHÝ IS PRO MOBILNÍ TELEFONY PRO EVIDENCI HOVORŮ SIMPLE MOBILE PHONE IS FOR CALL EVIDENCE

}w!"#$%&'()+,-./012345<ya

BGP - duálne prepojenie AS. (primary + backup spoj), s IBGP, cez virtuální L2 linky

Nové komunikačné trendy v dátových centrách

Manuál k programu FileZilla

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA V TRNAVE

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Knižnica (framework) pre kreslenie grafov

Android Overview. Most of the material in this section comes from

UNIVERZITA KONŠTANTÍNA FILOZOFA V NITRE

Xamarin písanie Android a ios aplikácií v C#

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2009, vol. LV, article No Marek BABIUCH *, Martin HNIK **

Carfriend webová aplikácia pre hlásenie nežiadúcich situácií vzťahujúcich sa k vozidlám

Overené riešenia.

Android Overview. Francesco Mercaldo, PhD

Mobile development initiation

POKROČILÉ C++ Marian Vittek

DROID. By S.Gokulakrishnan AP/CSE SCSVMV

SMARTPHONE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS

Podporované grantom z Islandu, Lichtenštajnska a Nórska prostredníctvom Finančného mechanizmu EHP a Nórskeho finančného mechanizmu

Introduction To Android

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

AR6181-MX, AR6182-MX Čítačky MIFARE kariet

DOPLNĚK PRO PROHLÍŽEČE PRO DETEKCI A ZP- RACOVÁNÍ AUDIO A VIDEO STREAMŮ BROWSER EXTENSION FOR AUDIO/VIDEO STREAM PROCESSING

Nový Office. Pre stredné a veľké podniky. Služba. Ovládanie dotykom. zariadenie

}w!"#$%&'()+,-./012345<ya

Databázy (1) Prednáška 11. Alexander Šimko

1. ELASTIX inštalácia 2 2. Elastix konfigurácia Nastavenie užívateľských kont Pridanie nových užívateľských kont 10 2.

}w!"#$%&'()+,-./012345<ya

Aplikácia k určovaniu rastlín pre platformu ios

Poradové a agregačné window funkcie. ROLLUP a CUBE

Coordinates ordering in parallel coordinates views

Úvod do C# ERIK KUČERA METÓDY VÝPOČTOVEJ INTELIGENCIE PREDNÁŠKA 1

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec

INTERNET. História internetu

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Developing Applications for ios

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

PODPORNÉ PROSTRIEDKY PRE VERZIOVANIE: VHODNÝ VÝBER PRE NÁŠ TÍM?

Cross-Platform Mobile Application Development

MONITOROVÁNÍ NEELEKTRICKÝCH VELIČIN S VY- UŽITÍM BLUETOOTH LOW ENERGY

BAKALÁŘSKÁ PRÁCE. Mobilní komunikační software

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

WEBOVÁ PLATFORMA PRE TVORBU HIER WEB PLATFORM FOR GAME DEVELOPMENT

Grid Computing Implementácia služby v Globus Toolkite (Diplomová práca)

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia

OPERAČNÝ SYSTÉM WINDOWS NT

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Absolvování individuální odborné praxe Individual Professional Practice in the Company

MS Exchange 2010 Prechod Ing. Peter Záhradník

HTML5 Mobile App Development

Mobile Development June 2015, TEIATH, Greece

Programové vybavenie - softvér. Funkcie operačného systému

Introduction to Android Application Development. Mike Kvintus Principal Engineer JDSU

IJRDTM Kailash ISBN No Vol.17 Issue

Supported Devices, OS, and Browsers

Platforma průmyslové spolupráce

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY. Fakulta informačních technologií Faculty of Information Technology

Peter Šantavý OPEN SOURCE

Android Development Tutorial. Yi Huang

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

BODY PRÍPADOV POUŽITIA ALEBO AKO MERAŤ SOFTVÉR

Transcription:

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY w!"#$%&'()+,-./012345<ya Nativní vs. webový vývoj aplikací na mobilní platformy BAKALÁŘSKÁ PRÁCE Daniel Tokár Brno, jaro 2011

Prehlásenie Prehlasujem, že táto bakalářská práce je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Vedúci práce: RNDr. Jaroslav Škrabálek ii

Pod akovanie Na tomto mieste by som chcel pod akovat vedúcemu práce RNDr. Jaroslavovi Škrabálkovi za ochotu a cenné rady a najbližším za podporu a trpezlivost. iii

Zhrnutie Ciel om práce je porovnat natívny a webový vývoj aplikácií na mobilné platformy a získané vedomosti využit pri tvorbe vlastnej aplikácie. iv

Kl účové slová Mobilné platformy, vývoj aplikácií, natívne aplikácie, mobilné webové aplikácie, Android, ios, Windows Phone 7, HTML5, PhoneGap, Titanium v

Obsah 1 Úvod............................................. 1 2 Mobilné platformy a vývoj aplikácií.......................... 2 2.1 Android........................................ 4 2.1.1 História.................................... 6 2.1.2 Vývoj aplikácií................................ 6 2.2 ios........................................... 7 2.2.1 História.................................... 8 2.2.2 Vývoj aplikácií................................ 9 2.3 Microsoft Windows Phone 7............................. 10 2.3.1 Vývoj aplikácií................................ 11 2.4 Ostatné mobilné platformy............................. 11 2.4.1 Symbian.................................... 11 2.4.2 Samsung bada................................. 12 2.4.3 Blackberry................................... 12 2.4.4 WebOS..................................... 13 2.5 Webové aplikácie verzus natívne aplikácie.................... 13 2.5.1 Výhody webových aplikácií......................... 13 2.5.2 Nevýhody webových aplikácií....................... 14 2.6 Využitie HTML5 pri vývoji mobilných webových aplikácií........... 15 2.7 HTML5 rámce..................................... 16 2.7.1 PhoneGap................................... 16 2.7.2 Appcelerator Titanium............................ 17 2.8 Aký postup zvolit.................................. 18 3 Praktická čast........................................ 20 3.1 Inštalácia SDK a ADT zásuvného modulu..................... 21 3.2 Popis RSS zdroja................................... 21 3.3 Návrh grafického rozhrania aplikácie....................... 22 3.4 Vytvorenie nového projektu............................. 24 3.5 Vytvorenie grafického rozloženia aplikácie.................... 25 3.6 Popis tried projektu.................................. 28 3.7 Android manifest................................... 32 3.8 Exportovanie a digitálne podpísanie aplikácie.................. 34 4 Záver............................................. 35 Bibliografia............................................ 37 A Ukážky kódu........................................ 38 A.1 Trieda Article..................................... 38 A.2 Trieda RSSFeed.................................... 39 A.3 Metóda getfeed.................................... 39 A.4 Trieda ShowArticle.................................. 41 B Obrazová príloha...................................... 43 vi

B.1 Hlavná obrazovka aplikácie............................. 43 B.2 Obrazovka s detailom článku............................ 44 C Obsah CD.......................................... 45 vii

Kapitola 1 Úvod Ciel om mojej bakalárskej práce je popísat princípy a procesy tvorby a vývoja aplikácií na moderné mobilné platformy primárne Apple ios, Google Android, Microsoft Windows Phone 7, ale aj d alších (napríklad Blackberry, HP webos, atd.). Ďalej porovnat vývoj natívnej aplikácie a webovej mobilnej aplikácie so zameraním sa na výhody a nevýhody jednotlivých postupov a analyzovat efektivitu vývoja pomocou HTML5 rámcov typu PhoneGap alebo Titanium. Práca pozostáva z dvoch celkov. V prvej časti popisujem jednotlivé platformy, ich postavenie na trhu a možnosti vývoja natívnych aplikácií. Zameravam sa v nej tiež na porovnanie webových mobilných aplikácií a natívnych aplikácií. Ďalej v nej popisujem možnosti využitia HTML5 pri vývoji webovej aplikácie a použitie HTML5 rámcov ako nástroja pri vývoji medziplatformových natívnych aplikácií. Druhá čast je praktická. Venujem sa v nej postupom pri vývoji aplikácie RSS čítačky. 1

Kapitola 2 Mobilné platformy a vývoj aplikácií Dnešné mobilné telefóny už neslúžia výhradne na telefonovanie alebo posielanie krátkych textových správ (SMS) ako tomu bolo pred pár rokmi. Spolu so zdokonalovaním technológií sa mení aj ich primárna funkcia. Dnes sú to multimediálne prístroje označované ako múdre telefóny 1, ktoré prehrávajú vysokokvalitné video a zvuk, poskytujú bezdrôtový prístup na internet, GPS navigáciu, kvalitný fotoaparát a mnoho d alších funkcií. Predovšetkým ale majú vlastný operačný systém podobný tým, ktoré bežia na stolových počítačoch. To im okrem iného dáva možnost inštalovat rôzne aplikácie, ktoré prístroj doplnia o nové funkcie. Zdokonalovanie a miniaturizácia technológií však nie je jediným aspektom, ktorý sa pričinil o tak masívne rozšírenie múdrych telefónov. Vel ký podiel na tom má obrovský rozvoj internetovej infraštruktúry. Vo väčších mestách nie je problém pripojit sa bezdrôtovo na internet pomocou Wi-Fi alebo 3G siete. Podl a odhadov má v tomto roku predbehnút počet prístupov na internet z mobilných prístrojov počet prístupov z klasických stolných počítačov3. Podl a výskumného inštitútu so zameraním na informačné technológie Gartner Inc. v roku 2011 má narást počet predaných múdrych telefónov oproti predošlému roku o približne 57 % [6]. Poslednú revolúciu na trhu s mobilnými telefónmi začal v roku 2007 Apple vydaním prístroja iphone. Tento mobilný telefón sa stal priekopníkom, ked ako prvý vsadil výlučne na ovládanie prístroja prstom pomocou dotykovej obrazovky. Navyše ako je pri spoločnosti Apple zvykom, vel ký dôraz venovali dizajnu prístroja a jeho grafického rozhrania, ktoré je užívatel sky prívetivé a intuitívne. To im zabezpečilo vel ký úspech v predajnosti, na ktorý museli reagovat aj ostatní výrobcovia. Dnes už je väčšina mobilných prístrojov vybavená vel kou dotykovou obrazovkou, ktorá nahrádza klasickú hardvérovú klávesnicu. Medzi najpopulárnejšie mobilné operačné systémy, ktoré múdre telefóny využívajú, patria Android, o ktorého vývoj sa stará internetový gigant Google, ios od spoločnosti Apple a najnovšie aj Windows Phone 7 od Microsoftu. Operačný systém Symbian, ktorý vyvíjala fínska spoločnost Nokia, je na ústupe. Dôležitým hráčom je aj kanadská firma Research in Motion (RIM), ktorá vyrába prístroje Blackberry s vlastným operačným systémom Blackberry OS, ktoré sú populárne hlavne v Amerike. Jeho podiel na trhu však tiež klesá na úkor ios a Androidu. O popularite múdrych telefónov svedčí aj fakt, že v poslednom štvrt roku 2010 dokázal ich predaj predbehnút predaj klasických stolných počítačov [4]. To bolo spôsobené najmä 1. Ang. smartphones 2

2. MOBILNÉ PLATFORMY A VÝVOJ APLIKÁCIÍ Obrázok 2.1: Podiel mobilných platforiem na trhu v roku 2009 a 2010. Dáta pochádzajú zo zdroja Gartner Inc. predstavením tabletov, ktoré znamenajú vážnejšiu konkurenciu stolným počítačom ako je tomu v prípade múdrych mobilných telefónov. S rastúcim predajom prístrojov s operačnými systémami sa otvoril aj nový trh s aplikáciami. Pre každú platformu existuje internetový obchod ponúkajúci aplikácie. Niektoré sú k dispozícii zadarmo, iné sú platené. Momentálne najviac aplikácií ponúka vo svojom obchode AppStore spoločnost Apple. Android Market ho však rýchlo dobieha a podl a odhadov si v priebehu niekol kých mesiacov svoje poradie vymenia. V mesiaci apríl pribudlo do AppStore približne 11 000 nových aplikácií pričom do Android Market 28 000 [11]. Pomalší nárast počtu nových aplikácií v AppStore je spôsobený aj ich dôslednou kontrolou a prípadným nezaradením do ponuky v prípade, že majú nevhodný obsah alebo ich kód je škodlivý. Tieto čísla však hlavne ukazujú, aký vel ký trh vývoj pre mobilné platformy predstavuje. Centralizovaný predaj aplikácií prináša aj isté obmedzenia. Na tento model predaja doplácajú hlavne užívatelia z menších krajín, ktoré nie sú z pohl adu trhu pre poskytovatel ov príliš perspektívne. V týchto krajinách nie je umožnené aplikácie st ahovat, prípadne sú zákazníci odkázaní iba na aplikácie, ktoré sú ponúkané zdarma. Proces rozširovania podporovaných krajín je zdĺhavý a v mnohých prípadoch pre poskytovatel ov nevýhodný. Našt astie Česká a Slovenská republika majú prístup k plateným aplikáciam z AppStore, Android Market a Nokia Ovi Store. Windows Phone Market v budúcnosti tiež plánuje ponúknut platené aplikácie v tomto regióne. 3

2.1. ANDROID 2.1 Android Android je softvérová platforma určená pre mobilné zariadenia. O jej vývoj sa stará združenie firiem OHA 2, ktorého zakladajúcim členom je spoločnost Google Inc. Už od prvej verejne dostupnej verzie sú všetky jej súčasti šírené pod licenciou Apache a GPL 3. To znamená, že zdrojové kódy systému sú vol ne prístupné a môže ich ktokol vek používat alebo upravovat [7]. Často to využívajú práve výrobcovia mobilných prístrojov alebo poskytovatelia mobilných služieb, aby systém odladili podl a svojich potrieb. Architektúra systému je rozdelená do niekol kých vrstiev. Obrázok 2.2: Architektúra operačného systému Android. Linuxové jadro je postavené na najnovšej verzii 2.6. Umožňuje beh viacerých aplikácií súčasne, pričom každá beží ako samostatný proces pod vlastným užívatel ským menom. Tým je zaistená izolácia jednotlivých aplikácií a tým aj bezpečnost celého 2. Open Handset Alliance je zoskupenie výrobcov mobilných prístrojov, telekomunikačných operátorov a technologických firiem. 3. Ang. General Public License 4

2.1. ANDROID systému. Poskytuje základné služby ako správu pamäte, správu napájania alebo správu procesov. Tiež slúži ako abstraktná vrstva medzi hardvérom prístroja a zvyškom systému. Jeho súčast ou sú aj ovládače pre displej, pamät, zvuk, klávesy, fotoaparát, GSM modul, siet ovú vrstvu, Wi-Fi, Bluetooth, EDGE, 3G, kompas, atd. Knižnice Android obsahuje sadu C/C++ knižníc, ktoré zabezpečujú prístup aplikácií k rôznym komponentom systému. Medzi implementované knižnice patria napríklad: Knižnica médií podporuje prehrávanie a nahrávanie videa a zvuku v obl úbených formátoch, ale aj zobrazovanie statických obrázkov. Podporované formáty sú napríklad MPEG4, H.264, MP3, AAC, AMR, JPG, PNG atd. 3D knižnice implementácia založená na OpenGL ES 1.0 API. Tieto knižnice používajú hardvérovú akceleráciu (ak je dostupná) alebo vstavanú optimalizovanú 3D softvérovú rasterizáciu. SGL knižnica určená na prácu s 2D grafikou. FreeType knižnica slúžiaca na bitmapové a vektorové vykresl ovanie písma. SQLite knižnica pre prácu s relačnou databázou. LibWebCore moderné jadro pre internetový prehliadač založené na báze Web- Kit. Android runtime obsahuje súbor základných knižníc a virtuálny stroj Dalvik, ktorý využívajú aplikácie pre svoj beh. Aplikačný framework obsahuje objekty na tvorbu užívatel ského rozhrania a aplikačnej logiky aplikácie. Pri jej tvorbe má vývojár k dispozícii: Sada pohl adov (Views) jedná sa o hlavný prvok pri tvorbe a spravovania grafického užívatel ského rozhrania aplikácie. Poskytovatel obsahu (Content provider) jeho úlohou je predávat dáta medzi jednotlivými aplikáciami. Manažér zdrojov (Resource manager) poskytuje prístup k zdrojom ako grafika, lokalizovaným ret azcom alebo XML súborov popisujúcich grafické rozloženie aplikácie. Manažér oznámení (Notification manager) poskytuje aplikáciam prístup k zobrazovaniu rôznych upozornení na stavovej lište. Manažér činností (Activity manager) spravuje životný cyklus aplikácie a poskytuje základné navigačné pozadie. 5

2.1. ANDROID Aplikácie okrem samotného operačného systému obsahuje Android aj aplikácie ako napríklad e-mailový klient, aplikáciu na správu SMS/MMS správ, telefónny zoznam, internetový prehliadač, kalendár, navigáciu a mnoho d alších. Všetky tieto aplikácie sa jednoducho dajú nahradit inými, podl a požiadaviek užívatel a. 2.1.1 História História operačného systému Android siaha do roku 2003, ked bola založená spoločnost Android Inc., ktorá sa zaoberala vývojom operačného systému pre mobilné telefóny. V roku 2005 firma Google Inc. odkúpila túto spoločnost. Jedným z dôvodov, prečo sa pre tento krok Google rozhodol, bola snaha vstúpit na mobilný trh a ponúknut svoje služby l ud om, ktorí pristupujú na internet prostredníctvom svojich mobilných telefónov alebo iných mobilných zariadení. Google neskôr preniesol vývoj operačného systému na združenie firiem OHA (Open Handset Alliance), ktorého je taktiež členom. 5. novembra 2007 spolu so vznikom OHA sa uskutočnilo aj oficiálne predstavenie operačného systému Android. Prvá verzia systému s označením 1.0 bola uverejnená v septembri 2008 zároveň s prvým mobilným telefónom fungujúcim na tejto platforme T-mobile G1. Od tejto doby prešiel Android vel kými zmenami a úpravami. Postupne bola doplnená podpora vyšších rozlíšení displeja, podpora pre viacdotykové ovládanie, podpora HTML5 prvkov a Adobe Flash v integrovanom internetovom prehliadači a mnoho d alších vylepšení a úprav. Momentálne sa Android nachádza vo verzii 2.3 (Gingerbread) pre mobilné telefóny a vo verzii 3.0 (Honeycomb) pre tablety. 2.1.2 Vývoj aplikácií Pre potreby programátorov je určený vývojársky balík pre Android (tzv. SDK Software Development Kit), ktorý obsahuje nástroj na ladenie chýb 4, sadu knižníc, emulátor zariadenia, dokumentáciu, ukážky zdrojových kódov a tiež návody. SDK sa dá vol ne stiahnut na internetových stránkach Android Developers 5. Dostupné sú verzie SDK pre Windows XP alebo novšie, Linux aj Mac OS X 10.4.9 alebo novšie. Odporúčané prostredie pre vývoj je Eclipse (vo verzii 3.5 alebo 3.6), pre ktorý existuje zásuvný modul Android Development Tools (ADT), ktorý do tohto vývojového prostredia dopĺňa všetky potrebné doplnky pre vývoj aplikácií pre Android. Podobné zásuvné moduly sa dajú nájst aj pre iné vývojové prostredia (napr. Netbeans, IntelliJ IDEA), no ich podpora nie je na takej vysokej úrovni ako pre spomínaný Eclipse. Tiež je možné použit akýkol vek textový editor na úpravu zdrojových kódov a XML súborov a následne použit príkazový riadok na vytvorenie, kompilovanie a ladenie Android aplikácií. Cez príkazový riadok sa dá ovládat a spravovat aj virtuálny Android prístroj. Aplikácie pre Android sú síce písané v programovacom jazyku Java, ale systém nevyužíva štandardný virtuálny stroj pre beh Java aplikácií - Java Virtual Machine. Spolieha sa na 4. Ang. debugger 5. <http://developer.android.com/sdk/index.html> 6

2.2. IOS svoj vlastný s názvom Dalvik, ktorý bol vytvorený spoločnost ou Google práve pre potreby tohto operačného systému. Tento virtuálny stroj je optimalizovaný pre potreby mobilných zariadení, čo znamená, že musí dbat na obmedzenia pamäte, výkonu a napájania. Pomocou nástroja nazvaného dx sa preložia zdrojové Java triedy s príponou.class do formátu.dex. To je spustitel ný súbor vo virtuálnom stroji Dalvik. Platforma Android sa snaží byt otvorenou, a tak poskytuje vývojárom možnost pristupovat k vel kému množstvu hardvérových a systémových funkcií prístroja. Pomocou aplikačného rozhrania može uskutočnit alebo prijat telefonát, posielat SMS alebo MMS správy, pristupovat k akcelerometru, kompasu, GPS, užívatel ským dátam a kontaktom a mnoho d alších. Táto otvorenost je vel kým lákadlom pre potencionálnych vývojárov. Testovanie aplikácií je možné pomocou emulátora zariadenia alebo priamo pomocou pripojeného prístroja. Narozdiel od platforiem ios alebo Windows Phone 7 nie je nutné platit registračné poplatky pre sprístupnenie tejto možnosti. 2.2 ios ios je operačný systém určený pre mobilné telefóny iphone, tablety ipad, hudobné prehrávače ipod Touch a najnovšie aj Apple TV. Je vyvíjaný spoločnost ou Apple Inc, ktorá sa stará aj o výrobu zariadení, na ktorých tento operačný systém pracuje. Spoločnost Apple neponúka možnost použit ios na prístrojoch iných výrobcov. ios je odl ahčená verzia operačného systému určeného pre stolové počítače od spoločnosti Apple - Mac OS X. Ked že je určený pre iný typ zariadenia, neobsahuje niektoré súčasti pôvodného systému, ale na druhej strane je obohatený o podporu dotykového ovládania a podporu akcelerometra. Je založený na unixovom jadre Mach. Jeho architektúra je rozdelená na štyri vrstvy, ktoré poskytujú vývojárom aplikačné rozhrania 6 a rámce potrebné pre vývoj. Obrázok 2.3: Architektúra operačného systému ios. Vrstva jadra operačného systému poskytuje nízkoúrovňové funkcie, ktoré využívajú vrstvy postavené vyššie. 6. Ang. API Application programming interface 7

2.2. IOS Vrstva služieb poskytovaných jadrom poskytuje služby, ktoré využívajú všetky aplikácie v systéme, prípadne ich využívajú iné časti systému. Medzi tieto služby patrí napr.: SQLite odl ahčená SQL databáza umožňujúca ukladat užívatel ské dáta. Lokačné služby poskytujú informácie o geografickej polohe aplikáciam. Na zistenie polohy prístroja sa využíva GPS, Wi-Fi a GSM modul. Podpora XML umožňuje načítat XML súbor pomocou triedy NSXMLParser. Na manipuláciu s XML dokumentom slúži knižnica libxml2. Platba v aplikácii od verzie ios 3.0 je možné platit za dodatočný obsah priamo z aplikácie. Vrstva médií obsahuje technológie na tvorbu multimediálnych aplikácií. Grafické technológie poskytujú možnosti práce s grafikou a animáciami v systéme. Medzi inými podporujú napríklad: OpenGL ES umožňuje hardvérovú akceleráciu vykresl ovania 2D a 3D objektov. Core Text slúži na vykresl ovanie písma. Core Animation poskytuje podporu animácií. Technológie pre zvuk sú navrhnuté na zaznamenávanie a prehrávanie zvukových súborov rôznych formátov a obsluhovanie vibrácií prístroja ak to umožňuje. Technológie pre video umožňujú prehrávanie a zaznamenávanie video záznamov a ich použitie v aplikáciách. Vrstva Cocoa Touch obsahuje kl účové rámce na tvorbu aplikácií pre ios. Táto vrstva definuje základnú infraštruktúru aplikácie a podporu kl účových technológií ako beh viacerých aplikácií súčasne, dotykové ovládanie a d alšie vysokoúrovňové systémové služby. Pri vytváraní novej aplikácie je vhodné najprv preskúmat dostupné technológie v tejto vrstve, či neposkytujú potrebnú funkcionalitu. 2.2.1 História Prvýkrát bol ios (v tom čase pomenovaný iphone OS) predstavený spolu s prvým prístrojom iphone na Macworld Conferenece & Expo v januári 2007. V pôvodnom systéme nebolo možné inštalovat aplikácie tretích strán. Namiesto toho Apple odporúčal vytvárat webové aplikácie. V marci 2008 však Apple vydal prvú beta verziu vývojového balíka SDK určenú pre vývoj natívnych aplikácií a oficiálne pomenoval operačný systém ako iphone OS. 8

2.2. IOS Od verzie iphone OS 2.0 pribudla podpora inštalovania aplikácií tretích strán, ktoré sa dajú stiahnut z oficiálneho obchodu menom App Store, ktorý prevádzkuje samotný Apple. Verzia iphone OS 3.0 priniesla do systému funkciu kopírovania a vkladania textu, možnost odosielat a prijímat MMS správy 7, zaznamenávat videosekvencie, podporu HTML5 v internetovom prehliadači Safari a d alšie úpravy systému. S verziou 4.0, ktorá bola vydaná v júni 2010 sa operačný systém premenoval na ios, pretože okrem samotného iphonu je tento operačný systém použitý aj v d alších prístrojoch ako ipad, ipod Touch a Apple TV. Jedná sa o najnovšiu verziu operačného systému. Medzi najdôležitejšie vylepšenia patrí podpora behu viacerých aplikácií súčasne. Pridaná bola aj funkcia tlače priamo zo zariadenia. Obsah určený na tlač sa bezdrôtovo odošle tlačiarni, ktorá ho následne vytlačí. 2.2.2 Vývoj aplikácií Operačný systém od Apple je pomerne uzavretý systém. Jediná možnost ako inštalovat aplikácie do prístroja je prostredníctvom AppStore, kde aplikácie prechádzajú dôsledným schval ovacím procesom zo strany spoločnosti Apple. Aplikácie sú písané v jazyku C alebo v pokročilejšom Objective-C. Apple ponúka zdarma SDK, ktoré je dostupné iba pre operačný systém Mac OS X. SDK obsahuje emulátor iphone a ipad prístroja, vývojové prostredie Xcode a ios knižnicu pre vývojárov. Súčast ou Xcode je aj nástroj na vytváranie grafického rozhrania aplikácie a nástroje na ladenie výkonu a hl adanie chýb pri vývoji aplikácií. ios knižnica pre vývojárov, ktorá je dostupná aj na stránkach Apple Developer 8, obsahuje dokumentáciu, ukážkové zdrojové kódy a množstvo návodov a rád ako postupovat pri vývoji aplikácií. Vývojár aplikácií môže využívat hardvérové funkcie prístroja pomocou aplikačného rozhrania operačného systému. Prístup k funkciám fotoaparátu, GPS, akcelerometra, kompasu, posielaniu SMS správ atd. je zabezpečená na úrovni služieb jadra. Pre testovanie aplikácií priamo na vlastnom prístroji iphone a ich následnom predaji prostredníctvom App Store, je nutné zaregistrovat sa do plateného Apple ios vývojového programu. V súčasnosti je ročný registračný poplatok $99 pre jednotlivcov a $299 pre spoločnosti. ios Developer University Program je určený pre študentov a pracovníkov univerzít. Za tento program nie je nutné platit registračný poplatok. Je obmedzený pre tímy do 200 členov a aplikácie vytvorené vrámci neho sa môžu šírit iba medzi členmi tímu. Nie je možné ich poskytovat komerčne. Vývojári z Českej a Slovenskej republiky môžu svoje aplikácie predávat prostrednídvtom App Store. Okrem oficiálneho vývojového balíka od Apple existuje aj niekol ko projektov, ktoré ponúkajú možnost vývoja aplikácií aj pre iné operačné systémy ako Mac OS X. Najúspešnejší je pokus spoločnosti Adobe, ktorá v novej verzii Adobe Flash CS5 poskytuje možnost kompilovat zdrojový kód do programu určeného pre ios[12]. 7. Ang. Multimedia Messaging Service správa obsahujúca multimediálne prvky, ktorá sa posiela prostredníctvom siete mobilného operátora. 8. <http://developer.apple.com/library/ios/navigation/index.html> 9

2.3. MICROSOFT WINDOWS PHONE 7 2.3 Microsoft Windows Phone 7 Windows Phone 7 je operačný systém pre mobilné telefóny vyvíjaný spoločnost ou Microsoft. Jeho predchodcom bol operačný systém Windows Mobile, na ktorého niekdajší úspech sa snaží nadviazat. Napriek tomu je Windows Phone 7 nový operačný systém, ktorý nemá s predošlou verziou vel a spoločného. Najväčším nedostatkom je hlavne chýbajúca podpora starších aplikácií v novom systéme. Windows Phone 7 je zameraný na užívatel ský trh narozdiel od jeho predchodcu, ktorý sa orientoval viac na sféru firemnú. Predstavený bol v februári 2010 a na trh sa dostal v októbri 2010. Momentálne sa tak jedná o najmladší operačný systém určený pre mobilné prístroje na trhu. Aj preto ešte trpí mnohými detskými chorobami, ktoré sa Microsoft postupne snaží odstraňovat. Napríklad až s príchodom prvej aktualizácie sa v systéme objavila funkcia kopíruj a vlož, ktorej absencia bola užívatel mi často kritizovaná. Diskutovaná bola aj otázka podpory behu viacerých aplikácií súčasne (tzv. multitasking). Samotný Microsoft najprv jeho podporu poprel, potom vyhlásil, že bude podporovaný a nakoniec na túto tému uvalil informačné embargo. V aktuálnej verzii Windows Phone 7 je táto funkcia podporovaná iba čiastočne. To znamená, že iba niektoré aplikácie ako napríklad prehrávač hudby, e-mailový klient alebo aplikácia na posielanie okamžitých správ (instant messenger) dokážu pracovat na pozadí. Štandardne ale táto funkcia k dispozícii nie je. Dokonca len niekol ko kl účových vývojárov má prístup k multitaskingu pre potreby vývoja. Na druhej strane sa spustené aplikácie nevypínajú úplne, iba sa uspia. Ked sa k takto uspanej aplikácii chce užívatel neskôr vrátit, obnoví sa presne v tom bode, v ktorom bola opustená [10]. Microsoft sa pre toto obmedzenie rozhodol kvôli predĺženiu životnosti batérie a menším nárokom na množstvo pamäte, ktorá by bola inak využívaná aj aplikáciami pracujúcimi v pozadí. S najbližšou aktualizáciou systému nazvanou Mango, ktorá je naplánovaná na koniec roka 2011, je okrem iného ohlásená už aj plnohodnotná podpora behu viacerých aplikácií súčasne. Na prepínanie medzi nimi bude slúžit manažér spustených aplikácií, ktorý bude tiež jednou z noviniek. Ešte pred samotnou aktualizáciou by mala byt uvol nená nová verzia internetového prehliadača Internet Explorer 9, ktorá už bude podporovat HTML5. Microsoft oficiálne nezverejnil architektúru svojho operačného systému pre mobilné zariadenia, ale na internet unikla prezentácia, ktorá jeho súčasti popisuje. Podl a týchto zdrojov je architektúra systému Windows Phone 7 rozdelená na dve časti. Užívatel ská čast obsahuje aplikácie a služby poskytované systémom. Čast s jadrom systému obsahuje okrem samotného jadra aj súčasti ako súborový systém, ovládače, grafické vykresl ovanie atd. Jadro je založené na Windows CE 6.0, ktoré bolo špeciálne navrhnuté pre beh na mobilných zariadeniach s dôrazom na výkon a zvýšenú životnost prístroja pri fungovaní na batérie. 10

2.4. OSTATNÉ MOBILNÉ PLATFORMY 2.3.1 Vývoj aplikácií Sú dve cesty ako vytvárat aplikácie pre platformu Windows Phone 7. Vývojár si môže zvolit technológiu Microsoft Silverlight 9 alebo Microsoft XNA 10. Prvá možnost je vhodná pre vývoj bežných aplikácií. XNA poskytuje predovšetkým možnosti vytvárat 2D a 3D hry s vysokým grafickým výkonom [8]. Silverlight aplikácie sú písané v programovacom jazyku C#. Grafické rozhranie aplikácie sa definuje pomocou značkovacieho jazyka XAML 11. Jedná sa o rozšírené XML, ktoré sa používa na popis rozloženia aplikácií od.net Framework verzie 3. Aplikácie pre Windows Phone 7 sú vyvíjané rovnako ako pre stolové verzie operačného systému Windows s tým, že vývojár má navyše prístup k hardvérovým funkciám prístroja. Medzi dostupné funkcie patrí GPS, akcelerometer, fotoaparát, prístup k užívatel ským dátam a kontaktom [8]. Ak chce vývojár predávat svoje aplikácie porstredníctvom Marketpalce, musí sa zaregistrovat a zaplatit ročný poplatok $99. Pre študentov je registrácia dostupná zdarma cez program Dreamspark [8]. Po registrácii je vývojárovi odomknuté jeho zariadenie s operačným systémom Windows Phone 7 na účely testovania. Z Českej a Slovenskej republiky zatial nie je možné oficiálne predávat aplikácie. Existujú však služby ako Yalla Apps 12 alebo Appa Market 13, ktoré poskytujú možnost uverejnit aplikáciu na Marketplace aj z krajín, ktoré nie sú priamo podporované zo strany Microsoft. Za túto službu si účtujú fixný poplatok, prípadne podiel zo zisku. 2.4 Ostatné mobilné platformy Okrem platforiem Android, ios a Windows Phone 7, ktoré majú v súčasnosti najväčší potenciál, existuje na trhu aj množstvo iných operačných systémov pre mobilné zariadenia. Niektoré majú svoj najväčší úspech už za sebou, iné sú zamerané len na špecifickú klientelu a ostatné jednoducho nedokážu konkurovat gigantom ako Apple, Google alebo Microsoft. 2.4.1 Symbian Napriek tomu, že operačný systém Symbian má momentálne viac ako 30 % podiel na trhu, čo ho radí na druhé miesto medzi mobilnými operačnými systémami za platformu Android, dá sa povedat, že už len dožíva. Každým mesiacom sa jeho podiel znižuje a je len otázkou času, kedy ho predbehnú aj ostatné mobilné platformy. Tento operačný systém bol vyvíjaný spoločnost ou Nokia. Momentálne sa o jeho vývoj 9. Silverlight je aplikačná platforma určená pre vývoj biznis a multimediálnych aplikácií. Ako programovací jazyk je možné využit C#, VB.NET, Javascript a IronPython. 10. XNA je sada nástrojov vyvinutá spoločnost ou Microsoft. Primárne je určená na vývoj hier pre Xbox, Windows a Windows Phone 7. 11. Extensible Application Markup Language 12. <http://www.yallaapps.com/> 13. <http://appamarket.com/> 11

2.4. OSTATNÉ MOBILNÉ PLATFORMY stará spoločnost Accenture, ktorej ho Nokia prenechala, lebo v budúcnosti plánuje svoje mobilné prístroje vybavit systémom Windows Phone 7 [9]. Symbian chce využit len na zariadeniach nižšej rady. Týmto krokom bola táto mobilná platforma oficiálne odsunutá na druhú kol aj. Za úpadok kedysi najúspešnejšieho mobilného operačného systému môže samotná Nokia, ktorá sa dlho bránila dotykovému ovládaniu na svojich prístrojoch, čím išla proti požiadavkám samotných užívatel ov. Aktuálna verzia systému sa volá Symbian ^3 a bola vydaná na konci roku 2010. Vel ký dôraz pri jej vývoji bol kladený na prívetivost užívatel ského rozhrania. Vývoj aplikácií Aplikácie pre túto platformu sú písané v programovacom jazyku C++ s použitím Qt SDK 14. To obsahuje dokumentáciu, knižnice, hlavičky súborov, kompilátor a emulátor prístroja. Alternatívny postup vývoja aplikácií je možný pomocou jazyka Python, platformy Adobe Flash alebo Java ME. 2.4.2 Samsung bada Operačný systém bada vznikol z pôvodného systému mobilných telefónov vyrábaných firmou Samsung. Doplnením o dotykové ovládanie, 3D grafiku, prepracovaním grafického rozhrania a hlavne doplnením možnosti st ahovania a inštalovania aplikácií tretích strán, sa z neho stal plnohodnotný operačný systém pre mobilné prístroje. Vývoj aplikácií Samsung vydal pre vývojárov SDK, ktoré sa dá vol ne stiahnut a nainštalovat. Je určené pre operačný systém Windows XP, Windows Vista a Windows 7. Ako programovací jazyk pre vývoj aplikácií je použitý C++. Pre vytvorenie novej aplikácie je nutné zaregistrovat sa na vývojárskych stránkach bada a vytvorit nový profil pre aplikáciu. Podl a nastavení vlastností aplikácie sa vygeneruje súbor manifest.xml. Ten je nutné stiahnut a vložit do nového projektu aplikácie. Ak je hotová aplikácia schválená, je zaradená do predaja v internetovom obchode Samsung App. 2.4.3 Blackberry Za touto mobilnou platformou stojí kanadská spoločnost Research in Motion (RIM). Prístroje Blackberry sú úzko prepojené s internetovými službami. Ich hlavnou výhodou je synchronizácia medzi prístrojom a firemným (alebo osobným) účtom, na ktorom sa nachádzajú e-maily, naplánované schôdzky a d alšie dôležité dáta. To znamená, že užívatel má stále k dispozícií aktuálne informácie nech sa nachádza kdekol vek. 14. QT je medziplatformový aplikačný rámec, pomocou ktorého sa dájú vyvíjat aplikácie a užívatel ské rozhrania pre rôzne operačné systémy, vrátane platformy Symbian. 12

2.5. WEBOVÉ APLIKÁCIE VERZUS NATÍVNE APLIKÁCIE Vývoj aplikácií Aplikácie je možné vyvíjat pomocou Blackberry Java SDK v6.0. To je dostupné ako zásuvný modul pre vývojové prostredie Eclipse pre operačné systémy Windows a Mac OS X. Ako už názov SDK naznažuje, aplikácie sú písané v programovacom jazyku Java. K dispozícii sú aj emulátory všetkých prístrojov značky Blackberry, na ktorých sa dajú aplikácie jednoducho testovat. 2.4.4 WebOS Jedná sa o nástupcu operačného systému PalmOS. Premenoval sa po odkúpení spoločnosti Palm spoločnost ou Hewlett-Packard. Je založený na linuxovom jadre a proprietárnych komponentoch 15. Oficiálne sa v Českej republike nepredáva žiadne zariadenie s týmto operačným systémom. Vývoj aplikácií HP WebOS SDK obsahuje knižnice na tvorbu aplikácií pomocou JavaScriptu a C/C++. Ďalej obsahuje kompilátor, knižnice a ukážky zdrojových kódov. SDK je dostupná pre Windows, Mac OS X a tiež Linux. 2.5 Webové aplikácie verzus natívne aplikácie Trh s mobilnými platformami je príliš roztrieštený. Existuje vel a operačných systémov použitých v mobilných prístrojoch a každý má vlastný postup a programovací jazyk, v ktorom sú natívne aplikácie vyvíjané. Pre jednotlivca je takmer nemožné orientovat sa na všetky dostupné platformy. V prípade vývoja aplikácie vel kou spoločnost ou v nej existuje viac tímov, ktoré aplikáciu vyvíjajú zvlášt pre jednotlivé platformy. To ale znamená zvýšené náklady, ktoré sa následne prejavia na konečnej cene aplikácie. Vhodným spôsobom ako sa s týmto problémom vysporiadat je zamerat sa na vývoj webových aplikácií. Rozšírenie bezdrôtového internetu a nárast jeho rýchlosti poskytuje možnosti využívat webové služby takmer kdekol vek. Vd aka tomu sa webové aplikácie, ktorých obsah je prispôsobený mobilným prístrojom s dotykovou obrazovkou, stávajú rovnocenným partnerom klasickým mobilným aplikáciam. Webové aplikácie prinášajú oproti natívnym množstvo výhod, ale je treba počítat aj s niektorými obmedzeniami. 2.5.1 Výhody webových aplikácií Medzi hlavné výhody patrí už spomínaná prenositel nost medzi jednotlivými platformami. Stačí vytvorit jednu webovú aplikáciu, ku ktorej užívatel pristupuje pomocou internetového prehliadača a tak pohodlne využíva jej služby. Vd aka tomu, že spracovanie dát a potrebné výpočty prebiehajú na serveroch, na ktorých je webová aplikácia uložená, odpadá pre 15. Proprietárny softvér jeho užívanie je obmedzené licenčnými zmluvami. Z pravidla k nemu nie sú dostupné zdrojové kódy, a tak ho nie je možné slobodne upravovat. 13

2.5. WEBOVÉ APLIKÁCIE VERZUS NATÍVNE APLIKÁCIE vývojárov nutnost prepisovat zdrojový kód do rôznych programovacích jazykov ako by to bolo nutné v prípade natívnej aplikácie. Jediné čo je pri takýchto webových aplikáciach nutné prispôsobit je grafické rozhranie, aby sa zobrazovalo správne na všetkých druhoch rozlíšenia. Takéto prispôsobovanie rozhrania je však potrebné aj pri vývoji natívnej aplikácie, takže vývojár sa tomu nevyhne ani v jednom prípade. Webové aplikácie nie je nutné inštalovat priamo do prístroja, čím sa šetrí vnútorná pamät pre iné dáta. Vd aka tomu tiež odpadá potreba ich schval ovania zo strany výrobcov operačných platforiem, čo môže trvat niekol ko týždňov dokonca až mesiacov, ako je to pri predaji prostredníctvom obchodov s aplikáciami. Tým je umožnené rýchlejšie uvedenie aplikácie prípadne jej aktualizácií do prevádzky. Aktualizácie navyše prebiehajú iba na serveroch, čím nezat ažujú užívatel a nutnost ou ich potvrdenia a čakania, kým skončí jej priebeh. Vd aka podpore líšt v prehliadači je možné mat naraz otvorené viaceré webové aplikácie. To môže u platforiem, ktoré normálne nepodporujú beh viacerých aplikácií súčasne práve túto funkciu nahradit. 2.5.2 Nevýhody webových aplikácií Na druhej strane webové aplikácie trpia oproti natívnym istými obmedzeniami. Tým najväčším je nutnost internetového pripojenia, bez ktorého aplikácia nebude fungovat, alebo bude jej funkcionalita značne obmedzená [3]. S nutnost ou internetového pripojenia je spojené aj spoplatnenie dát. To môže byt problematické hlavne v prípade aplikácií, ktoré ich prenášajú vel ké množstvo. Tiež životnost batérie je pomerne obmedzená, pretože je nutné napájat Wi-Fi alebo 3G modul, ktoré vyžadujú väčšie množstvo energie. Komunikácia cez internetové protokoly je hlavne pri bezdrôtových spojeniach pomalá. To má spolu s pomalším vykresl ovaním obsahu aplikácie v prehliadači (napríklad načítanie väčšieho obrázku) podiel na dlhšej odozve aplikácie, čo do vel kej miery znižuje jej užívatel skú prívetivost. Pri vytváraní grafického rozhrania webovej aplikácie je nutné ručne implementovat animácie a rozloženia, ktoré sú inak súčast ou systému. Dosiahnutie rovnakého výsledku ako pri natívnej aplikácii si vyžaduje značné úsilie a dobrú znalost jazykov CSS a JavaScript. Existujú však rámce ako jquery Mobile, jqtouch alebo Sencha Touch, ktoré sú zamerané na vytváranie grafických rozhraní pre webové aplikácie určené pre prístroje s dotykovým ovládaním. Vd aka nim je jednoduchšie vytvorit rozhranie s množstvom animácií, ktoré sa viac podobá rozhraniu natívnej aplikácie. Pri vývoji webovej aplikácie vývojárov obmedzuje aj nemožnost pristupovat ku všetkým hardvérovým alebo systémovým funkciám prístroja. Postupne sa však v tejto oblasti situácia zlepšuje. Už dnes sa dá využit napríklad GPS modul prístroja na určenie polohy užívatel a. Integrovaný prehliadač pracuje ako prostredník medzi webovou aplikáciou a hardvérom a pomocou jazykov JavaScript a HTML5 ponúka túto funkciu webovej aplikácii. Implementovanie tejto funkcionality ukazuje, že je len otázkou času, kedy sa bude dat pomocou webovej aplikácie pristupovat aj k ostatným funkciám prístroja ako napríklad fo- 14

2.6. VYUŽITIE HTML5 PRI VÝVOJI MOBILNÝCH WEBOVÝCH APLIKÁCIÍ toaparát alebo telefónny zoznam [3]. K tomu však treba ešte zjednotit aplikačné rozhrania pre prístup k týmto funkciám v prehliadačoch mobilných prístrojov. To ale môže byt problém, lebo každý výrobca operačného systému to môže urobit svojim vlastným spôsobom. 2.6 Využitie HTML5 pri vývoji mobilných webových aplikácií HTML5 ako pripravovaný štandard prináša množstvo noviniek do oblasti vývoja web aplikácií. Ešte stále je vo fáze návrhu a predpokladá sa, že finálna podoba bude schválená až okolo roku 2020. Napriek tomu väčšina internetových prehliadačov už dnes podporuje vel kú čast HTML5 elementov. Inak tomu nie je ani v prípade prehliadačov v mobilných prístrojoch. Platformy Android, ios, Blackberry OS, Symbian, Samsung bada a tiež WebOS majú svoje prehliadače postavené na jadre WebKit, ktoré sa používa aj v prehliadačoch na klasických počítačoch. Toto jadro zabezpečuje podporu väčšiny HTML5 prvkov. Zatial za nimi zaostáva platforma Windows Phone 7. Jej prehliadač je postavený na kombinácii jadier Internet Explorer 7 a Internet Explorer 8, ktoré si s HTML5 neporadí. Ohlásená je však aktualizácia prehliadača, ktorá tento štandard implementuje. Pomocou HTML5 je možné vytvárat bohaté multimediálne aplikácie bez nutnosti inštalovania zásuvných modulov ako napríklad Adobe Flash. Na to sa spolieha aj Apple, ktorý vo svojich zariadeniach s ios tento zásuvný modul ani neplánuje podporovat. Argumentuje tým, že narozdiel od HTML5 má príliš vel ké nároky na výkon, čím podstatne znižuje životnost batérie. Navyše väčšina videí na internete je dostupných aj vo formáte H.264, ktorého podpora je zabezpečená priamo v systéme ios [5]. To, že má HTML5 vel kú budúcnost, dokazuje aj najznámejší portál poskytujúci zdiel anie videí Youtube 16. Ten začiatkom roka 2010 spustil skúšobnú prevádzku svojho obsahu fungujúcu na tejto technológii. V júli 2010 prepracoval aj mobilnú verziu portálu 17 spoliehajúc sa výhradne na HTML5, vd aka čomu sprístupnili videá aj užívatel om pristupujúcim k tejto službe pomocou prístrojov so systémom ios. Pre ostatné platformy fungovala táto služba aj predtým vd aka podpore Adobe Flash v prístrojoch. Ešte väčším prínosom HTML5 v oblasti vývoja webových aplikácií je možnost sprístupnit ich funkcionalitu aj bez nutnosti internetového spojenia. Na to slúži špeciálne úložisko v internetovom prehliadači, do ktorého sa uložia súbory potrebné pre fungovanie aplikácie. Môžu to byt všetky zdroje ako napríklad HTML a CSS súbory, obrázky alebo JavaScript. Zoznam zdrojov sa definuje v súbore menom cache.manifest [3]. Pre uloženie užívatel ských dát je možné použit jednu z troch HTML5 implementácií lokálnych úložísk. Webové úložisko tiež nazývané HTML5 lokálne úložisko 18. Funguje na princípe kl účov a hodnôt na strane klienta 19. 16. <www.youtube.com> 17. <m.youtube.com> 18. Ang. HTML5 local storage 19. <http://www.w3.org/tr/webstorage/> 15

2.7. HTML5 RÁMCE Webová SQL databáza databáza založená na SQLite fungujúca na strane klienta. Jedná sa o alternatívu k RDBMS 20, ktorá sa používa na serveroch 21. Indexovaná databáza nahrádza webovú SQL databázu a uchovávat hierarchické objekty 22 [3]. dopĺňa ju o možnost 2.7 HTML5 rámce Okrem striktného výberu medzi natívnou alebo webovou aplikáciou existuje pre vývojárov ešte možnost siahnut po niektorom z rámcov, ktoré využívajú HTML5, CSS3 a JavaScript. Takéto aplikácie sa nazývajú hybridné, pretože sa snažia kombinovat výhody oboch riešení. Vd aka nim môžu byt aplikácie vyvíjané pomocou webových technológií, čím je zabezpečená ich prenositel nost medzi platformami. Zároveň je ale hotová aplikácia skompilovaná do programovacieho jazyka pre danú platformu. To znamená, že sa jedná o natívnu aplikáciu, ktorá môže pristupovat k niektorým systémovým funkciám. Vývoj pomocou rámcov neprináša iba výhody. Napriek tomu, že vd aka nim má vývojár prístup k funkciám prístroja, ich zoznam nie je pre všetky podporované platformy rovnaký. V praxi to znamená, že ak nejaká systémová funkcia, ktorú aplikácia potrebuje využívat nie je dostupná pre niektorú platformu, tak pre ňu bude možné aplikáciu vytvorit len so zásahom do zdrojových kódov rámca, alebo to nepôjde vôbec. Úpravy zdrojových kódov nie sú práve jednoduché. V prípade rámcov, ktoré nemajú otvorené zdrojové kódy navyše nie sú možné. Nevýhodou niektorých rámcov je aj absencia nástrojov na hl adanie chýb a ladenia programu, čo značne komplikuje vývoj. Výkon aplikácií vytvorených pomocou HTML5 rámcov je závislý na výkone webového alebo JavaScript jadra nad ktorým tieto aplikácie bežia. Ked že sa jedná o prostredník medzi aplikáciou a samotným systémom, tak takéto aplikácie trpia na menší výkon. Najčastejšie sa to prejavuje v prípade náročných animácií, ktoré nemusia byt plynulé. 2.7.1 PhoneGap PhoneGap je vývojársky rámec s otvorenými zdrojovými kódmi šírený pod licenciou MIT, ktorý umožňuje pomocou jazykov JavaScript, HTML5 a CSS3 vytvárat natívne aplikácie pre operačné systémy ios, Android, WebOS, BlackBerry, Windows Mobile, Samsung bada a Symbian. Na podpore platformy Windows Phone 7 sa momentálne pracuje. O vývoj tohto rámca sa starajú spoločnosti Nitobi Software a IBM. Hlavným dôvodom jeho vzniku bol zámer poskytnút vývojárom mobilných webových aplikácií prístup k hardvérovým funkciám prístroja bez nutnosti učit sa programovacie jazyky, v ktorých sú natívne aplikácie písané. 20. Relational Database Management System 21. <http://www.w3.org/tr/webdatabase/> 22. <http://www.w3.org/tr/indexeddb/> 16

2.7. HTML5 RÁMCE PhoneGap aplikácia funguje v prístroji pomocou vstavaného webového pohl adu. Ten sa stará o zobrazenie grafického rozhrania aplikácie, ktoré je vytvorené pomocou HTML, CSS alebo niektorého z rámcov, ktoré sa normálne používajú pri tvorbe webových mobilných aplikácií. Okrem toho v ňom prebieha spracovanie JavaScript kódu, ktorého úlohou je zabezpečit funkčnú stránku aplikácie. Ak potrebuje vývojár pristupovat k funkciám, ktoré poskytuje systém, tak na to používa špeciálny objekt menom navigator. Medzi podporované funkcie, patrí napríklad akceleromoter, kamera, kompas, prístup k zoznamu kontaktov, GPS, vnútorné úložisko prístroja a iné. Zoznam prístupných funkcií sa líši v závislosti od zvolenej platformy a jej verzie. Neustále sa však dopĺňa. Aktuálny zoznam podporovaných funkcií sa nachádza na stránke s dokumentáciou 23. Pri každej funkcii je okrem jej popisu, dostupných metód a ukážok zdrojových kódov, aj zoznam podporovaných platforiem. PhoneGap nedávno na svojich internetových stránkach predstavil službu nazvanú PhoneGap Build. Tá umožňuje vývojárom nahrat svoju aplikáciu napísanú pomocou jazykov HTML, CSS a JavaScript na server, kde sa spracuje do natívnej aplikácie pre zvolenú platformu. Vd aka tomu nemusí vývojár inštalovat SDK na svoj počítač a samostatne kompilovat aplikáciu pre každú platformu [1]. Obl úbené vývojové prostredie Adobe Dreamweaver CS5.5, ktoré je predovšetkým určené pre vytváranie webových stránok, nedávno doplnilo možnost vyvíjat aplikácie pomocou rámca PhoneGap. 2.7.2 Appcelerator Titanium Titanium Mobile je vývojový rámec umožňujúci vyvíjat aplikácie pre platformy ios a Android. Platforma Blackberry je zatial v skúšobnej prevádzke. Nadväzuje na verziu pre stolové počítače Titanium Desktop, ktorá ponúka vývoj aplikácií pre stolové počítače s rôznymi operačnými systémami. Za vznikom tohto vývojového rámca stojí spoločnost Appcelerator Inc, ktorá ho uviedla na trh na konci roka 2008. Na vývoj aplikácií využíva HTML, CSS a JavaScript. Titanium Developer je program, v ktorom sa aplikácie vyvíjajú. Je vol ne dostupný na oficiálnych stránkach 24. Určený je pre operačné systémy Windows, Linux a Max OS X. Jedná sa o softvér s otvorenými zdrojovými kódmi a je šírený pod Apache 2.0 licenciou. Ide o program pre stolový počítač, ktorá obsahuje nástroje Titanium Mobile SDK pre vývoj mobilných aplikácií a Titanium Desktop SDK pre vývoj aplikácií určených pre operačné systémy Windows, Mac OS X a Linux. Titanium Mobile SDK umožňuje vytvárat natívne mobilné aplikácie s použitím jazyka JavaScript. Takto vytvorené aplikácie nebežia vo vstavanom webovom pohl ade, ale využívajú len samotné JavaScript jadro, pomocou ktorého je interpretovaný kód a zabezpečený prístup k systémovým funkciám prístroja. Vývojár vlastne vyvíja natívnu aplikáciu s použitím medziplatformového jazyka JavaScript, namiesto neprenosného Objective-C alebo 23. <http://docs.phonegap.com/> 24. <http://www.appcelerator.com/products/download/> 17

2.8. AKÝ POSTUP ZVOLIŤ Java kódu. Grafické rozhranie aplikácie je možné vytvorit pomocou HTML a CSS, ale tiež použitím natívnych komponentov, ku ktorým je možné pristupovat cez JavaScript kód [13]. Titanium poskytuje prístup k hlavným hardvérovým a systémovým funkciám prístrojov, ako napríklad GPS, fotoaparát, zoznam kontaktov, prehrávanie video a audio záznamov a mnoho d alších. Zoznam podporovaných funkcií je dostupný na internetových stránkach s dokumentáciou1. Vel kou výhodou tohto rámca je aj jeho l ahká rozšíritel nost. Pomocou zásuvných modulov môže vývojár doplnit svoju mobilnú aplikáciu o požadovanú natívnu funkciu a následne tento modul používat pomocou JavaScript kódu [2]. Na testovanie aplikácií je nutné použit emulátor platformy Android alebo ios, ktoré sú poskytované priamo od výrobcov týchto operačných systémov. To predstavuje nevýhodu pri testovaní aplikácie pre ios, pretože virtuálny prístroj tohto zariadenia funguje iba na operačných systémoch Mac OS X. Nástroje na hl adanie chýb v programe boli doplnené až vydaním vývojového prostredia Titanium Studio 1.0 v apríli 2011. Pre jeho využívanie je nutné používat Titanium Mobile SDK vo verzii 1.7, ktoré je zatial dostupné iba ako beta verzia. 2.8 Aký postup zvolit Všetky spôsoby vývoja aplikácií majú svoje špecifiká a sú vhodné pre rôzne typy aplikácií, takže na túto otázku neexistuje jednoznačná odpoved. Existujú ale odporúčania, ktorých je dobré sa držat pri výbere tej správnej cesty pri vývoji. Natívna aplikácia je vhodná vol ba pri vývoji mobilných hier. Tie potrebujú vysoký grafický výkon a rýchlu odozvu, čo im webové aplikácie nedokážu zaistit. V prípade potreby môže aj takáto aplikácia pristupovat na internet, no pre jej chod to nie je nevyhnutné. U mobilných hier je tiež dôležité zamerat sa na dobrú ovládatel nost. Každá platforma má svoje špecifiká čo sa týka ovládania (napríklad rôzny počet a rozmiestenie kláves). V prípade hry riešenej ako webovej aplikácie by sa nedali využit výhody jednotlivých platforiem, ale musel by sa zvolit kompromis. Ak má aplikácia pristupovat k hardvérovým alebo systémovým funkciám prístroja, ako napríklad posielanie SMS správ, galéria obrázkov, fotoaparát, súbory uložené v pamäti, atd., tak vol ba natívnej alebo hybridnej aplikácie je zatial jediná možnost ako to dosiahnut. Webová aplikácia pre prehrávač hudby alebo videa by bola v takomto prípade nevhodné riešenie. Za väčšou popularitou klasických aplikácií môže aj ich propagácia zo strany výrobcov mobilných operačných systémov. Na rozdiel od webových riešení majú z predaja natívnych aplikácií prostredníctvom svojich internetových obchodov zisk. Väčšinou je to 30 % z podielu predaja. Vd aka obchodom s aplikáciami je pre potenciálneho zákazníka jednoduchšie nájst to čo potrebuje, pretože sa to nachádza na jednom mieste. Navyše aplikácie obsahujú hodnotenia a reakcie od užívatel ov, takže prípadný zákazník si l ahšie vytvorí o aplikácií názor. Na druhej strane webové riešenia sú vhodné pre aplikácie, ktoré ponúkajú služby zá- 18

2.8. AKÝ POSTUP ZVOLIŤ kazníkom. Môže sa jednat napríklad o internetový obchod alebo sociálne siete slúžiace na komunikáciu užívatel ov. Takéto aplikácie sú už svojou podstatou závislé na internetovom pripojení. Navyše nie sú náročné na ovládanie a tiež nevyžadujú prístup k hardvérovým funkciám prístroja. V takomto prípade je teda vhodné zamerat vývoj na čo najväčšiu užívatel skú základňu práve zvolením webovej aplikácie. 19

Kapitola 3 Praktická čast Zadanie mojej bakalárskej práce obsahuje vytvorenie RSS čítačky pre zvolenú mobilnú platformu. RSS čítačka je program, ktorý slúži na získavanie informácií zo sledovaných kanálov, ich spracovanie a zobrazenie užívatel ovi. Ak sa na internetovom portáli sledovanom pomocou RSS čítačky objaví nový článok, čítačka užívatel ovi ponúkne jeho titulok, krátky výňatok textu a odkaz na celý článok na internetovej verzii portálu. Výhodou takýchto čítačiek je, že šetria čas a v prípade verzie pre mobilné zariadenia aj množstvo prenesených dát, ktoré sú často poskytovatel mi mobilného pripojenia predražené. Po predošlom oboznámení sa so základmi programovania pre jednotlivé mobilné platformy som sa rozhodol vytvorit zadanú aplikáciu pre operačný systém Android. Viedla ma k tomu najmä dobrá úroveň dokumentácie, stále rastúca popularita tohto operačného systému na trhu a v neposlednom rade vel ká komunita zaoberajúca sa vývojom, čo v prípade potreby znamená väčšiu šancu nájdenia riešenia problémov. Napriek rôznym možnostiam, ako takúto aplikáciu vytvorit, som sa rozhodol pre natívny spôsob. Toto rozhodnutie bolo ovplyvnené viacerými skutočnost ami. S programovacím jazykom Java, v ktorom sú písané aj aplikácie pre operačný systém Android, som sa už v minulosti stretol, a tak bolo pre mňa pochopenie základných princípov tvorby aplikácií jednoduchšie. Navyše programovací jazyk Java podporuje viacero spôsobov ako jednoducho spracovat XML dáta. Ked že RSS zdroj je špeciálny druh XML súboru, práve jeho spracovanie predstavovalo najdôležitejší krok. Tri najpopulárnejšie z týchto spôsobov sú dostupné aj pre platformu Android. Sú to SAX 1, DOM 2 a XML Pull Parser. Ako RSS 3 zdroj som zvolil portál TechCrunch 4. Ten informuje predovšetkým o technologických novinkách a zaujímavých začínajucích projektoch zo sféry informačných technológií. Na trhu existuje RSS čítačka tohto portálu pre platformu ios, no pre Android k dispozícii nie je. 1. Simple API for XML 2. Document Object Model 3. Really Simple Syndication 4. <http://techcrunch.com/> 20

3.1 Inštalácia SDK a ADT zásuvného modulu 3.1. INŠTALÁCIA SDK A ADT ZÁSUVNÉHO MODULU Ešte pred samotným programovaním aplikácie je potrebné stiahnut, inštalovat a nastavit nástroje určené na vývoj a testovanie: SDK je vol ne prístupné na stránkach Android Developers 5. Eclipse IDE for Java Developer 3.5 odporúčané vývojové prostredie určené na písanie aplikácií pre platformu Android. Je vol ne prístupné na oficiálnych internetových stránkach 6. ADT (Android Development Tools) zásuvný modul pre prostredie Eclipse, pridávajúci možnost vytvorit projekt pre platformu Android. Ďalej je potrebné nastavit cestu k adresáru s nainštalovaným SDK, aby vývojové prostredie Eclipse mohlo spravovat virtuálne prístroje určené na testovanie. Pomocou Eclipse sa dajú vytvárat nové virtuálne prístroje, posielat krátke správy, uskutočňovat telefónne hovory, ale hlavne spúšt at vytvorené aplikácie. 3.2 Popis RSS zdroja Pre navrhnutie logiky programu je dôležité oboznámit sa so štruktúrou RSS zdroja. Ide o XML 7 súbor s oficiálne špecifikovanou štruktúrou. V prípade portálu TechCrunch ide o RSS verziu 2.0, ktorá má nasledujúcu podobu: <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title></title> <link></link> <description></description> <lastbuilddate></lastbuilddate> <item> <title></title> <description></description> <guid></guid> <pubdate></pubdate> </item> </channel> </rss> Prvý riadok je hlavička XML súboru. Definuje použitú verziu XML 1.0 a použité kódovanie UTF-8. Tag <rss> je takzvaný koreňový element, ktorý obsahuje povinný atribút version, popisujúci verziu RSS. Nasleduje povinný element <channel>, ktorý obsahuje d alšie elementy popisujúce RSS kanál: 5. <http://developer.android.com/sdk/index.html> 6. <http://www.eclipse.org/downloads/> 7. extensible Markup Language 21

3.3. NÁVRH GRAFICKÉHO ROZHRANIA APLIKÁCIE <title> povinný element obsahujúci meno RSS zdroja. <link> povinný element obsahujúci URL odkaz na internetovú stránku poskytujúcu RSS zdroj. <description> povinný element obsahujúci krátky popis RSS zdroja. <lastbuilddate> nepovinný element obsahujúci dátum a čas poslednej zmeny RSS zdroja. Formát dodržiava špecifikáciu RFC 822 8. <item> povinný element, ktorý sa môže v RSS zdroji vyskytovat opakovane. Udržiava informácie o jednotlivých článkoch. Všetci potomkovia sú nepovinný, avšak aspoň jeden z title alebo description musí byt prítomný: <title> povinný element obsahujúci krátky popis RSS zdroja. <description>> element obsahujúci krátky úryvok z článku. <guid> element, ktorý slúži ako jedinečný identifikátor článku. V prípade RSS zdroja TechCrunch ide o URL adresu článku. <pubdate> element obsahujúci dátum a čas publikovania článku. Formát dodržiava špecifikáciu RFC 822. Štruktúra RSS zdroja portálu TechCrunch je komplexnejšia, ale pre potreby vytvorenia RSS čítačky postačuje spracovat elementy uvedené vyššie. Podrobná špecifikácia formátu RSS 2.0 je dostupná na stránkach RSS Advisory Board 9. 3.3 Návrh grafického rozhrania aplikácie Design is what your app does, how it works, how it presents itself to your audience. Josh Clark Návrh grafického rozhrania 10 aplikácie je jedným z najdôležitejších krokov pri jej vytváraní. Je to jediná čast, ktorú užívatel vidí, a s ktorou pracuje. Podl a nej si urobí názor o aplikácii ako celku. Ak je rozhranie príliš zložité a preplnené ovládacími prvkami, bude z neho užívatel frustrovaný. Opačný prípad je, ked rozhranie neobsahuje najdôležitejšie ovládacie prvky tam, kde by ich užívatel očakával. Takto zle navrhnuté rozhrania pre aplikáciu môžu viest až k jej odstráneniu z prístroja a následne k zlým referenciám. Návrh grafického rozhrania pre aplikáciu, ktorá je určená pre mobilné zariadenie s dotykovou obrazovkou je špecifický. Treba brat ohl ad na obmedzenia v podobe vel kosti a 8. <http://asg.web.cmu.edu/rfc/rfc822.html> 9. <http://www.rssboard.org/rss-2-0/> 10. Ang. GUI - Graphical User Interface 22

3.3. NÁVRH GRAFICKÉHO ROZHRANIA APLIKÁCIE rozlíšenia displeja, ale zároveň musia byt ovládacie prvky dostatočne vel ké, aby sa dali pohodlne ovládat dotykom prsta. Tiež je potrebné si uvedomit, že užívatel môže aplikáciu používat pri chôdzi a pri zlých svetelných podmienkach ako napríklad prudké slnko v lete. Preto je nutné, aby dôležité texty boli dostatočne vel ké a kontrastné. So samotným návrhom rozhrania je úzko spojený aj návrh logickej štruktúry programu. Obecne sa pre aplikácie vytvárané pre platformu Android odporúča pre každú obrazovku aplikácie mat vlastnú triedu, ktorá sa bude starat o jej funkcionalitu. Pri návrhu GUI pre RSS čítačku som vychádzal z podobných aplikácií určených pre mobilné zariadenia s operačným systémom Android a ios. Obrázok 3.1: Návrh hlavnej obrazovky aplikácie. Úvodná obrazovka aplikácie, ktorá sa zobrazí po spustení, obsahuje základné informácie ako logo portálu TechCrunch, čas poslednej aktualizácie zdroja a zoznam nadpisov jednotlivých článkov. Takéto rozhranie je pre RSS čítačky bežné a užívatelia sú naň zvyknutí. Nie je vhodné experimentovat s novým rozložením prvkov, lebo by to mohlo viest k nepochopeniu princípu fungovania ovládania. 23

3.4. VYTVORENIE NOVÉHO PROJEKTU Obrázok 3.2: Návrh obrazovky s detailom článku. Druhá obrazovka slúži na zobrazenie informácií k vybranému článku. V hornej časti obrazovky sa opät nachádza logo portálu. Pod ním je nadpis, čas publikovania a samotný úryvok článku. Ak je prístupný obrázok, tak sa zobrazí medzi časom publikovania a úryvkom. Na konci článku je uvedený internetový odkaz na celý článok. 3.4 Vytvorenie nového projektu Prvým krokom pri vytvorení nového Android projektu v prostredí Eclipse je základné nastavenie. To zahŕňa nastavenie mena projektu, zvolenie verzie operačného systému, pre ktorý bude aplikácia určená, nastavenie mena a balíka aplikácie a možnost vytvorit a pomenovat hlavnú triedu aplikácie, ktorá sa zavolá pri jej štarte. Pre mnou vytvorený projekt som zvolil názov RSS_Reader. Názov aplikácie, ktorý sa zároveň zobrazuje v hlavnej ponuke prístroja, som zadal RSS Reader. Verziu operačného systému som zvolil Android 2.1, pretože niektoré časti kódu nie sú v starších verziách podporované. Názov balíka projektu musí byt jedineč- 24

3.5. VYTVORENIE GRAFICKÉHO ROZLOŽENIA APLIKÁCIE ný, preto som ho zvolil cz.muni.fi.xtokar.rssreader. Názov hlavnej aktivity projektu som zvolil RSSReader. Po potvrdení sa vytvorí nový projekt, ktorý obsahuje vnútornú štruktúru aplikácie a súbory potrebné pre beh a konfiguráciu aplikácie. Adresár src obsahuje zdrojové kódy projektu. Adresár gen obsahuje automaticky vygenerovanú triedu R.java, ktorá obsahuje identifikátory zdrojov. Táto trieda by sa nemala menit ručne. Android 2.1-update1 je pripojená jar knižnica. Adresár assets slúži k umiestneniu rôznych dátových súborov, ktoré bude aplikácia používat. Adresár res obsahuje zdroje aplikácie: Adresáre drawable-hdpi, drawable-ldpi a drawable-mdpi slúžia na uloženie obrázkov, ikon a iných grafických objektov použitých v aplikácii. V adresári s príponou hdpi sú uložené zdroje pre prístroje s vysokou hustotou rozlíšenia displeja (240dp), v mdpi pre prístroje s priemernou hustotou rozlíšenia (160dp) a v ldpi pre prístroje s malou hustotou rozlíšenia (120dp). Adresár layout obsahuje XML súbory popisujúce rozloženia jednotlivých obrazoviek aplikácie. Adresár values obsahuje ret azcové hodnoty použité v aplikácii. Môže obsahovat rôzne jazykové mutácie. AndroidManifest.xml popisuje aplikáciu, jej komponenty, práva prístupu aplikácie na internet, funkciám prístroja ako GPS, fotoaparát, prácu s SMS správami a mnoho d alších. Súbory default.properties a proguard.cfg slúžia na definovanie a úpravu nastavení pri kompilácii a zostavovaní projektu. 3.5 Vytvorenie grafického rozloženia aplikácie Predošlý návrh grafického rozhrania je nutné spracovat do podoby, aby s ňou vedela aplikácia pracovat. Rozmiestenie jednotlivých prvkov na obrazovke popisuje XML súbor umiestnený v zložke projektu res/layout. Existujú nástroje ako napríklad DroidDraw1, ktoré dokážu generovat požadovaný XML dokument rozloženia pomocou grafického editora. Ja som sa však rozhodol pracovat priamo so zdrojovým XML súborom a jednotlivé prvky rozhrania vložit priamo. 25

3.5. VYTVORENIE GRAFICKÉHO ROZLOŽENIA APLIKÁCIE Súbor main.xml Súbor main.xml popisuje rozloženie hlavnej obrazovky aplikácie a má nasledujúcu podobu: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ffffff"> <ImageView android:id="@+id/logo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margintop="10dip" android:layout_marginbottom="10dip" android:src="@drawable/logo" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textsize="14sp" android:textcolor="#707070" android:id="@+id/feedpubdate" android:layout_marginbottom="5dip" android:paddingleft="5dip" /> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/itemlist" /> </LinearLayout> Prvý riadok je povinná XML hlavička. Nasleduje koreňový element <LinearLayout>, ktorý už podl a svojho názvu hovorí, že prvky v ňom vnorené budú zoradené lineárne. Ďalej definuje menný priestor android. Atribúty android:layout_width a android:layout_height s hodnotou fill_parent definujú, že tento prvok má vyplnit celú obrazovku na šírku respektíve na výšku. Potomkovia koreňového elementu definujú jednotlivé prvky rozloženia. Element <ImageView> do rozloženia vkladá obrázok. V prípade mojej aplikácie je to logo portálu TechCrunch, ktoré je uložené v priečinku drawable pod menom logo.png. Element má d alej definované odsadenie 10 bodov od dolného a horného okraja a tiež zarovnanie na stred obrazovky pomocou atribútu android:layout_gravity. 26

3.5. VYTVORENIE GRAFICKÉHO ROZLOŽENIA APLIKÁCIE <TextView> popisuje čast rozloženia, v ktorom sa nachádza text. Táto čast vyplní nadradený prvok rozhrania na šírku. Na výšku sa vd aka atribútu android:layout_height s hodnotou wrap_content prispôsobí svojmu obsahu. Meno tohto prvku je definované atribútom android:id s hodnotou @+id/feedpubdate. Pod týmto názvom sa z jednotlivých tried aplikácie pristupuje k tomuto prvku. Ďalej je textu v tomto prvku nastavená vel kost písma na 14sp a sivá farba. Zvolil som menšiu vel kost a menej kontrastnú farbu, pretože údaj o poslednej aktualizácii RSS zdroja, ktorý sa v tejto časti rozloženia nachádza je menej podstatná informácia. Posledným prvkom rozloženia hlavnej obrazovky je <ListView>, ktorý má za úlohu zobrazit dáta v zozname. Tento prvok má nastavené, aby sa zobrazil na celý zvyšok vol nej plochy obrazovky. Názov prvku je itemlist. Grafická podoba rozloženia hlavnej obrozovky aplikácie je v prílohe B.1 Súbor show_article_webview.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"> <ImageView android:id="@+id/logo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margintop="10dip" android:layout_marginbottom="10dip" android:src="@drawable/logo" /> <WebView android:id="@+id/storyboxweb" android:layout_height="fill_parent" android:layout_width="fill_parent" android:paddingleft="5dip" android:paddingright="5dip" /> </LinearLayout> Tento súbor popisuje rozloženie obrazovky s podrobnost ami vybraného článku. Tak ako hlavná obrazovka, aj toto rozloženie je lineárne. Element <ImageView> opät vkladá obrázok s logom portálu pred element <WebView>. Obsah tejto oblasti je zobrazený akoby v internetovom prehliadači. Pre použitie tohto prvku som sa rozhodol z dôvodu, že text, ktorý 27

3.6. POPIS TRIED PROJEKTU tu aplikácia zobrazuje obsahuje HTML prvky, ktoré vd aka tomu nemusím inak spracovávat. Grafická podoba rozloženia hlavnej obrozovky aplikácie je v prílohe B.2 3.6 Popis tried projektu Mnou vytvorená aplikácia obsahuje štyri triedy, ktoré sú zodpovedné za funkčnost a správu grafického rozhrania. Trieda Article.java package cz.muni.fi.xtokar.rssreader; public class Article { private String title = null; private String guid = null; private String pubdate = null; private String description = null;... @Override public String tostring() { if (title.length() > 49) { return title.substring(0, 49) + "..."; return title; Zdrojový kód triedy v textovej podobe sa nachádza v prílohe A.1. Táto trieda slúži na vytvorenie objektu Article. Kopíruje štruktúru položky <item> v RSS zdroji. Obsahuje premenné title, guid, pubdate a description, ktoré sú všetky typu ret azec. Jednotlivé metódy slúžia na priradenie hodnoty premennej respektíve získanie jej hodnoty z premennej. Metóda public String tostring() slúži na skrátenie textového ret azca premennej title a doplnenie o... v prípade, že je dlhší ako 49 znakov. Táto upravená metóda má opodstatnenie pri vypisovaní názvov článkov v hlavnej obrazovke aplikácie, aby dlhé názvy nezaberali vel kú čast obrazovky. Trieda RSSFeed.java package cz.muni.fi.xtokar.rssreader; import java.util.arraylist; import java.util.list; 28

3.6. POPIS TRIED PROJEKTU public class RSSFeed { private String lastbuilddate = null; private List<Article> articlelist; public RSSFeed() { articlelist = new ArrayList<Article>();... public Article getarticle(int index) { return articlelist.get(index); Zdrojový kód triedy v textovej podobe sa nachádza v prílohe A.2. Trieda RSSFeed.java vytvorí nový objekt RSSFeed. Obsahuje dve premenné. Prvá je typu ret azec a ukladá sa do nej dátum poslednej zmeny RSS zdroja. Druhá premenná articlelist je typu List<Article> a ukladajú sa do nej objekty typu Article. Zároveň obsahuje metódu public Article getarticle(int index), ktorá slúži na priamy prístup k článku podl a zadaného indexu. Trieda RSSReader.java Trieda RSSReader.java je hlavná trieda projektu, ktorá obsahuje metódy na načítanie a spracovanie RSS zdroja, metódy slúžiace na obsluhu hlavnej obrazovky a metódy na spracovanie dotykov na jednotlivé ovládacie prvky aplikácie. Metóda oncreate @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); feed = getfeed(url_of_feed); refreshdisplay(); Metóda oncreate() je hlavná metóda projektu, ktorá sa zavolá vždy pri spustení aplikácie. Jej úlohou je pomocou metódy setcontentview() priradit zodpovedajúci pohl ad, v tomto prípadne pomenovaný main, hlavnej obrazovke aplikácie. Jedná sa o odkaz na súbor main.xml uložený v zdrojoch projektu, v ktorom je popísané rozloženie hlavnej obrazovky. 29

3.6. POPIS TRIED PROJEKTU Metóda refreshdispaly private void refreshdisplay() { TextView feedpubdate = (TextView) findviewbyid(r.id.feedpubdate); ListView itemlist = (ListView) findviewbyid(r.id.itemlist); if (feed == null) { feedtitle.settext(r.string.no_rss_data); return; feedpubdate.settext(feed.getlastbuilddate()); ArrayAdapter<Article> adapter = new ArrayAdapter<Article>(this, android.r.layout.simple_list_item_1, feed.getarticlelist()); itemlist.setadapter(adapter); itemlist.setonitemclicklistener(this); itemlist.setselection(0); Úlohou tejto metódy je zobrazenie informácií o RSS zdroji na hlavnej obrazovke aplikácie. V prípade, že sa nepodarí tieto dáta načítat zobrazí sa hláška No RSS data. Metóda oncreateoptionsmenu @Override public boolean oncreateoptionsmenu(menu menu) { super.oncreateoptionsmenu(menu); menu.add(0,0,0, R.string.refresh); return true; Metóda pridá do menu jednu položku, ktorá sa zobrazí po stlačení klávesy menu na prístroji. Položka patrí do skupiny objektov s identifikátorom 0, má definované id 0, poradie objektu v menu 0. Textový popis je definovaný v súbore strings.xml s hodnotou Refresh. Metóda getfeed Zdrojový kód metódy v textovej podobe sa nachádza v prílohe A.3. Metóda slúži na načítanie a spracovanie RSS zdroja. Ako vstupný parameter je odovzdaný textový ret azec s adresou požadovaného RSS zdroja. Ten sa najprv pretypuje na objekt typu URL a vytvorí sa nový vstupný prúd dát. Následne sa vytvorí nový objekt xpp typu XMLPullParser s predošlým vstupným prúdom ako vstupom. Ak sa nepodarí nadviazat internetové spojenie, metóda sa ukončí s návratovou hodnotou null. V Opačnom prípade sa začne so spracovaním RSS zdroja. 30

3.6. POPIS TRIED PROJEKTU XML Pull Parser pracuje na základe udalostí. Prechádza celý XML dokument od začiatku do konca pomocou cyklu s kontrolou na začiatku a vracia číselné hodnoty podl a typu udalosti, na ktorú narazil. Cyklus sa ukončí pri dosiahnutí konca XML dokumentu. Hodnotu udalosti vráti metóda getevettype(). Metóda getnext() vráti hodnotu nasledujúcej udalosti. XML Pull Parser má preddefinované hodnoty: XmlPullParser.START_DOCUMENT hodnota vrátená na začiatku XML dokumentu. XmlPullParser.END_DOCUMENT hodnota vrátená pri dosiahnutí konca XML dokumetu. XmlPullParser.START_TAG hodnota vrátená pri otváracej značke. XmlPullParser.END_TAG hodnota vrátená pri ukončovacej značke. XmlPullParser.TEXT hodnota vrátená pri textovom uzle. Na začiatku spracovania dokumentu sa vytvorí nový objekt typu RSSFeed. Mnou implementovaná metóda reaguje len na XML prvky, ktoré sú potrebné pre vytvorenie obsahu aplikácie. Ide o prvky <lastbuilddate>, <item>, <title>, <description>, <guid> a <pubdate>. Každému z týchto prvkov v programe zodpovedá premenná inlastbuilddate, initem, intitle, indescription, inguid a inpubdate. Všetky sú typu boolean a majú preddefinovanú hodnotu false. Ak sa pri prechádzaní dokumentu nachádza parser na otváracej značke jedného z týchto elementov, nastaví sa požadovaná premenná na hodnotu true. Pri koncovej značke opät na hodnotu false. Meno elementu, na ktorom sa práve XML Pull Parser pri prechádzaní dokumentu nachádza, vracia metóda getname(). Ak sa pri prechádzaní parser nachádza na textovom uzle, vykoná sa kontrola, či má niektorá z premenných, ktoré boli nastavené pri otváracej značke hodnotu true. Ak áno, textový ret azec, ktorý sa nachádza v tomto uzle, sa uloží do požadovanej premennej. Ak sa parser nachádza na otváracej značke prvku <item>, okrem zmeny hodnoty premennej initem sa vytvorí aj nový objekt typu Article. Pri koncovej značke sa tento objekt vloží do premennej articlelist objektu RSSFeed. Pri prvku menom <title> sa navyše metódou kontroluje, či je jej menný priestor prázdny. Táto kontrola je nutná, pretože v RSS zdroji portálu TechCrunch sa nachádza prvok <media:title>, ktorého textový uzol by sa považoval za nadpis článku. Po spracovaní celého RSS zdroja metóda vráti objekt typu RSSFeed, v ktorého premenných je uložená informácia o dátume poslednej zmeny zdroja a zoznam článkov. Pri vývoji aplikácie som túto metódu najprv implementoval pomocou SAX parsera a následne aj pomocou DOM. Pri oboch implementáciách sa vyskytla chyba pri spracovávaní textových uzlov, ktoré v sebe obsahovali špeciálne entity ako napríklad &. Takýto textový uzol sa nespracoval celý, ale iba po prvý výskyt entity. XML Pull Parser si ako jediný dokázal so špeciálnymi entitami poradit a správne ich spracovat. 31

3.7. ANDROID MANIFEST Metóda onitemclick public void onitemclick(adapterview parent, View v, int position, long id) { Intent itemintent = new Intent(this,ShowArticle.class); Bundle b = new Bundle(); b.putstring("title", feed.getarticle(position).gettitle()); b.putstring("description", feed.getarticle(position).getdescription()); b.putstring("quid", feed.getarticle(position).getguid()); b.putstring("pubdate", feed.getarticle(position).getpubdate()); itemintent.putextra("android.intent.extra.intent", b); startactivity(itemintent); Úlohou metódy je obslúžit vstup z dotykovej obrazovky pri zvolení konkrétnej položky zo zoznamu článkov. Podl a pozície v zozname sa triede ShowArticle.java predá požadovaný článok. Predávanie obsahu medzi aktivitami v projekte pre platformu Android je riešené cez objekty typu Intent a Bundle. Objekt typu Intent slúži na odovzdanie riadenia a spustenia inej aktivity. Pri jeho vytvorení obdrží ako parameter názov triedy, ktorej má byt riadenie predané. Obsah je odovzdaný v objekte Bundle, ktorý je k Intentu pripojený metódou putextra(). Objekt typu Bundle obsahuje dvojice. Prvá položka je typu ret azec a predstavuje kl úč, pomocou ktorého sa pristupuje k hodnote uloženej v druhej položke. Tá je tiež typu ret azec a obsahuje hodnotu premennej konkrétneho článku. Takáto dvojica je vytvorená pre všetky premenné objektu Article, ktoré sú medzi aktivitami predávané. Metódou startactivity() sa spustí definovaná aktivita a predá sa jej pripojený obsah. Trieda ShowArticle.java Zdrojový kód triedy v textovej podobe sa nachádza v prílohe A.4 Po predošlom odovzdaní riadenia z triedy RSSReader.java triede ShowArticle.java sa z objektu Bundle načítajú dáta. Na to je určená metóda getstring() s príslušným kl účom ako parametrom. Takto získané hodnoty sa zobrazia pomocou webového pohl adu. V statickej premennej header som definoval klasickú HTML hlavičku spolu s kaskádovým štýlom, ktorý definuje farby a vel kost písma pre použité prvky. Farba pozadia webového pohl adu je nastavená metódou setbackgroundcolor() s číselným parametrom pre čiernu farbu, ktorá je definovaná v statickej premennej BLACK. 3.7 Android manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" 32

3.7. ANDROID MANIFEST package="cz.muni.fi.xtokar.rssreader" android:versioncode="1" android:versionname="1.0"> <uses-sdk android:minsdkversion="7" /> <uses-permission android:name="android.permission.internet"> </uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".rssreader" android:label="@string/app_name" android:theme="@android:style/theme.notitlebar"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".showarticle" android:theme="@android:style/theme.notitlebar"> </activity> </application> </manifest> Súbor AndroidManifest.xml popisuje aplikáciu ako celok. Je uložený v hlavnej zložke projektu. V koreňovom elemente <manifest> je definovaný menný priestor, meno balíka a verzia aplikácie. Nasledujúci element <uses-sdk> definuje minimálnu verziu platformy, pre ktorú je aplikácia určená. Element <uses-permission> definuje aplikácii povolenie pristupovat na internet. Je to dosiahnuté atribútom android:name s hodnotou android.permission.internet. Bez tohto povolenia by aplikácia nedokázala stiahnut RSS zdroj. Element <aplication> definuje pomocou svojich atribútov cestu k ikone aplikácie a jej názov. Obsahuje dva dcérine elementy <activity>, ktoré definujú, že aplikácia má dve obrazovky (aktivity). Prvá aktivita má meno.rssreaderxmlpullparser. Obsahuje navyše element <intentfilter>, v ktorom je pomocou elementu <action> definované, že sa jedná o hlavnú obrazovku aplikácie a elementu <category>, ktorý povol uje zobrazit aplikáciu v zozname aplikácií v prístroji. Druhá aktivita má definované meno.showarticle. Atribút android:theme pridáva aktivite preddefinovaný štýl @android:style/theme.notitlebar, ktorý zakazuje zobrazenie lišty s menom aplikácie, ked je spustená. Tento štýl je definovaný u oboch aktivít, aby táto lišta nezaberala zbytočne miesto na obrazovke. 33

3.8. EXPORTOVANIE A DIGITÁLNE PODPÍSANIE APLIKÁCIE 3.8 Exportovanie a digitálne podpísanie aplikácie Aby bolo možné aplikácie publikovat na Android Markete a inštalovat do zariadenia, musia byt digitálne podpísané certifikátom, ktorého privátny kl úč vlastní tvorca aplikácie. Kl úč je možné vygenerovat pomocou príkazového riadku príkazom: keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000 Názov kl úča je my-release-key.keystore, alias kl úča alias_name a jeho platnost je 10 000 dní. Pre publikovanie aplikácií na Android Markete je nutné, aby platnost certifikátu bola najmenej do 22 októbra 2033. Vygenerovanému kl úču treba ešte priradit heslo. Hotovú aplikáciu je možné exportovat do APT súboru pomocou vol by Export Signed Application Package priamo vo vývojom prostredí Eclipse. V d alšom kroku je nutné zvolit kl úč, ktorým chceme aplikáciu podpísat a zadat jeho heslo. Následne sa vytvorí podísaný APT súbor, ktorý je možné nainštalovat do zariadenia s operačným systémom Android. 34

Kapitola 4 Záver Ciel om práce bolo porovnat princípy a procesy tvorby a vývoja aplikácií na moderné mobilné platformy primárne Apple ios, Google Android, Microsoft Windows Phone 7, ale aj d alších (napríklad Blackberry, HP WebOS). Ďalej som porovnal vývoj natívnej aplikácie a webovej mobilnej aplikácie, pričom som sa zameral na výhody a nevýhody jednotlivých riešení. Predstavil som tiež možnosti pripravovaného štandardu značkovacieho jazyka HTML5, ktorý prináša množstvo noviniek do vývoja webových mobilných aplikácií. Následne som priblížil vybrané HTML5 rámce PhoneGap a Titanium, ktoré slúžia na tvorbu hybridných aplikácií. V praktickej časti som popísal návrh a následný postup pri tvorbe natívnej aplikácie RSS čítačky pre platformu Android. Tým som zároveň demonštroval štruktúru programu určeného pre túto platformu. 35

Literatúra [1] Alexander, S.: Building hybrid mobile applications with PhoneGap and IBM WebSphere Portlet Factory, IBM, 2011, [online], dostupné na <http://www.ibm.com/ developerworks/websphere/zones/portal/portletfactory/proddoc/ phonegap/>. 2.7.1 [2] Titanium Mobile, Appcelerator, 2011, [online], dostupné na <http://www.appcelerator.com/products/ titanium-mobile-application-development/>. 2.7.2 [3] Oehlman, D. a Blanc, S.: Pro Android Web Apps: Develop for Android using HTML5, CSS3 & JavaScript, Apress, 2011, 978-1-4302-3276-6, <http://www.apress.com/>. 2.5.2, 2.6 [4] Blodget, H.: IT S OFFICIAL: The Smartphone Market Is Now Bigger Than The PC Market, Business Insider, 2011, [online], dostupné na <http://www. businessinsider.com/smartphone-bigger-than-pc-market-2011-2>. 2 [5] Hefflinger, M.: Apple CEO Jobs Explains iphone Flash Ban in Open Letter, Digital Media Wire, Inc., 2010, [online], dostupné na <http://www.dmwmedia.com/news/2010/04/29/ apple-ceo-jobs-explains-iphone-flash-ban-open-letter>. 2.6 [6] Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010, Gartner Inc., 2011, [online], dostupné na <http://www.gartner.com/it/page.jsp?id=1543014>. 2 [7] O Grady, J.: The Google Phone Pocket Guide, Peachpit Press, 2009, 978-0-321-62059-0, <http://www.peachpit.com/index.aspx>. 2.1 [8] Miles, R.: Windows Phone Programming in C#, 2011, [online], dostupné na <http://www.onlinecomputerbooks.com/ free-windows-phone-programming-books2.php>. 2.3.1 [9] Masár, F.: Nokia prenecháva Symbian spoločnosti Accenture, Mobilizujeme.sk, 2011, [online], dostupné na <http://www.mobilizujeme.sk/2011/04/ nokia-prenechava-symbian-spolocnosti-accenture/>. 2.4.1 [10] Trangel, J.: Vel ký test Windows Phone 7: Úplne iný systém, Mobilmania, 2010, [online], dostupné na <http://www.mobilmania.sk/clanky/ velky-test-windows-phone-7-uplne-iny-system/sc-3-a-1124113/ default.aspx>. 2.3 [11] Kilián, K.: Android Market překoná v létě Apple App Store v počtu aplikací, Svět Androida, 2011, [online], dostupné na <http://www.svetandroida.cz/>. 2 36

[12] Wikipedia contributors: ios (Apple), Wikipedia, 2011, [online], dostupné na <http: //cs.wikipedia.org/wiki/ios_(apple)>. 2.2.2 [13] Dowsett, P. a Guntharp, T.: Getting Started with Titanium, Appcelerator, 2011, [online], dostupné na <http://wiki.appcelerator.org/display/guides/ Getting+Started+with+Titanium>. 2.7.2 37

Dodatok A Ukážky kódu A.1 Trieda Article package cz.muni.fi.xtokar.rssreader; public class Article { private String title = null; private String guid = null; private String pubdate = null; private String description = null; public String gettitle() { return title; public void settitle(string title) { this.title = title; public String getguid() { return guid; public void setguid(string link) { this.guid = link; public String getpubdate() { return pubdate; public void setpubdate(string pubdate) { this.pubdate = pubdate; public String getdescription() { return description; public void setdescription(string description) { this.description = description; @Override public String tostring() { if (title.length() > 49) { 38

A.2. TRIEDA RSSFEED return title.substring(0, 49) + "..."; return title; A.2 Trieda RSSFeed package cz.muni.fi.xtokar.rssreader; import java.util.arraylist; import java.util.list; public class RSSFeed { private String lastbuilddate = null; private List<Article> articlelist; public RSSFeed() { articlelist = new ArrayList<Article>(); public String getlastbuilddate() { return lastbuilddate; public void setlastbuilddate(string pubdate) { this.lastbuilddate = pubdate; public List<Article> getarticlelist() { return articlelist; public void setarticlelist(list<article> articlelist) { this.articlelist = articlelist; public void addarticle(article art) { articlelist.add(art); public Article getarticle(int index) { return articlelist.get(index); A.3 Metóda getfeed public RSSFeed getfeed(string urloffeed) { try { URL url = new URL(urlOfFeed); InputStream in = url.openstream(); 39

A.3. METÓDA GETFEED XmlPullParserFactory xppf = XmlPullParserFactory.newInstance(); xppf.setnamespaceaware(true); XmlPullParser xpp = xppf.newpullparser(); xpp.setinput(in, null); if (xpp == null) { Log.i(tag, "XPP is NULL"); in.close(); return null; Article temparticle = new Article(); int eventtype = xpp.geteventtype(); while (eventtype!= XmlPullParser.END_DOCUMENT) { String tagname = null; String uriname = null; switch (eventtype) { case XmlPullParser.START_DOCUMENT: feed = new RSSFeed(); break; case XmlPullParser.START_TAG: tagname = xpp.getname(); uriname = xpp.getnamespace(); if (tagname.equals("lastbuilddate")) { inlastbuilddate = true; else if (tagname.equals("item")) { initem = true; temparticle = new Article(); else if (tagname.equals("title") && initem && uriname.equals("")) { intitle = true; else if (tagname.equals("guid") && initem) { inguid = true; else if (tagname.equals("description") && initem) { indescription = true; else if (tagname.equals("pubdate") && initem) { inpubdate = true; break; case XmlPullParser.END_TAG: tagname = xpp.getname(); if (xpp.getname().equals("lastbuilddate")) { inlastbuilddate = false; else if (tagname.equals("item")) { initem = false; 40

A.4. TRIEDA SHOWARTICLE feed.addarticle(temparticle); else if (tagname.equals("title") && initem) { intitle = false; else if (tagname.equals("guid") && initem) { inguid = false; else if (tagname.equals("description") && initem) { indescription = false; else if (tagname.equals("pubdate") && initem) { inpubdate = false; break; case XmlPullParser.TEXT: if (inlastbuilddate) { feed.setlastbuilddate(cutstr(xpp.gettext())); else if (intitle && initem) { temparticle.settitle(xpp.gettext()); else if (inguid && initem) { temparticle.setguid(xpp.gettext()); else if (indescription && initem) { temparticle.setdescription(xpp.gettext()); else if (inpubdate && initem) { temparticle.setpubdate(cutstr(xpp.gettext())); break; eventtype = xpp.next(); in.close(); return feed; catch (Exception e) { Log.i(tag, "ERROR: " +e); return null; A.4 Trieda ShowArticle package cz.muni.fi.xtokar.rssreader; public class ShowArticle extends Activity { private static final int BLACK = -16777216; private static final String header = "<html><head>" + "<style type=\"text/css\">" + "body {color: white;" + "a {color: #0099FF;" + ".date {color: #707070;" + " font-size: 10pt;" + "</style>" + "<meta http-equiv=\"content-type\" + 41

"content=\"text/html; charset=utf-8 \">" + "</head><body>"; private static final String footer = "</body></html>"; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.show_article_webview); String body = null; Intent startingintent = getintent(); A.4. TRIEDA SHOWARTICLE if (startingintent!= null) { Bundle b = startingintent.getbundleextra("android.intent.extra.intent"); if (b == null) { body = "<p>bad bundle</p>"; else { body = "<h3>" + b.getstring("title") + "</h3>" + "<span class=\"date\">"+ b.getstring("pubdate") +"</span><p>" + b.getstring("description").replace( \n, ) + "<br /><br />More information:<br /><a href=\"" + b.getstring("quid") +"\">" + b.getstring("quid") + "</a></p>"; else { body = "<p>information Not Found.</p>"; WebView wv = (WebView) findviewbyid(r.id.storyboxweb); wv.setbackgroundcolor(black); wv.loaddata(header + body + footer, "text/html", "utf-8"); 42

Dodatok B Obrazová príloha B.1 Hlavná obrazovka aplikácie Obrázok B.1: Hlavná obrazovka aplikácie 43

B.2. OBRAZOVKA S DETAILOM ČLÁNKU B.2 Obrazovka s detailom článku Obrázok B.2: Obrazovka s detailom článku 44