MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Aplikace pro čtení QR kódů pro mobilní platformy Android
BAKALÁŘSKÁ PRÁCE
Jan Juránek Brno, 2012
Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, kterých jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Jan Juránek
Vedoucí práce:
prof. RNDr. Jiří Hřebíček, CSc.
2
Poděkování Děkuji vedoucímu práce prof. RNDr. Jiřímu Hřebíčkovi, CSc. za jeho rady, trpělivost a odborné vedení. Děkuji také své rodině a přátelům, kteří mi byli po dobu studia velkou oporou. Velký dík též patří Lucii Kulaté, která mi ochotně zapůjčovala mobilní telefon k testům.
3
Shrnutí Cílem bakalářské práce je vytvořit nástroj, který bude umožňovat okamžité rozpoznávání obsahu jednotlivých nádob s nebezpečným odpadem a zároveň bude schopen zobrazit detailní a aktuální informace o jeho původcích. Výsledným nástrojem je přiložená aplikace pro mobilní zařízení fungující na platformě Android, která pracuje s 2D označovacími QR kódy.
Klíčová slova QR kód, Android, čtečka QR kódů, evidence nebezpečných odpadů, Java
4
Obsah
1
Úvod ......................................................................................................................... 7
2
Nakládání s odpady .............................................................................................. 9
3
2.1
Vymezení pojmů ........................................................................................... 10
2.2
Problematika identifikace nádob s NO ...................................................... 11
Možnosti označení nádob s NO........................................................................ 13 3.1
Vývoj AIDC modelů ..................................................................................... 13
3.2
1D kódy (čárové kódy) ................................................................................. 14
3.2.1
Princip a vlastnosti čárových kódů................................................................ 14
3.2.2
Základní lineární kódy .................................................................................... 17
3.3
4
3.3.1
Skládané kódy (Stacked codes) ...................................................................... 19
3.3.2
Maticové kódy (Matrix codes) ........................................................................ 20
3.4
RFID ................................................................................................................ 25
3.5
Výběr označení .............................................................................................. 26
OS Android ........................................................................................................... 29 4.1 4.1.1
5
2D kódy........................................................................................................... 18
Historie ........................................................................................................... 29 Verze systému................................................................................................... 30
4.2
Vývoj aplikací pro Android ......................................................................... 31
4.3
Architektura aplikace v OS Android.......................................................... 32
4.3.1
Activities ............................................................................................................ 32
4.3.2
Content providers ............................................................................................ 33
4.3.3
Services .............................................................................................................. 33
4.3.4
Intents ................................................................................................................ 33
4.3.5
Android Manifest ............................................................................................. 34
Návrh a implementace ........................................................................................ 35 5.1 5.1.1
Aplikace OdpadyQR..................................................................................... 35 Use Case Diagram ............................................................................................ 35
5
5.1.2
Popis a implementace ...................................................................................... 37
5.1.3
Testování ........................................................................................................... 39
5.2
Zadávací systém ............................................................................................ 40
5.2.1
Use Case diagram............................................................................................. 41
5.2.2
Databáze ............................................................................................................ 43
6
Závěr ....................................................................................................................... 44
7
Literatura ............................................................................................................... 45
8
Přílohy.................................................................................................................... 49
6
1
Úvod
Při přepravě a zpracování různých surovin nebo objektů je důležité používat vhodné metody k jejich označení a evidenci. Lidská paměť byla pro tento účel zavržena již dávno, jelikož nedisponuje dostatečnou kapacitou a hlavně spolehlivostí. Její místo tak muselo být zastoupeno vhodným nástrojem, který by dané vlastnosti vykazoval. Jedním z prvních záznamových modelů se staly hliněné destičky. Umožňovaly poměrně spolehlivě uchovávat data o stavu financí, velikosti zásob nebo počtu prodaných výrobků. S postupem času vystoupily negativní faktory i tohoto záznamového média a donutily tak společnost k používání ještě efektivnějšího nástroje. Skrze papyrus, papír, magnetické pásky a několik dalších záznamových médií lidstvo dospělo do dnešního stavu, kdy je schopno zaznamenat obrovské množství dat na minimální prostor. Přes nesmírnou pokročilost doby je však často využíváno čistě textové podoby označení pro specifikaci objektů. Tato metoda nevyžaduje speciální přístup při tvorbě označení, ale zároveň neposkytuje žádné možnosti jak čtení dat usnadnit nebo automatizovat. Ve výsledku je tak omezen rozvoj a výkon celého systému. Vzhledem k přímé formě označení navíc není možné efektivně přistupovat k dodatečným datům (uloženým v databázi), která by ve specifických případech určila další postup při nakládání s objekty. Cílem této práce je využít automatickou identifikaci pro označení nádob s nebezpečným odpadem a navrhnout a vytvořit aplikaci pro OS Android, která tuto funkcionalitu pokryje. Záměrem aplikace je zjednodušit předávání informací o objektech a umožnit přístup k jejich nejaktuálnějším podobám. Práce je členěna do kapitol, které jsou věnovány dílčím částem celé problematiky a jejich smyslem je seznámit s použitými technologiemi nebo oblastmi použití. Následující, tedy druhá kapitola Nakládání s odpady tak vymezuje pojmy, které jsou s odpady spjaty, a popisuje řešený problém, který vyplývá ze špatně zvoleného způsobu označení nebezpečných odpadů. Navazující kapitola Možnosti označení nádob s NO1 obsahuje rozbor modelů automatické identifikace a záznamu dat (čárové kódy – EAN-132, dvoudimenzionální kódy – QR kód3, NO – Nebezpečné odpady EAN-13 – Nejpoužívanější druh čárového kódu pro označení potravin 3 QR kód – Quick Response (Rychlá odezva), maticový kód používaný v reklamě a marketingu 1 2
7
RFID4). V závěru kapitoly, poté co jsou vysvětleny principy a možnosti modelů, jsou jednotlivé skupiny rozebrány a je zde zdůvodněn výběr použitého zástupce. Čtvrtá kapitola seznamuje s operačním systémem Android a jeho verzemi, z nichž několik bylo použito při testování aplikace. Dále jsou v kapitole shrnuty obecné postupy pro vytváření aplikací, jejich struktura a použité vývojové prostředí. V předposlední kapitole Návrh a implementace jsou popsány jednotlivé prvky aplikace OdpadyQR a zadávacího systému. Poslední kapitola pak shrnuje celou práci – její cíle, možnosti a nedostatky.
RFID – Radio Frequency IDentification: označení objektu pomocí pasivního/aktivního čipu vysílajícího na rádiové frekvenci 4
8
2
Nakládání s odpady
Okolo roku 1800 obývala naši planetu asi 1 miliarda lidí. Dosažení tohoto počtu obyvatel civilizaci trvalo prakticky celou dobu její existence. Velký podíl na pomalém růstu velikosti populace měly nemoci, nízký průměrný i maximální věk a nekvalitní společenské, životní a pracovní podmínky. Na základě velkých technologických (průmyslová revoluce) a společenských změn byl tento počet zdvojnásoben již za 130 let. Doba potřebná pro další miliardový nárůst velikosti populace se postupně zkracovala [1]. Tento stabilní růst byl umožněn mnoha faktory, které ale měly jeden společný výsledek. Díky vzniku nových postupů, využití nových surovin a jejich sofistikovanějšímu a náročnějšímu zpracování došlo k produkci velkého množství stejně složitých nebo na odbourání náročných vedlejších produktů - odpadů. Na vznik odpadních produktů bylo nutné reagovat a vytvořit pravidla, která by určovala způsoby, jakými s nimi může být nakládáno. Hromadění netříděného odpadu by totiž vyústilo v znehodnocení jeho využitelných částí a ohrožovalo by jak lidské zdraví, tak i okolní prostředí. Již roku 1939 bylo vydáno vládní nařízení o hospodaření odpadky. Odpadky jako takové v něm byly definovány a byla nastavena pravidla pro jejich shromažďování za účelem následného prodeje nebo zužitkování. Primárním cílem tohoto vyhlášení ovšem nebyla ochrana životního prostředí nebo lidského zdraví. Ve válečném stavu panoval obecný nedostatek a tak nařízení plnilo ryze praktický účel. Ovšem i tak se stalo základem pro další právní úpravy týkající se nakládání s odpady a zároveň vytvořilo prvopočátek komplexního odpadového hospodářství [2, 3]. Prvním zákonem o odpadech, který tuto problematiku opravdu detailně shrnoval, byl zákon č. 238/1991 Sb. Ten byl nahrazen o šest let později zákonem č. 125/1997 Sb. Poslední a zatím platnou právní úpravou je zákon o odpadech č. 185/2001 Sb., který budu v práci dále zmiňovat jako zákon o odpadech [4].
9
2.1
Vymezení pojmů
Zákon o odpadech definuje základní pojmy, které se mimo jiné týkají procesu vytváření, skladování a likvidace odpadů. Pro pochopení problematiky popisované v další podkapitole vyberu a stručně popíši některé pojmy definované § 4 zákona o odpadech nebo vyhláškou č. 383/2001 Sb. o podrobnostech nakládání s odpady, které se jí týkají. Nebezpečný odpad Odpad zařazený v Seznamu nebezpečných odpadů nebo vykazující alespoň jednu z nebezpečných vlastností dle přílohy č. 2 k zákonu o odpadech. Nakládání s odpadem Touto činností se rozumí jeho shromažďování, soustředění, přeprava, skladování, odstraňování a jiné. Skladování odpadů Činnost, při které je odpad dočasně (přechodně) umístěn v zařízení k tomu určenému. Odstraňování odpadů Obecně se jedná o finální činnost při nakládání s odpady. Jednotlivé možnosti odstranění jsou popsány v příloze č. 4 zákona o odpadech. Jednou z možností odstranění odpadů je vysokoteplotní spalování. Původce odpadu Obecně se jedná o právnickou nebo fyzickou osobu, která svou přímou nebo podnikatelskou činností vytváří odpady. Evidenční list Evidenční list slouží k záznamu o přepravě a přepravovaných nebezpečných odpadech. List je tvořen 15 položkami, které definují a specifikují jednotlivé stavy přepravy nebezpečného odpadu a osoby do ní zapojené. Pro naše potřeby jsou nejdůležitějšími položkami tyto: evidenční číslo; původce, název, kód a množství odpadu.
10
Identifikační list Identifikační list představuje dokument popisující obsah a původ jednotlivých nádob s nebezpečným odpadem. Katalog odpadů Katalog odpadů slouží pro přesné zařazování různých druhů odpadů (včetně nebezpečných). Každý druh odpadu je pak označen kódem, který je specifický pro jeho vlastnosti.
2.2
Problematika identifikace nádob s NO
Dle § 3, odst. 1 zákona o odpadech 185/2001 Sb. : „Odpad je každá movitá věc, které se osoba zbavuje nebo má úmysl nebo povinnost se jí zbavit a přísluší do některé ze skupin odpadů uvedených v příloze č. 1 k zákonu o odpadech.“ Tato podkapitola seznamuje s principy nakládání s NO definované zákonem o odpadech a z tohoto zákona také vychází. Počáteční původce veškerých druhů odpadů má ze zákona povinnost jejich vzniku předcházet. Pokud tak nelze učinit zcela, je jeho povinností zajistit dodatečné využití nebo odstranění produkovaného odpadu. Mnoho průmyslových a výrobních procesů, přestože jsou optimalizovány, neumožňuje provádění činnosti bez produkce odpadů. V případě, že se původce rozhodne nebezpečný odpad odstranit, ale nemá k tomu prostředky splňující podmínky dané zákonem, je povinen předat vlastnictví odpadu oprávněné osobě, která zajistí nebo zprostředkuje jejich odstranění. Pro naplnění této povinnosti je nutné nebezpečný odpad přepravit od původce ke zmíněné oprávněné osobě. Pro přepravu musí být zvolen dopravce, který splňuje požadavky kladené zákonem. Dále musí být vypracován identifikační a evidenční list. Identifikační list shromažďuje údaje o odpadu samotném, evidenční list pak obsahuje informace o přepravě tohoto odpadu. Obojí musí být uloženo poblíž přepravovaného nebo uskladňovaného odpadu. Při přepravě pak může být nebezpečný odpad doručen přímo do zařízení určeného k jeho odstranění nebo je možné odpad dopravit a předat společnosti za-
11
bývající se odpady. Ta se stane jeho vlastníkem, odpad uskladní a při nahromadění většího množství tohoto odpadu jej dopraví do koncového zařízení. Během uskladnění ve společnosti zabývající se odpady jsou malá množství stejných druhů nebezpečných odpadů směsována (specifikační kód odpadu musí navzájem přesně odpovídat). Jedná se o běžnou činnost, která zefektivní následnou přepravu. Těmito kroky ale dojde ke změně průvodních dokumentů – v evidenčním i identifikačním listu bude nově jako původce odpadu vystupovat uskladňovací společnost. Díky smíšení odpadů od různých původců tak ani dle původního množství (které by sloužilo jako primární klíč) nebude možné určit, od koho daný odpad na počátku vzešel. Tato neznalost je problematická při konečném odstraňování odpadu. Poměrně komplikovaná technologie spalování nebezpečných odpadů totiž v některých specifických případech může pro dokonalý průběh spalovacího procesu vyžadovat podrobnější informace o vlastnostech konkrétního odpadu, než které požaduje legislativa prostřednictvím vyplněného evidenčního listu, jejž obdrží obsluha spalovny. •
Každý nebezpečný odpad je charakteristický a to díky svému původci (případně místě vzniku)
•
Odpady se stejným kódem, a to i od stejných původců mohou v rámci různých várek (resp. skupin várek) vykazovat mírně odlišné vlastnosti (výhřevnost, obsah vody a jiných příměsí)
•
Pro zajištění maximální bezpečnosti je tedy nutné provádět dodatečné kroky před spalováním (detailní analýza) nebo spalovat odpad pouze v minimálním množství
Popsané skutečnosti vycházejí z konzultace s Mgr. Tomášem Chudárkem, který zastává pozici projektového manažera odpadové společnosti. Výše zmíněným problémům by se dalo předejít nasazením identifikačního systému pro jednotlivé nádoby nebezpečného odpadu, který by byl nezávislý na evidenčních a identifikačních listech. Obsluha spalovny by si pak mohla kdykoli zjistit informace o odpadech, jejich původcích a případných specifických odlišnostech.
12
3
Možnosti označení nádob s NO
Aby bylo možné získat o jednotlivých nádobách s nebezpečným odpadem detailní a aktuální informace, je nutné je vybavit označením, které zajistí splnění těchto požadavků. Další podmínkou, na kterou bude třeba brát ohled, je možnost informace přenášet a ukládat, případně znovu vyvolat. A to tak, aby nádoba zůstala označena. Jak jsem již nastínil v úvodu práce, tak z funkčního principu nebude možné využít tištěného textu, který by byl na nádobě instalován a to například z důvodu nemožnosti zjistit, zda se nevyskytly dodatečné nebo doplňující informace. Bude tedy vhodné využít některý druh AIDC5 modelů. Ty umožňují uchovávat data, která mohou být kdykoli automaticky načtena. Mimo to je možné pomocí modelů zajistit efektivní přístup do databáze (u základních modelů je to jejich primární určení) [5]. V následujících podkapitolách jsou představeny a rozebrány jednotlivé možnosti pro označení nádob s nebezpečnými odpady.
3.1
Vývoj AIDC modelů
Potřeba nebo snaha automatizovat zjišťování informací o různých objektech, se objevila v roce 1948. V tomto roce si americký majitel řetězce potravinových prodejen nechal od Drexler Institute of Technology ve Philadelphii vypracovat řešení, které by později mohl aplikovat pro zjišťování informací o výrobcích při jejich markování. Prvotním výstupem tohoto projektu bylo zařízení, které monitorovalo označení pomocí inkoustu citlivého na ultrafialové záření. Princip byl sice funkční, ale poměrně nestabilní a měl vysoké finanční požadavky na výrobu čtecího zařízení [6]. Další návrh vývojového týmu se již stal předchůdcem a vzorem pro označování objektů a následné automatické zjišťování jejich parametrů, které byly uloženy ve snímaném identifikačním označení. Princip využíval kružnic o různých poloměrech a různých šířkách čar, které byly soustředně seřazeny a kódovaly jednotlivé znaky pomocí Morseovy abecedy. Kružnice byla zvolena z důvodu možnosti snímat kód v libovolném pootočení. Čtení symbolu zajišťovala tech5
AIDC - Automatic Identification and Data Capture (Automatická identifikace a záznam dat)
13
nologie, která byla adaptovaná z filmového zařízení a upravena pro čtení symbolů. Tento způsob označování byl nakonec vývojovým týmem patentován [7].
3.2
1D kódy (čárové kódy)
1D kódy (jednodimenzionální, lineární nebo také čárové kódy) jsou nejčastějším způsobem označování různých produktů či objektů. Valnou většinu z nich tvoří potraviny a jiný obchodní sortiment [8]. Čárové kódy jsou definovány několika faktory: V prvé řadě jsou standardizovány pro nejrůznější typy objektů (potraviny, knihy, časopisy, hudební nosiče a další), což je důsledek jejich dlouhodobé existence. Je tedy nasnadě využít, při potřebě označit produkty, celosvětově (případně regionálně) zavedené principy. Dalším kladem je velmi rychlé a prakticky bezproblémové snímání čárových kódů.
3.2.1 Princip a vlastnosti čárových kódů Čárové kódy jsou obecně tvořeny střídáním za sebou jdoucích černých a bílých čar (případně tmavých a světlých; u světlých čar lze spíše hovořit o mezerách). Čáry a mezery mohou být stejných nebo různých šířek (které ale musí být násobkem nejužší z nich), ale předem daných a jednotných výšek. Výjimku tvoří u některých druhů lineárních kódů skupiny speciálních znaků (ISBN6, ISSN7, EAN8) nebo některé speciální kódy (Postnet). Černá čára nebo bílá mezera pak slouží jako optické zaznamenání binárního kódu, kdy čáry zastupují jeden nebo několik bitů 1 a mezery představují bit 0 [9]. Speciální znaky určují počáteční znak (start character) a konečný znak (stop character), případně rozdělují kód na části určením znaku levé závory (left bar), které se dekódují u jednotlivých typů kódů různě (viz podkapitola 3.2.2) [10]. Délka čar při snímání nemá identifikační nebo datově-nosnou hodnotu. Slouží pouze pro zvýšení efektivnosti čtení čárového kódu. Díky jejich větší délce je umožněno snímat kód i při nevodorovném přiložení snímacího zařízení k horizontální ose symbolu (týká se hlavně situací, kdy je použito ručního skeISBN – International Standard Book Number (označuje knihy) ISSN – International Standard Serial Number (označuje noviny, magazíny) 8 EAN – International Article Number (skupina kódů) 6 7
14
novacího zařízení). Zároveň zvyšuje možnost přečtení symbolu, i když dojde k jeho částečnému porušení nebo malé tiskové chybě. Signifikantním prvkem čárových kódů jsou počet, šířka a barva jednotlivých úseček. Téměř každý druh lineárního kódu se řídí vlastními pravidly a podléhá různým principům a standardům pro určování hodnot jednotlivých skupin čar. Společně ale rozlišují jak tmavou, tak i světlou úsečku (nejčastěji bývá použito kombinace černé a bílé barvy). Výsledný obsah symbolu je určen kombinací úseček, jejich barvy a šířky. Princip získávání dat při skenování čárových kódů je postaven na rozdílné světelné odrazivosti povrchů s různými barvami. Čím je tento faktor větší, tím přesněji bude skenování prováděno, případně nebude kladen tak velký důraz na citlivost čtecího zařízení. Při vysokém rozdílu odrazivosti se zvyšuje úspěšnost správného čtení u poškozených nebo znečištěných symbolů [9]. Datový obsah lineárních kódů je tvořen numerickými nebo alfanumerickými znaky. Počet těchto záznamů je omezen a řádově nepřesahuje dvacet znaků. Je proto využíván pro přístup do paměti nebo databáze a slouží jako most mezi objektem a jeho specifikací (cena, název, složení).
Základní prvky a termíny používané pro označení vnitřní struktury a vlastností čárových kódů [11]: Symbol zakódovaný řetězec Modul (prvek) představuje základní součást symbolu (někdy také přímo označuje nejmenší část symbolu) X označuje šířku nejužšího modulu v symbolu (modulem může být čára nebo mezera) Modul X (prvek X) nejužší prvek (modul) v symbolu Start character (počáteční znak) jedná se o speciální znak, který určuje začátek symbolu a umožňuje tak oboustranné skenování (jeho použití není povinné u všech lineárních kódů)
15
Stop character (konečný znak) označuje speciální znak umístěný na konci symbolu (může být vzhledově odlišen protažením délky jednotlivých modulů) Left bar (levá závora) je speciálním znakem použitým například u kódu EAN13, který rozděluje symbol na několik částí H (height) tento parametr určuje výšku symbolu. Výška musí mít alespoň takovou hodnotu, jakou má větší ze dvojice 0,25“ (cca 0,635 cm) nebo L * 0,15 L (length) označuje délku celého symbolu; do tohoto parametru nejsou zahrnuty tzv. Quiet zones Quiet zone, R (klidová zóna, světlé pásmo) je bílý (světlý) pruh umístěný před začátkem a na konci lineárních kódů (jeho velikost se odvíjí od specifikace kódů) Density (hustota) odkazuje na množství dat, které je možné vložit do dané délky symbolu (hodnota hustoty je zároveň závislá na velikosti prvku X) Accuracy (přesnost) jedním z problémů kódování dat v binární formě je skutečnost, že může být tato forma jednoduše narušena. Problém je zřejmý na jednoduchém příkladu: Příklad 3.1: Do binární formy převedeme decimální číslo 9 (’1001’). Na pozici posledního bitu dojde při čtení ke špatnému rozpoznání a bude zaznamenán jako bit 0. Výsledný znak tedy bude decimální číslo 8 (’1000’). Z tohoto důvodu je potřebné mít možnost odhalit stav, kdy při čtení dojde k chybě. Parity check (kontrola parity) pro odhalení chyby, která je popsána v příkladu 3.1 se nejčastěji využívá právě metody zvané kontrola parity. Sudá nebo lichá parita vyjadřuje, zda je počet bitových znaků 1 v zakódovaném znaku sudý nebo lichý. Dle zvolené konvence je tedy k binárnímu zápisu znaku přidán jeden, takzvaný paritní, bit. Výsledný počet bitových znaků 1 bude u konečného označení prvku buď lichý, nebo sudý, jak vyžaduje konvence daného kódování. Vezmeme v úvahu příklad 3.1 a přidáme k jeho původnímu zápisu paritní bit. Jako konvenci zvolíme sudou paritu. Výsledný systém bude tedy pro kódování
16
znaku využívat místo předchozích 4 nově 5 bitů. Pokud by tedy došlo k lichému počtu chyb v kódu znaku (přepis bitu 0 na 1 nebo opačně), výsledný záznam nebude splňovat podmínky nastavené parity a přečtený symbol bude odmítnut. Kontrola parity sice zvýší bezpečnost kódování, ale pokud v jednom znaku dojde k sudému počtu chyb, není možné tento problém odhalit.
3.2.2 Základní lineární kódy Mezi nejpoužívanější lineární kódy patří tyto [8]:
EAN-13 EAN-13 je nejpoužívanějším evropským lineárním kódem. Vychází ze skupiny standardů sdružovaných pod zkratkou EAN (nově GS19). Číslovka v názvu určuje počet číslic vložených do kódu. Dle standardu pro tento kód je dané rozdělení a význam jednotlivých číslic. První dvě určují kód země, dalších 5 nebo 7 číslic označuje výrobce, následujících 3 - 5 číslic je určeno pro identifikaci produktu/objektu a poslední číslice slouží jako kontrolní doplněk. Díky poslední číslici je možné určit, zda je oskenovaný kód skutečně správně vyhodnocen [12]. Lze tedy určit, zda nastala při skenování chyba či nikoli, ale není možné zjistit, kde přesně nastala a nelze ji ani opravit.
Obrázek č. 1: Příklad kódu EAN-13 [13]
EAN-8 EAN-8 opět vychází ze standardu GS1 a podobně jako EAN-13 i on má pevně danou strukturu. Obsahuje osm číslic, z nichž poslední je opět kontrolní. První 9
GS1 – organizace zabývající se správou a vývojem celosvětových standardů
17
1 – 3 číslice tvoří označení v rámci GS1 a ostatní číslice až na poslední jsou pak určeny pro označení produktu. Pro neobchodní použití je možné zvolit jako první číslici 0 nebo 2 a zbytek využít pro označení produktu. Poslední pozice je opět vyhrazena pro kontrolní číslici.
UPC-A UPC-A (Universal Product Code) označuje lineární kód definovaný organizací GS1-US (americká sekce), který byl prakticky jediným používaným kódem pro označení výrobků v USA. Ještě stále se používá, ale oficiálně byl nahrazen právě kódem EAN-13. Podobně jako systém EAN využívá kontrolní číslici a také obsahuje jeden systémový znak, který specifikuje oblast použití. Dále sestává ze dvou skupin po pěti číslicích, které obsahují kód výrobce a číslo produktu [14, 15].
3.3
2D kódy
Oproti lineárním kódům, které obsahují data pouze v jednom řádku, existují dvoudimenzionální kódy. Jejich struktura a tedy i obsah dat je uložen nejen ve směru imaginární osy x, ale též ve směru osy y. Jejich vznik byl motivován myšlenkou zakódovat co největší objem dat na co nejmenším prostoru. (Pokud použijeme srovnání s lineárními kódy, je poměr přenášených dat vůči velikosti kódu až desetkrát větší právě u 2D kódů oproti lineárním.) Do pozadí tak ustoupila snaha používat kód pouze jako přístup k databázi. Stále sice mělo být skenování co možná nejpřesnější a nejjednodušší, ale hlavní požadavek byl kladen na obsah samotného symbolu. Přenášená data neměla sloužit jako identifikační klíč, ale měla představovat vlastní databázi. Počátek tohoto přístupu se datuje k roku 1984, kdy AIAG10 vydala standard pro označování automobilových dílů a jejich zásilek. Použila k tomu kombinaci 4 nad sebou položených štítků s Kódem 39. Tento lineární kód byl navržen pro ukládání tří typů dat – velkých písmen, čísel a speciálních znaků. Číslovka v jeho názvu pak určuje způsob zápisu jednotlivých kódů. Každý znak je zaveAIAG – Automotive Industry Action Group (skupina výrobců automobilů v USA, která se zabývá sjednocováním postupů a standardizací ve svém oboru)
10
18
den jako kombinace pěti čar a čtyř mezer. Z toho vychází pevný počet devíti elementů, kdy každý kódový reprezentant znaku musí obsahovat právě tři elementy silné a zbylých šest slabých (ať už čáry, mezery nebo jejich vzájemné kombinace). Nejednalo se tak o čistě dvoudimenzionální přístup, jak poukážu níže. Kombinace několika jednodimenzionálních kódů náleží do podkategorie, která nese označení Skládané kódy (viz 3.3.1) [16].
3.3.1 Skládané kódy (Stacked codes) Mezi skládané kódy patří takové 2D kódy, které vznikly jako kombinace několika jednotlivých lineárních kódů stejného druhu. Datový objem takového kódu je oproti jeho lineárnímu základu zvětšen a zároveň dochází ke zmenšení plochy potřebné k zápisu. Plocha je zmenšena snížením výšky jednotlivých lineárních kódů. Ve vývoji 2D kódů má tato skupina nezastupitelnou roli. Na jejím základě byly postaveny ostatní, plnohodnotné 2D kódy [17].
Code 49 Code 49 je první víceřádkové kódování, a jako takové bylo uveřejněno v roce 1987. Skládá se z 2 až 8 řádků vložených nad sebe, které odděluje horizontální linka o šíři jednoho modulu. Každý řádek obsahuje 18 čar a 17 mezer, které tvoří čtyři “slova” o celkové délce 70 modulů. Díky použitému kódování (16,4)11 lze do jednoho symbolu zakódovat 49 alfanumerických znaků nebo 81 číslic. Každý řádek mimo čtyř kódovaných “slov” ještě dále obsahuje počáteční a koncový znak a pořadí svého řádku v symbolu. Spodní řádek spolu s vyjmenovanými povinnými znaky navíc obsahuje údaj o celkovém počtu řádků. Řádky tak mohou být skenovány bez ohledu na jejich pořadí. Výsledný symbol se dekóduje až po oskenování a správném seřazení všech řádků. Code 49 je vhodný pro ukládání relativně velkého množství informací na velmi malou plochu (maximální hustota kódu dosahuje 170 alfanumerických znaků na čtvereční palec – cca 6,45 cm2).
(n,k) kódování – n je počet modulů obsažených v jednom kódovém znaku; k představuje počet čar nebo mezer
11
19
PDF417 Skládaný kód PDF417 představuje v mnoha ohledech nejefektivnější automaticky identifikovatelný kód. Skládá z několika lineárních kódování, které jsou umístěny v řádcích nad sebou. Na rozdíl od Code 49 ale nepoužívá horizontální dělící linky, které slouží k oddělování jednotlivých řádků. Spolu se snížením výšky modulů tak dochází ke zmenšení potřebné plochy pro zápis. Počet řádků a jejich délka je proměnná a dle potřeby ji můžeme nastavit. Limitem pro počet řádků je interval <3, 90> a délka řádku je omezena počtem záznamů, které musí obsahovat. Minimálně 1 záznam, maximálně 30. V názvu PDF417 je opět zahrnut jeho princip, kterým je kódování (17,4). Každé kódové “slovo” je tedy dlouhé 17 modulů a obsahuje 4 čáry nebo mezery. Počet “slov“ na řádku je proměnný, ale počáteční a konečný znak musí být vždy vložen. Vzhledem k tomu, že je zvýšena hustota zápisu odstraněním horizontálních dělících linií, je pro oddělení řádků využito různého kódování “slov”. Kódování umožňuje vytvořit více než deset tisíc různých kombinací, z nichž jsou ale využívány pouze tři skupiny po 929 kódových “slovech”. Skupina je označována slovem cluster (seskupení, shluk) a postupným iterováním jsou vždy na řádek umisťována slova z jednoho ze tří clusterů. Dalšími zabezpečovacími prvky jsou paritní “slova“, která musí obsahovat každý symbol. Dále si uživatel může vybrat z 9 stupňů zabezpečení. Pokud se kódování bude využívat v čistém a bezpečném prostředí, je možné zvolit nejnižší stupeň, který naopak odstraňuje nebo zmenšuje okrajová “slova” a snižuje počet opravitelných záznamů, za účelem rozšíření datového objemu symbolu. Nejvyšší úroveň zabezpečení naopak umožní čtení vysoce poškozeného symbolu a doplnění až 500 poškozených slov. PDF417 může maximálně obsahovat 1,1 kB binárních dat [11, 13].
3.3.2 Maticové kódy (Matrix codes) Mezi maticové kódy patří skupina 2D kódů, kde jsou data zanesena v podobě tmavých a světlých bodů (modulů). Moduly jsou rozmístěny v matici v rámci souřadného systému a mají pevný (většinou čtvercový) tvar nebo rozměr. Velká většina maticových kódů navíc obsahuje znaky (obrazce) pro správnou orientaci a zaměření kódu. Orientační obrazce jsou nejčastěji čtvercového nebo kruho20
vého tvaru a opticky vystupují z jinak nelogicky seřazeného množství modulů v matici. I když jsou lidským okem jednoduše rozpoznatelné, slouží pouze pro správné zaměření symbolu pomocí přístrojů [17].
Aztec code Tento způsob kódování bývá využíván pro označení pacientů, krevních vzorků, cestovních a jiných dokumentů. Oproti většině dvoudimenzionálních kódů nevyžaduje použití světlého pásma a plocha nutná pro zakódování řetězce je tak snížena. Zaměření symbolu je usnadněno použitím středového znaku (bull’s eye), který obsahuje pět nebo sedm soustředných čtverců (střídání černé a bílé barvy) o šířce jednoho modulu. Pro správnou orientaci jsou tři vrcholy symbolu opatřeny dodatečnými moduly, které jsou k nim připojeny z vnější strany. Připojeny jsou postupně 3, 2 a nakonec 1 modul a to ve směru hodinových ručiček. Zakódovaná data jsou do symbolu vkládána spirálovitě ve vrstvách o šířce dvou modulů. Počátek vkládání leží ve vrcholu budoucího symbolu a je určen polopřímkou vycházející ze středového znaku a protínající ten z jeho vrcholů, ke kterému byly připojeny tři přídavné moduly. Velikost symbolů se liší dle objemu kódovaných dat a použitého stupně kontroly chybovosti. Nejmenší rozměr symbolu je 15 x 15 modulů, který je schopen zakódovat 13 číslic. Maximální možná velikost symbolu (151 x 151 modulů) umožňuje uložení až 3800 číslic nebo 2 MB dat. Pro kontrolu správnosti dekódovaných dat je použito Reed-Solomonových kódů12. Jejich nasazení zvětší plochu výsledného symbolu, ale zajistí možnost opravy dat v rámci 5 – 95% celkového objemu. Doporučený počet kontrolních slov je stanoven na 23% celkového objemu symbolu [18, 19].
Data Matrix Již v názvu tohoto způsobu kódování je popsán vzhled výsledného symbolu. Data uložená v tomto kódování jsou čtvercové nebo obdélníkové obrazce, které jsou vyplněny černými a bílými moduly. Není tedy využíváno nástroje pro zaReed-Solomon Codes – kódy sloužící k detekci a samostatné opravě chyb v digitálních přenosech 12
21
měření, tzv. středového znaku. Pro určení správné rotace symbolu je využito krajního pásu o šířce jednoho modulu. Dvě přilehlé hrany matice, tvořící tento pás, jsou úplně vyplněny černými moduly a další dvě zbylé jsou označeny střídáním černých a bílých prvků. Pro Data Matrix symboly je definováno 30 různých velikostních variant. Největší z nich je čtvercová matice o straně 144 modulů. Při nízkém stupni opravy chyb je možné uložit do zmíněného symbolu až 1,5 MB dat (binárně). Klad Data Matrix kódování spočívají ve velké schopnosti úspěšného čtení porušených symbolů. Vzhledem k velké hustotě zápisu je pak toto kódování vhodné pro umisťování na objekty s malou plochou a zároveň je ale stále možné zapisovat dostatečné množství informací [20].
QR kód Při tvorbě této kapitoly bylo využito zdrojů [11, 21, 22, 23]. QR (quick response – rychlá odezva) kód patří mezi nejmladší, ale zároveň nejdynamičtěji se rozvíjející kódovací způsoby v oblasti automatické identifikace. Autorem a vývojářem QR kódu je japonská firma Denso Wave a její parametry jsou určeny normou ISO/IEC18004 .
Obrázek č. 2: QR kód typu 513 Vzhled Obrázek 3.2 slouží pro ilustraci QR kódu. Jedná se o typ 5 (37 x 37 modulů) s použitím nejvyššího stupně kontroly H (až 30% celkového množství může být 13
http://zxing.appspot.com/generator/
22
opraveno). V symbolu je zakódován následující řetězec: „Masarykova univerzita – Fakulta informatiky“. Světlá přerušovaná čára okolo symbolu určuje jeho klidovou zónu (šířka 4 moduly). Kód má čtvercovou maticovou formu a opticky z něj vystupují 3 hlavní orientační (detekční) vzory, ohraničené vlastní klidovou zónou. Určují tak natočení celého symbolu a zároveň tvoří vrcholy matice kódu. Dle velikosti symbolu je pak v jeho struktuře vložen různý počet přídavných, zaměřovacích vzorů. Tvarově odpovídají detekčním vzorům, ale jsou zmenšeny a neobklopuje je klidová zóna. Posledními pomocnými obrazci jsou linie o šíři jednoho modulu, které spojují vrcholy klidových zón detekčních vzorů (tvoří tak obrazec podobný písmenu L). Díky všem těmto znakům je možné snímat kód pod úhlem nebo libovolně rotovaný bez újmy na výsledné přesnosti dekódování. Typy Pro QR kód je definováno 40 typů dle velikosti a 4 druhy dle stupně použitého korekčního algoritmu. Nejmenším typem je verze o šířce 21 modulů. Každý vyšší typ má stranu delší o 4 moduly a to až do velikosti 177 modulů/stranu. Maximální počet zakódovaných znaků pro verzi 40 a při použití nejnižšího možného stupně kontroly, se pohybuje okolo 3 MB (binárně), což je asi 4,3 tis. alfanumerických znaků. Módy Data mohou být do symbolů vkládána v různých formátech. Se změnou formátu se mění i datový prostor potřebný pro zakódování jednoho znaku. Použitý mód se určuje nastavením 4 bitového identifikátoru. •
Numerický (10 modulů pro 3 číslice), identifikátor 0001
•
Alfanumerický (11 modulů pro 2 znaky), identifikátor 0010
•
Bitový (8 modulů pro 1 znak), identifikátor 0100
•
Kanji14 (13 modulů pro 1 znak), identifikátor 1000
Numerický mód – jednotlivé číslice jsou rozděleny do skupiny po třech a jako číslo převedeny na svůj 10bitový ekvivalent dvojkové soustavy.
14
Kanji – systém znaků pro zapisování japonštiny
23
Alfanumerický mód – celkově je definováno 45 znaků, kterým je přiřazena číselná hodnota od 0 do 44. Kódovaný řetězec je rozdělen na skupiny po dvou znacích. Hodnota prvního znaku ze skupiny je vynásobena 45 a je k ní přičtena hodnota znaku druhého. Suma je převedena do 11bitového ekvivalentu dvojkové soustavy. Binární mód – klasický 8bitový zápis znaků ECC ECC – Error-correcting Code je kód, který umožňuje detekci a opravu chyb nastalých při záznamu dat. Při kódování řetězce jsou přidána redundantní data a takto utvořený záznam je uložen. Jakmile dojde k opětovnému čtení, vybere se pouze část s originálním řetězcem a za použití stejného algoritmu jsou k němu opět přidána redundantní data. Výsledek je následně porovnán s původním záznamem. Pokud nejsou oba objekty shodné, je možné nastalé chyby díky redundantním datům detekovat a opravit. ECC v QR kódech je založeno na Reed-Solomonovu algoritmu. [24]. Kontrolní úrovně (stupně) určují procentuální objem dat, který je možné při chybě opravit. •
Stupeň L (low - nízký) – 7%
•
M (medium - střední) – 15%
•
Q (quality - kvalitní) – 25%
•
H (high - vysoký) – 30%
Obsah Obsah je tvořen kódovými slovy, konstrukčními informacemi a k oběma skupinám je ještě nutné přidat korekční data dle zvolené kontrolní úrovně. Kódové slovo je tvořeno 8 moduly ve tvaru obdélníka 2 x 4. Vyplnění Do předem vybraného vzoru symbolu určitého typu (nutno brát v potaz objem kódovaných dat, zvolený znakový mód a úroveň ECC) jsou vloženy detekční a zaměřovací symboly. Následně jsou vyplněna data. Jednotlivá kódová slova se začínají vkládat do pravého spodního rohu (neobsahuje detekční vzor) a po24
stupně jdou vzhůru v proudu o šířce dvou modulů. Pořadí kódových slov ale neodpovídá původnímu řetězci a to z důvodu dělení skupin slov do bloků, za které jsou následně přiřazeny bloky korekčních slov, takže výsledný datový proud střídá datová a korekční slova. Pokud datový proud dojde k hranici klidové zóny nebo k oblasti vyhrazené pro formátovací údaje, změní směr zápisu o 180° a takto hadovitě pokračuje dále. Maska Jako předposlední krok je na datové pole použito masky. Její nasazení slouží k rovnoměrnějšímu a členitějšímu rozmístění černých a bílých modulů, které ve výsledku vede k lepší čitelnosti symbolu a zvyšuje tak úspěšnost čtení. Jako maska je definováno 8 vzorů. Při nasazení je vybírán ten s nejefektivnějším výsledným rozptýlením možných obrazců (nasadí se všech 8 typů a porovná se jejich efektivnost), které by mohla skenovací jednotka označit za detekční nebo zaměřovací. Pro aplikaci masky je použito logické operace exkluzivní disjunkce (XOR). Po nasazení masky jsou do oblastí okolo klidových zón detekčních vzorů vloženy důležité konstrukční informace – úroveň ECC, typ masky, velikostní typ (pouze u verzí 7-40) + korekční data.
3.4
RFID
Předchozí popsané druhy automatické identifikace vyžadovaly skenování dat v podobě kódových štítků. Informace tak byla předávána opticky. RFID – Radio Frequency Identification pro získání dat využívá tzv. tagů15 nebo čipů, které jsou umístěny na označovaných objektech. Komunikace probíhá bezdrátově, takže k objektům není nutný volný přístup a není vyžadována ani přímá viditelnost tagů (záleží na typu požitého zařízení). Maximální skenovací vzdálenost se liší dle použitých zařízení a pohybuje se mezi 30 centimetry až několika stovkami metrů (zde nejsou zahrnuty speciální případy, využívané zejména pro vojenské účely).
15
Tag – obecné označení štítku s nosnou informací
25
Celý princip je založen na komunikaci pomocí rádiových vln. Tagy obsahují integrovaný obvod a anténu, což jsou základní části RFID modulů. Čtečka těchto štítků opět obsahuje anténu, která navazuje se štítkem “spojení“ a následně přijímá emitovaná nebo upravená data, která předá počítači nebo je zobrazí na displeji [25]. Aktivní jednotky Aktivní tagy obsahují zdroj napájení a nejsou tak přímo závislé na čtecím zařízení. Tento druh tagů je určen pro monitorování objektů na větší vzdálenost (20 až 100 metrů) a emituje informace ve vyšším frekvenčním pásmu (455 MHz, 2.45 nebo 5.8 GHz). V rámci způsobu použití rozdělujeme aktivní tagy na dvě skupiny - Transponders a Beacons. Tagy spadající do první skupiny vyčkávají na dotaz čtecího zařízení a odpoví na něj posláním svého unikátního ID (platba mýtného, hraniční kontrola). Beacons (majáky) naopak vysílají informace neustále nebo v předem nastavených intervalech a nevyžadují tedy žádné iniciační aktivity od čtecího zařízení. Tento způsob je nejčastěji využíván pro lokaci vozidel a jiných mobilních objektů. Pasivní jednotky Čipy neobsahují zdroj napájení a jsou tak plně závislé na čtecích zařízeních. Pracují převážně v nízkých frekvenčních pásmech (124, 125 135 kHz), ale používány jsou i gigahertzové frekvence. Pro transfer dat mezi tagem a čtečkou je používáno dvou principů – indukčního a propagačního spojení. U obou principů je využito počátečního impulzu, kterým čtecí zařízení předá energii tagu a ten pak upraví vytvořené elektromagnetické pole nebo pozmění a “odrazí” příchozí signál [26].
3.5
Výběr označení
V předchozích podkapitolách byli představeni hlavní zástupci skupin AIDC modulů z důvodu pochopení jejich principu a následné možnosti objasnění výběru nejpříhodnějšího z nich, tedy QR kódu.
26
Díky mohutnému rozvoji “chytrých” mobilních telefonů nebyl výběr limitován použitím speciálních skenovacích přístrojů. Většina používaných mobilních platforem totiž disponuje aplikacemi, které jsou schopny skenovat optické symboly (Android - Barcode scanner16, Apple iOS – NeoReader17, Windows Phone – i-nigma18). Díky velkému rozlišení vestavěných fotoaparátů tak nejsou kladeny žádné překážky pro jejich použití. Mimo nesporné ekonomické úspory tohoto řešení jako klad vystupuje i fakt, že jsou mobilní operační platformy a jejich aplikace velmi žádané a zároveň podporované. Většina ze zmiňovaných kódů podléhá patentním právům, která ale nejsou vymáhána. Společnosti, které je vlastní, tímto krokem zajistily zdravé rozšíření a používání efektivního propagačního nástroje. Přidělování čárových kódů EAN zajišťuje sdružení GS1 Czech republic19. Důvody vedoucí k výběru QR kódu, resp. vyloučení ostatních kódů: •
Lineární kódy obecně umožňují rychlé a efektivní čtení obsažených dat. Datová obsažnost symbolů je však velmi malá a mimo kontroly parity neobsahují žádný nástroj pro kontrolu nebo opravu dat. Pro získání i základních informací o objektu by bylo nutné připojení k databázi, což nemusí být vždy dostupné nebo efektivní řešení.
•
RFID jako zástupce bezkontaktního řešení nabízí oproti ostatním kódům několik výhod. Tagy mohou být skenovány z větší vzdálenosti a na rozdíl od ostatních řešení prakticky nehrozí riziko jejich poškození. Velkými nevýhodami jsou ale pořizovací náklady – tagy obsahují integrovaný obvod, pro skenování je třeba využít speciálního zařízení a zavádění této technologie vyžaduje další náklady a hlavně zdlouhavé testování [27].
https://play.google.com/store/apps/details?id=com.google.zxing.client.android&hl=cs http://itunes.apple.com/us/app/neoreader/id284973754?mt=8 18 http://www.windowsphone.com/en-US/apps/828c4e78-1d2b-4fd2-ad22-fde9c553e263 19 http://www.gs1cz.org/ 16 17
27
•
Skládané kódy splňují většinu žádaných parametrů pro označení. Přesto Code 49 ani PDF417 nebyly vybrány. První zmiňovaný nedokáže uložit dostatečné množství dat (i když oproti 1D kódům došlo k signifikantnímu navýšení). PDF417 ovšem splňoval veškeré požadavky a navíc obsahoval korekční algoritmus umožňující obnovit velkou část poškozených nebo nekorektně vytištěných dat (poměrově lepší něž u QR kódu). Jedná se ale o relativně “čerstvý“ druh kódu. Není k němu dostatek informací a není tak často nasazován a tudíž znám.
•
2D kódy již při počátečním výběru díky svým vlastnostem jasně převyšovaly ostatní druhy kódů. Stejně tak QR kód svými parametry předčil ostatní zmíněná řešení. Mimo to, že umožňuje uložit největší množství dat, obsahuje kontrolní a korekční algoritmy, je škálovatelný a je možné zvolit druh vložených dat, tak je hojně využíván pro marketingové účely. Z toho vyplývá obecná podpora kódu (tvorba knihoven, aplikací, generátorů) a snadné nasazení a použití.
28
4
OS Android
OS Android je součástí programového balíku určeného pro mobilní zařízení. Iniciálně tento balík obsahuje zmíněný operační systém, middleware a základní aplikace. Operační systém je postaven na linuxovém jádře, které definuje důležitou vlastnost celého projektu - přenositelnost. Systém je proto možné aplikovat na zařízení, která jsou osazena různými chipsety20 nebo disponují odlišnými velikostmi a rozlišeními svých displejů [28]. Základy projektu Android vznikly v roce 2003, jak bude představeno dále v kapitole. Přesto se však během několika málo let dokázal dostat do popředí světového zájmu a nakonec bezkonkurenčně ovládl trh s operačními systémy mobilních telefonů. Dle agentury Gartner činí jeho podíl na trhu 50,9 % (poslední čtvrtletí roku 2011) [29].
4.1
Historie
Založení společnosti Android proběhlo ve Spojených státech amerických v roce 2003 s plánem zabývat se vývojem softwaru pro mobilní telefony. O dva roky později byla společnost koupena internetovým vyhledávacím gigantem – společností Google. Jelikož ještě nebyla společnost Android na trhu známá a nepředstavila žádné převratné řešení, lze uvažovat o promyšleném a plánovaném kroku spol. Google v jejím budoucím směřování a rozšiřování pole své působnosti. Další vývoj tuto domněnku potvrdil [30]. Na konci roku 2007 bylo založeno konsorcium společností Open Handset Alliance, které si vytyčilo několik cílů. V prvé řadě vytvořit standardy pro otevřenou mobilní platformu, podporovat vývoj a inovaci mobilních telefonů a zajistit za nižší ceny kvalitnější služby zákazníkům. Open Handset Alliance je složena ze společností, které se zabývají mobilní komunikací nebo vývojem programů a zařízení pro její uskutečnění [31].
20
•
Mobilní operátoři – T-Mobile, Telefonica, Vodafone,…
•
Výrobci mobilních zařízení – Asus, Dell, HTC, LG,…
Chipset – sada čipů zajišťující datový provoz mezi komponentami zařízení
29
•
Výrobci polovodičů – Intel, nVIDIA, Qualcomm,…
•
Vývojáři programů – Google, eBay, ACCESS,…
•
Vydavatelské společnosti (software) – Sasken, TAT,…
Ihned po založení konsorcia došlo k vydání Android SDK (Software Development Kit). SDK představuje skupinu nástrojů pro tvorbu a vývoj Android aplikací.
4.1.1 Verze systému Od roku 2008, kdy byla vydána první verze mobilního operačního systému Android, bylo vytvořeno více než deset nových a vylepšených verzí (zmíněny jsou zde pouze ty podstatné) [32, 33, 34, 35]. Android 1.0 (Angel Cake) První otevřený mobilní operační systém, integrovány Google služby, webový prohlížeč, multitasking. Pro získání aplikací a jejich aktualizaci spuštěn Android Market21. Android 1.5 (Cupcake) Vylepšena funkce fotoaparátu, nová softwarová klávesnice, přímé propojení s YouTube a Picasou. Android 1.6 (Donut) Vyhledávací řádek + hlasové hledání, nový indikátor stavu baterie, vestavěná foto a video galerie. Android 2.0/2.1 (Eclair) Verze 2.1 byla vydána ve velmi krátké době po vydání 2.0, proto jsou sloučeny. Synchronizace kontaktů, podpora více Google účtů, nové funkce kalendáře. Android 2.2 (Froyo) Podpora klávesnice ve více jazycích, možnost vytvoření Wi-Fi hotspotu, umožněno ukládání aplikací na SD kartu.
Android Market – původní portál pro získávání aplikací; přejmenováno a centralizováno na Google Play 21
30
Aplikace OdpadyQR byla psána a testována pro verzi Android 2.2.1 (API 8). Vývoj a testování proběhlo na telefonu Samsung Galaxy Mini. Z průzkumu, který byl ukončen k 1. květnu 2012, vyplývá, že uživatelé verze Froyo představují téměř 21% z celkového počtu uživatelů, kteří během čtrnácti dní navštívili službu Google Play (dříve Android Market). Shodnou nebo vyšší verzí operačního systému pak disponuje 93,5% těchto uživatelů [36]. Pro zajištění co největšího možného využití aplikace byla zvolena právě tato verze. Android 2.3 (Gingerbread) Podpora NFC22, aplikovány změny v uživatelském prostředí pro zjednodušení a zrychlení interakce, možnost internetového volání. Testování aplikace proběhlo i na této verzi (přesněji 2.3.7) za použití chytrého telefonu HTC Desire Z. Android 3.0 (Honeycomb) Optimalizováno pro tablety a zařízení s velkými displeji – nová klávesnice, úprava aplikací a vzhledu, vylepšen multitasking. Android 4.0 (Ice Cream Sandwich) Aktuální verze 4.0 doznala velkého množství převážně malých změn, které ale řešily časté stížnosti uživatelů. Možnost pořízení screenshotu, změny velikosti widgetů23. Díky kompatibilitě nových verzí systému Android s aplikacemi psanými pro nižší úrovně API, byla aplikace OdpadyQR úspěšně otestována na dvou nejnovějších verzích 4.0.3 a 4.0.4. Pro testování bylo využito opět mobilního telefonu HTC Desire Z pro nižší a nově LG Optimus 2x P990 pro vyšší verzi.
4.2
Vývoj aplikací pro Android
Otevřenost operačního systému Android se mimo jiné zobrazuje i v možnostech pro tvorbu aplikací. Pro jejich vývoj je vytvořeno prostředí, které umožňuje tvorbu aplikací jak začátečníkům, tak zkušeným uživatelům bez jakýchkoli
NFC (Near Field Comunnication) – rádiová komunikace mezi dvěma zařízeními na velmi krátkou vzdálenost. Umožňuje přenos dat nebo bezkontaktní platbu [38]. 23 Widget – aktivní ikona na pracovní ploše (zobrazuje např. poznámky, hodiny, stav baterie) 22
31
omezení. Téměř ve všech případech je pro tvorbu aplikací využíváno mírně upraveného programovacího jazyku Java. Nejsnadnějším způsobem pro vývoj aplikací je instalace ADT (Android Development Tools) pluginu do vybraného IDE (Integrated Development Environment – Vývojové prostředí). ADT modul umožňuje tvorbu a ladění aplikací a jejich následný export do formátu .apk. APK (Aplication Package File) představuje balík, který zahrnuje všechny zdrojové soubory aplikace a umožňuje tak následnou instalaci aplikace na koncovém zařízení. Ošetřit vzhled i funkčnost vytvářené aplikace lze jejím nainstalováním a otestováním na konkrétním mobilním telefonu nebo využitím virtuálního zařízení AVD (Android Virtual Device). Virtuální jednotka je vhodná pro snadné testování aplikace na různých verzích OS Android při emulování přesných typů chytrých telefonů.
4.3
Architektura aplikace v OS Android
V podkapitolách jsou popsány základní součásti aplikací v OS Android. Většina názvů je ponechána v angličtině, protože český překlad obecně není zaveden a působil by uměle. Pokud je možné překlad použít, vždy je nejprve seznámeno s originálním označením a následně je využíváno přeloženého termínu [39, 40].
4.3.1 Activities Aktivity jsou základním stavebním prvkem aplikací. Každá z nich představuje jednu obrazovku (velikost aktivity ale nemusí nutně vyplňovat celou plochu displeje) a slouží jako vizuální výstup i uživatelský vstup do aplikace. Jednotlivé aktivity mohou volat a spouštět aktivity jiné (a to i mimo vlastní aplikaci) a obecně není vhodné, aby aktivita zajišťovala více různých činností (zobraz email, pošli email, zobraz seznam kontaktů). Každá činnost by měla mít svoji aktivitu, která by ji vykonala a následně předala řízení některé z dalších aktivit aplikace. Princip funkce aktivity je zřejmý z jejího životního cyklu. Prvotním krokem je její spuštění. Tento krok vyžaduje nezanedbatelné výpočetní náklady (často vytvoření nového procesu, alokace paměti, načtení definovaných objektů) a není 32
proto ekonomické jej kompletně zrušit poté, co uživatel přejde do jiné obrazovky. Cyklus řídí Activity Manager. Jakmile je spuštěna, může nabývat čtyř různých stavů: •
Running – činná aktivita aktuálně zobrazená na popředí.
•
Paused – aktivita je částečně překryta jinou událostí, ale je stále viditelná (např. aktivovaná poznámka z kalendáře, upozornění na SMS). Paused aktivita je stále spuštěna a má vyčleněn přístup k paměti, ale neinteraguje s uživatelem.
•
Stopped – aktivita není viditelná, ale přesto má stále vyhrazen prostor v paměti. V případě uživatelova zájmu může být restartována (menší operační náklady než nové spouštění).
•
Destroyed – stav aktivity po odebrání z paměti.
4.3.2 Content providers Content providers umožňují přistupovat k datům ostatních aplikací. V OS Android jsou data aplikace absolutně izolována od okolních aplikací, které k nim samy o sobě nemohou přistupovat. Content providers data aplikacím zpřístupní pro čtení i zápis, mají-li nastavená práva k přístupu.
4.3.3 Services Services představují komponenty, které jsou dlouhodobě spuštěny na pozadí, kde vykonávají svoji činnost. S uživatelem nejsou propojeny žádnou přímou interakce. Příkladem může být přehrávání hudby, které nekončí, i když uživatel přešel do jiné aplikace.
4.3.4 Intents Intents zajišťují přenos informací (zpráv) mezi základními komponentami. Určují, která z aktivit bude v daném čase aktivní, spouštějí Services a celkově tak propojují komponenty.
33
4.3.5 Android Manifest Každá vytvořená aplikace musí obsahovat xml soubor AndroidManifest.xml a to ve svém kořenovém adresáři. Android Manifest obsahuje esenciální informace, které definují celou aplikaci a slouží jako její průvodní list. Operační systém na základě těchto informací umožní spuštění a provedení kódu aplikace, které by jinak nebylo možné. Soubor poskytuje seznam použitých komponent aplikace – Activities, Services, Content providers a specifikuje jejich vlastnosti. Tato deklarace umožňuje systému zjistit, jaké prvky jsou použity a za jakých podmínek mohou být spuštěny. Pro samotný přístup k těmto komponentám a pro možnost distribuce aplikace, definuje manifest jméno java balíčku, které se tak stává jeho unikátním označením. Mimo popis komponent je nutné, aby tvůrce aplikace v manifestu definoval Permissions (Povolení). Povolení umožňuje aplikaci získat přístup k chráněným částím API, které potřebuje pro svoji činnost. Pro definování možnosti přístupu ostatních aplikací k součástem vyvíjené aplikace slouží opět další sada Povolení. <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Zdrojový kód č. 1: Povolení síťového přístupu a zápisu dat Pro zajištění funkčnosti aplikace je třeba v manifestu ještě definovat minimální úroveň API, kterou aplikace využívá.
34
5
Návrh a implementace
Tato kapitola popisuje návrh a implementaci základních části (tříd) aplikace OdpadyQR. Původní zadání bakalářské práce bylo po dohodě s vedoucím v rámci implementační části rozšířeno. K mobilní aplikaci, která doznala funkčních změn a byla obohacena o další možnosti, byla přidána implementace webového rozhraní (Zadávací systém) sloužící pro zadávání zjednodušených evidenčních listů a generování šifrovaného QR kódu. Systém pak zajišťuje přenos dat mezi databází evidenčních listů a mobilní aplikací. Podrobnější informace o přidaných funkcích aplikace a o zadávacím systému jsou umístěny v následujících podkapitolách.
5.1
Aplikace OdpadyQR
Moderní technologie v podobě chytrých mobilních telefonů jsou v současnosti dostupné komukoli a kdekoli. S oblíbeností datových tarifů a díky velkému pokrytí pracovišť Wi-Fi signálem ještě roste funkční síla těchto zařízení. Této skutečnosti jsou si dobře vědomi jak sami uživatelé, tak poskytovatelé nejrůznějších služeb, kteří se snaží vytěžit z tohoto stavu maximum (viz aplikace Foursquare24). Paradoxem zůstává fakt, že nasazení chytrých telefonů v rámci mobility pracovní pozice (vyjma běžného telefonování a připojení k internetu) se teprve chystá [41]. Aplikace OdpadyQR byla primárně vytvořena pro jednoduchou, ale efektivní identifikaci nádob s nebezpečným odpadem. Zároveň se snaží poukázat na možnosti nasazení chytrých telefonů v pracovním procesu a využít jejich schopností pro činnosti spojené s výkonem různých pozic.
5.1.1 Use Case Diagram Aby byla aplikace vhodná pro použití v pracovním prostředí, musí naplnit požadovanou funkcionalitu a zároveň umožnit snadné ovládání. Pro specifikaci systému bylo využito Use Case diagramu.
https://foursquare.com/ - služba, která umožňuje sdílet poznatky o navštívených místech (restaurace,…) na základě polohy 24
35
Obrázek č. 3: Use Case diagram aplikace OdpadyQR Při všech případech užití (Use Cases) je aktérem uživatel aplikace. UC: Zobraz stručný evidenční list Uživateli je po vyfocení kódu zobrazen stručný evidenční list, který obsahuje evidenční číslo, jméno původce odpadu a název a kód odpadu. UC: Zobraz evidenční list Uživateli je po vyfocení kódu zobrazen evidenční list, který obsahuje všechny položky stručného ev. listu a poznámku či specifikaci v případě, že byla nějaká vytvořena. Pro toto zobrazení musí být uživatel připojen k internetu. UC: Zobraz rodičovský evidenční list Pokud vznikl ev. list jako potomek jiných evidenčních listů, je tento rodičovský ev. list uživateli zobrazen.
36
UC: Ulož evidenční list Uloží evidenční list do seznamu evidenčních listů. Jednotlivé evidenční listy jsou řazeny dle data uložení. UC: Zobraz seznam uložených evidenčních listů Uživateli je zobrazen seznam ev. listů. Pokud žádný evidenční list nebyl uložen, je zobrazen prázdný seznam. UC: Zobraz uložený evidenční list Pokud byl nějaký ev. list uložen, je po vybrání ze seznamu uživateli zobrazen. K tomuto zobrazení není potřeba připojení k internetu. UC: Smaž seznam evidenčních listů Smaže veškeré uložené evidenční listy. UC: Zobraz nápovědu Uživateli je zobrazena nápověda a kontakt na tvůrce.
5.1.2 Popis a implementace Aplikace je sestavena z šesti tříd. Pět z nich rozšiřuje základní třídu Activity a tvoří tak jednotlivé obrazovky uživatelského rozhraní. Poslední třída Utils.java sdružuje metody používané ostatními aktivitami.
Obrázek č. 4: Aplikace OdpadyQR
37
Úvodní obrazovka zastoupená třídou OdpadyQRActivity.java slouží jako rozcestník. Pro zobrazení informací o nádobě s nebezpečným odpadem může uživatel vybrat buď první, nebo druhé tlačítko. Výběr je závislý na tom, zda stačí zobrazit pouze základní údaje bez nutnosti připojit telefon k internetu (primárně obsluha dopravního zařízení, skladník v meziskladu) nebo je potřeba zjistit detailní informace jak o obsahu nádoby, tak o jeho původci (obsluha spalovny). Toto rozdělení ale není striktní a obecně může veškerou funkcionalitu aplikace využít kterýkoli ze jmenovaných zaměstnanců. Detailními daty jsou pak myšleny poznámka a specifikace, které jsou pro snadnější ilustraci popsány v podkapitole 5.2.2. Pro vyfocení QR kódu a získání v něm obsažených dat je volána aplikace Barcode scanner.25 Pomocí intentu jsou získaná data předána zpět aktivitě, která je dále zpracuje. Přímé využití aplikace vs. knihovny Při výběru způsobu, jakým zajistit zjištění obsahu QR kódu, byly k dispozici dvě hlavní možnosti. Obě z nich zahrnovaly využití volně dostupných produktů společnosti Google – aplikaci Barcode scanner nebo knihovnu ZXing26. Nakonec bylo zvoleno přímého volání aplikace, což bylo na mnoha různých portálech doporučováno přímo tvůrci celého projektu2728. Obsah uživatelem generovaných QR kódů je chráněn proti neoprávněnému přečtení šifrováním založeným na Caesarově šifře29. Tato metoda byla zvolena tak, aby výsledek šifrování byl opět textem. Tato podmínka vyplývá ze zkušenosti, při které jsem zjistil, že použité API na vytváření QR kódů není uzpůsobena pro práci s binárními daty. Dešifrování zajišťuje metoda decode().
Dostupná na https://play.google.com/store/apps/details?id=cn.menue.barcodescanner&hl=cs http://code.google.com/p/zxing/ 27http://stackoverflow.com/questions/9939351/android-qr-scanner-reader-app-standalonewithout-having-to-install-zxing-app-i 28http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-yourandroid-app-natively-using-eclipse/ 29 Caesarova šifra – předem je pevně stanovena uspořádaná množina znaků (abeceda) a šifrovací klíč (resp. znak, kterým bude začínat šifrovací abeceda). Data jsou zakódována cyklickým posunutím pořadí znaků o zvolenou velikost klíče. 25 26
38
private String decode(String str){ byte[] encKey = {1,20,15,7}; if (str == null) return null; char[] arr = str.toCharArray(); for (int i=0; i<arr.length; i++){ if(arr[i] >= 32 && arr[i] <= 126){ arr[i] = (char) ((arr[i]-32+encKey[i % encKey.length]) % 94+32); } } return new String(arr); }
Zdrojový kód č. 2: Dešifrovací metoda decode() Data získaná z QR kódu jsou uložena do pole znaků, které je iterativně procházeno. Pokud ASCII hodnota znaku náleží do intervalu <32,126>, jedná se o zakódovaný znak (pokud znak nespadá do vymezeného intervalu, přejde se ihned na znak další). V takovém případě se přistupuje k dešifrování. Nejprve je získána pozice dešifrovacího klíče uvnitř pole klíčů. Její hodnota je vypočítána jako zbytek po dělení hodnoty pozice dešifrovaného znaku v poli délkou množiny klíčů. Hodnota klíče na této pozici je přičtena k ASCI hodnotě zašifrovaného znaku zmenšeném o 32. K této hodnotě je určen zbytek po dělení 94. Výsledek je ještě navýšen o hodnotu 32, přetypován zpět na znak a přepisem uložen na pozici původního zašifrovaného znaku. Výstupem dešifrovací funkce je opět řetězec znaků, který je skrze intent předán další aktivitě. Pokud uživatel zvolil zobrazení stručných informací, dešifrovaný řetězec bude rozdělen parsovací funkcí parseText() třídy ShowText.java a vypsán na obrazovku. Při požadavku získat detailní informace je z dešifrovaného řetězce vybrán vložený index a otevřeno spojení k Zadávacímu systému. Systém zašle na základě předaného indexu dotaz do centrální databáze a získaná data pošle zpět. Jestliže si uživatel uložil evidenční list/y, stiskem třetího tlačítka na hlavní obrazovce se dostane k seznamu uložených evidenčních listů a z nichž si může libovolný list vybrat a zobrazit.
5.1.3 Testování Hlavní testování probíhalo na mobilním telefonu Samsung Galaxy Mini s verzí operačního systému 2.2.1 (Froyo). Základem bylo prověřit funkčnost celé aplikace – určit, zda činnost všech ovládacích prvků odpovídá návrhu a zda je za-
39
chováno přehledné a funkční uspořádání všech těchto prvků při změně orientace telefonu. Dále byly testovány reakce aplikace v různých nestandardních stavech - nenainstalovaná aplikace Barcode scanner, nedostupnost internetového připojení a skenování nesprávného QR kódu. Tyto situace byly ošetřeny tak, aby uživatel získal informace o problému a mohl jej vyřešit (vypsáním chybových a informačních zpráv). Obojí testované oblasti neodhalily chybu nebo špatnou funkčnost aplikace.
5.2
Zadávací systém
Pro zadání nebo specifikaci evidenčních listů bylo vytvořeno webové rozhraní, které tuto funkcionalitu zahrnuje. Uživateli je umožněno zobrazovat a přidávat evidenční listy, ke kterým lze vygenerovat odpovídající QR kód. Data pro obsah QR kódů jsou založena na vytvořených evidenčních listech, jejichž údaje jsou zašifrovány a následně odeslány na Google API30, které provede tvorbu samotného QR kódu. Ten je zobrazen formou obrázku. Pro tvorbu systému bylo použito programovacího jazyka php, html a jazyka pro tvorbu stylů css. Soubor common.php slouží pro připojení k databázi a ošetření dat, aby mohla být bezpečně zadána do databáze nebo zobrazena v html stránce. List.php zobrazuje seznam zadaných evidenčních listů. Get.php posílá detailní data o evidenčním listu aplikaci dle zadaného id. GenQR.php dle stejného id vytvoří QR kód obsahující základní informace o odpadu. New.php slouží jako formulář pro zadání a uložení nového evidenčního listu. Při vytváření nového listu mohou být nastaveni jeho rodiče (důsledek mísení odpadů).
30
https://developers.google.com/chart/infographics/docs/qr_codes?hl=cs
40
5.2.1 Use Case diagram
Obrázek č. 5: Use Case diagram Zadávacího systému UC: Vytvoř evidenční list Aktér: Původce odpadu Původce před začátkem přepravy odpadu zadá informace do webového formuláře a vytvoří tak nový evidenční list. UC: Zobraz evidenční list Aktér: Původce odpadu i Obsluha spalovny Výběrem ze seznamu evidenčních listů jsou zobrazeny informace o konkrétním evidenčním listu. UC: Zobraz seznam evidenčních listů Aktér: Původce odpadu i Obsluha spalovny Veškeré zadané evidenční listy budou zobrazeny a to v pořadí, v jakém byly do systému zadány. Každý evidenční list v seznamu je jednoznačně určen svým evidenčním číslem.
41
UC: Přidej poznámku Aktér: Obsluha spalovny Pokud se při závěrečném procesu nakládání s nebezpečným odpadem vyskytne problém, obsluha spalovny jej vloží do systému. Poznámka se váže ke kombinaci původce a druhu odpadu. UC: Vygeneruj QR Aktér: Původce odpadu i Obsluha spalovny Vygenerovat QR kód může aktér v případě, že je započata přeprava, došlo ke smísení odpadu nebo k poškození či ztrátě stávajícího označení. V těchto případech aktér vybere evidenční list dle jeho čísla a nechá vygenerovat QR kód, který v rámci bezpečnosti obsahuje šifrované informace.
Obrázek č. 6: Zadávací systém Zadávací systém je umístěn na školním webovém prostoru na adrese http://www.fi.muni.cz/~xjurane2/.
42
5.2.2 Databáze
Obrázek č. 7: Entitně relační diagram Poznámka Každý původce odpadu může mít přiřazenu poznámku. V poznámce jsou reflektovány předchozí získané poznatky o původci a odpadu (v případě, že již spalovna v minulosti přijala ke zpracování jím produkovaný odpad). Obsah poznámky se tedy obecně vztahuje ke druhu odpadu od určitého původce a je doprovázen datem přidání. Obsluha spalovny tak může zjistit, zda byl v minulosti s odpadem od tohoto původce nějaký problém a dle toho dále postupovat. Specifikace Specifikace definuje dodatečné informace (zvýšený obsah některé z látek, apod.) k jednotlivým nádobám s odpadem (nikoli druhům odpadů). Tyto údaje jsou zadávány při expedici odpadů od původce a opět slouží obsluze k nastavení potřebných podmínek při závěrečném zpracování odpadu. Specifikace se váže k odpadu umístěnému v evidenčním listu. Databáze je umístěna v rámci školního databázového účtu MySQL na adrese db.fi.muni.cz pod loginem xjurane2 a jménem databáze dbxjurane2.
43
6
Závěr
V oblasti inzerce a marketingu došlo ke spojení dvou moderních technologií – chytrých telefonů a modelů automatické identifikace a záznamu dat. Na mnoha plakátech se objevují černobílé maticové kódy, které jsou cíleny především na mladé uživatele moderních technologií. Z výzkumu společnosti Nellymoser31 vyplývá, že od května roku 2011 více než 90 % ze stovky nejoblíbenějších časopisů ve Spojených státech amerických alespoň jednou vydalo výtisk obsahující QR kód pro marketingové účely [42]. Tato fůze mne inspirovala při volbě prostředků v rámci řešené problematiky označování nádob s nebezpečnými odpady. Pro vytvoření bakalářské práce jsem se pak s oběma těmito oblastmi seznámil. Jako velmi cennou považuji zkušenost s programováním aplikací pro OS Android, která pro mě byla zcela novou. Seznámení s modely automatické identifikace propojilo některé mé znalosti z průběhu studia a ukázalo tak jejich velké možnosti pro praktické využití. Výstupem práce je aplikace OdpadyQR pro chytré mobilní telefony, které jsou osazeny operačním systémem Android. Aplikace využívá zmíněné technologie pro označení a automatickou identifikaci a díky propojení s databází přes webové rozhraní umožňuje získat pomocí jediné fotky aktuální informace o zkoumaném objektu. Aplikace je plně funkční a otestována byla na několika typech telefonů i verzí OS Android (viz část 5.1.3). Do budoucna bych chtěl vylepšit vzhled aplikace i webového rozhraní, které jsou po této stránce pouze na základní úrovni. Další možností vývoje aplikace, kterou bych chtěl implementovat, je funkcionalita zadání nového evidenčního listu přímo prostřednictvím mobilního telefonu. U webového rozhraní je pak mým cílem přidat zabezpečovací prvky a zavést uživatelské účty.
31
http://www.nellymoser.com/
44
7
Literatura
[1]
World population [online]. 2012 [cit. 14. 5. 2012]. Dostupné z WWW: .
[2]
První odpadové nařízení vlády z roku 1939 [online]. 2003-2012 [cit. 14. 5. 2012]. Dostupné z WWW: .
[3]
Právní úprava využívání odpadů v ČR v historických souvislostech [online]. 2012 [cit. 15. 5. 2012]. Dostupné z WWW: .
[4]
Zákon ze dne 15. května 2001 o odpadech a o změně některých dalších zákonů [online]. 1999-2012 [cit. 15. 5. 2012]. Dostupné z WWW: .
[5]
Automatic Identification and Data Capture Techniques - an overview [online]. 20022012 [cit. 8. 5. 2012]. AIDC Technologies. Dostupné z WWW: .
[6]
BELLIS, Mary: Bar Codes - What is bar code? The history of bar code. [online]. 2012 [cit. 8. 5. 2012]. Dostupné z WWW: .
[7]
ADAMS, Russ. A Short History Of Bar Code [online]. 1995-2012, poslední revize 19. 1. 2012 [cit. 8. 5. 2012]. Dostupné z WWW: .
[8]
Čárový kód [online]. Čárový kód – automatická identifikace. [cit. 8. 5. 2012]. Dostupné z WWW: .
[9]
How Barcode Scanners Work [online]. 2012 [cit. 8. 5. 2012]. Dostupné z WWW: .
[10]
EAN 13 [online]. 2007, poslední revize 19. 5. 2010 [cit. 8. 5. 2012]. Dostupné z WWW: .
[11]
RAJ, A. S. Bhaskar. Bar codes: technology and implementation. 5th ed. [revised, updated, and expanded]. New Delhi: Tata McGraw-Hill Publ. Co, 2001, viii, [cit. 9. 5. 2012]. 460 s. ISBN 978-007-4638-491.
45
[12]
A list of the the Most Common Barcode Types We Produce TO GS1 International Standards [online]. 2012 [cit. 8. 5. 2012]. Dostupné z WWW: .
[13]
Barcode quide [online]. 2012 [cit. 10. 5. 2012]. Dostupné z WWW: .
[14]
UPC-A Specification [online]. 2004 - 2010, poslední revize 29. 5. 2008 [cit. 10. 5. 2012]. Dostupné z WWW: .
[15]
UPC-A Specification [online]. 2010 [cit. 8. 5. 2012]. Dostupné z WWW: .
[16]
Specifications For Popular 2D Bar Codes [online]. 2010 [cit. 9. 5. 2012]. Dostupné z WWW: .
[17]
PALMER, Roger C. The bar code book: a comprehensive guide to reading, printing, specifying, evaluating, and using bar code and other machine-readable symbols. 5th ed. [revised, updated, and expanded]. Victoria: Trafford, 2007, viii, [cit. 9. 5. 2012] 460 s. ISBN 978-1-4251-3374-0.
[18]
Overview: 2D Barcode Symbologies [online]. [cit. 11. 5. 2012]. Dostupné z WWW: .
[19]
Aztec Code [online]. 2012, poslední revize 27. 4. 2012 [cit. 9. 5. 2012]. Dostupné z WWW: .
[20]
Data Matrix Barcode ISO/IEC 16022 FAQ [online]. 2012 [cit. 11. 5. 2012]. Dostupné z WWW: .
[21]
Barcode information - 2D types [online]. 2010 [cit. 12. 5. 2012]. Dostupné z WWW: .
[22]
QR Code System Configuration [online]. 2000-2010 [cit. 12. 5. 2012]. Dostupné z WWW: .
[23]
HORÁČEK, Tomáš. Knihovna pro generování čárových kódů. Brno, 2011. 59 s. Bakalářská práce na Fakultě informačních technologií Vysokého učení technického [online]. [cit. 12. 5. 2012]. Dostupné z WWW: .
46
[24]
MARTINEZ, Rene. ECC (error correction code or error checking and correcting) [online]. 2000-2012, poslední revize 1. 9. 2005 [cit. 12. 5. 2012]. Dostupné z WWW: .
[25]
What is RFID? [online]. 2002-2012 [cit. 13. 5. 2012]. Dostupné z WWW: .
[26]
The Basics of RFID Technology [online]. 2002-2012 [cit. 13. 5. 2012]. Dostupné z WWW: .
[27]
The Basics of RFID Technology [online]. 2002-2012 [cit. 9. 5. 2012]. Dostupné z WWW: .
[28]
What is Android? [online]. 2012, poslední revize 9. 5. 2012 [cit. 9. 5. 2012]. Dostupné z WWW: .
[29]
GOASDUFf Laurence; PETTEY Christy. Gartner Says Worldwide Smartphone Sales Soared in Fourth Quarter of 2011 With 47 Percent Growth [online]. 2012, poslední revize 15. 2. 2012 [cit. 14. 5. 2012]. Dostupné z WWW: .
[30]
ELGIN, Ben. Google Buys Android for Its Mobile Arsenal [online]. 2005, poslední revize 17. 8. 2005 [cit. 14. 5. 2012]. Dostupné z WWW: .
[31]
Overview – Open Handset Alliance [online]. [cit. 14. 5. 2012]. Dostupné z WWW: .
[32]
KILIÁN, Karel. Historie operačního systému Android a jeho verzí v kostce [online]. 2011, poslední revize 29. 8. 2011 [cit. 14. 5. 2012]. Dostupné z WWW: .
[33]
[x]cubelabs. The Android Story [online]. 2011 [cit. 14. 5. 2012]. Dostupné z WWW: .
[34]
MARVAN, F ilip. Mobilní operační systém Android [online]. 1998-2012, poslední revize 27. 7. 2011 [cit. 14. 5. 2012]. Dostupné z WWW: .
[35]
Velký přehled verzí operačního systému Android [online]. 2011-2012 [cit. 14. 5. 2012]. Dostupné z WWW: .
47
[36]
Platform Versions – Android Developers [online]. 2012 [cit. 18. 5. 2012]. Dostupné z WWW: .
[37]
RFID – prozkoumejte využití technologie budoucnosti (vědecké okénko) [online]. 20012012 [cit. 14. 5. 2012]. Dostupné z WWW: .
[38]
NFC – prozkoumejte využití technologie budoucnosti (vědecké okénko) [online]. 2011 [cit. 14. 5. 2012]. Dostupné z WWW: .
[39]
Application Fundamentals [online]. 2012, poslední revize 9. 5. 2012 [cit. 18. 5. 2012]. Dostupné z WWW: .
[40]
Learning Android: Chapter 4. Main Building Blocks [online]. 2011 [cit. 18. 5. 2012]. Dostupné z WWW: .
[41]
PASTUCHOVÁ, Markéta. Firmy nasazují mobilní technologie ve velkém měřítku [online]. 2012, poslední revize 6. 3. 2012 [cit. 19. 5. 2012]. Dostupné z WWW: .
[42]
Curious Consumers Begin Scanning QR Codes[online]. 2012, poslední revize 17. 1. 2012 [cit. 19. 5. 2012]. Dostupné z WWW: .
48
8
Přílohy
Na vloženém CD jsou tyto přílohy: •
Text práce (.pdf, .docx)
•
Zdrojové kódy aplikace OdpadyQR (.rar)
•
Instalační soubor aplikace OdpadyQR.apk
•
Zdrojové soubory Zadávacího systému (.rar)
•
Zdrojový soubor databáze dbxjurane2.sql
49