ZÁVĚREČNÁ STUDIJNÍ PRÁCE dokumentace
Dokumentační systém pro Android Marek Kovalčík
Obor:
18-20-M/01 INFORMAČNÍ TECHNOLOGIE se zaměřením na počítačové sítě a programování
Třída:
IT4
Školní rok:
2015/2016
PODĚKOVÁNÍ Rád bych poděkoval Mgr. Marku Lučnému za cenné rady, věcné připomínky a vstřícnost při konzultacích a vypracování závěrečné studijní práce.
Prohlašuji, že jsem závěrečnou práci vypracoval samostatně a uvedl veškeré použité informační zdroje. Souhlasím, aby tato studijní práce byla použita k výukovým účelům na Střední průmyslové a umělecké škole v Opavě, Praskova 399/8. V Opavě
30. 12. 2015 podpis autora práce
2
ABSTRAKT Cílem tohoto projektu bylo vytvořit mobilní aplikaci pro platformu Android, která bude napsána v jazyce Java a bude komunikovat s databází MySQL umístěnou na vzdáleném serveru. Zvolená problematika byla řešena pomocí vývojového prostředí Android Studio. V řešení bylo použito několika PHP skriptů umístěných na webovém hostingu, které se napojují na danou databázi a obsah tabulek databáze vypisují do souboru JSON. Data z tohoto souboru jsou zpracovávána pomocí tříd a metod v Javě. Po zpracování souboru JSON se data zobrazují, dají se mazat, editovat a nechybí přidání nového záznamu s možností přidat obrázek skrze mobilní fotoaparát. Tyto možnosti se zobrazí až po úspěšném přihlášení registrovaného uživatele. Obrázky jsou převáděny do formátu BASE-64 a ukládány do databáze jako řetězec, díky čemuž se lépe pracuje s textovým souborem JSON.
3
OBSAH OBSAH ................................................................................................................................................................................4
ÚVOD .................................................................................................................................... 6 1
TEORETICKÁ A METODICKÁ VÝCHODISKA ................................................ 7 1.1
2
SYSTÉM PRO SPRÁVU DOKUMENTŮ ......................................................................... 7
VYUŽITÉ TECHNOLOGIE .................................................................................... 8 2.1 ANDROID STUDIO & JAVA .............................................................................. 8 2.1.1 ANDROID STUDIO ...................................................................................... 8 2.1.2 PROGRAMOVACÍ JAZYK JAVA............................................................... 8 2.2 DATABÁZE MYSQL & PHPMYADMIN ........................................................... 8
3
2.3
PHP........................................................................................................................ 9
2.4
JSON ..................................................................................................................... 9
2.5
EMULÁTORY .................................................................................................... 10
ZPŮSOBY ŘEŠENÍ A POUŽITÉ POSTUPY ....................................................... 11 3.1 DATABÁZE MYSQL ......................................................................................... 11 3.1.1 STRUKTURA TABULEK .......................................................................... 11 3.2 PHP SKRIPTY .................................................................................................... 11 3.2.1 PŘIPOJENÍ K DATABÁZI ......................................................................... 11 3.2.2 PŘIHLÁŠENÍ UŽIVATELE ........................................................................ 13 3.2.3 PŘIDÁNÍ ZÁZNAMU DO DATABÁZE .................................................... 13 3.2.4 EDITACE ZÁZNAMU V DATABÁZI ....................................................... 13 3.2.5 SMAZÁNÍ ZÁZNAMU ............................................................................... 13 3.2.6 REGISTRACE UŽIVATELE ...................................................................... 13 3.3 ANDROID APLIKACE ...................................................................................... 14 3.3.1 ANDROID SDK .......................................................................................... 14 3.3.2 NAVIGAČNÍ MENU A FRAGMENTY ..................................................... 15 3.3.3 ASYNCHRONNÍ PROGRAMOVÁNÍ ....................................................... 17 3.3.4 PROPOJENÍ S DATABÁZÍ ........................................................................ 19 3.3.5 VÝPIS ZÁZNAMŮ ..................................................................................... 20 3.3.6 PŘIDÁNÍ NOVÉHO ZÁZNAMU ............................................................... 21 3.3.7 EDITACE ZÁZNAMU ................................................................................ 22 3.3.8 SMAZÁNÍ ZÁZNAMU ............................................................................... 22 3.3.9 FORMÁT BASE-64 ..................................................................................... 23 3.3.10 NAHRÁVÁNÍ OBRÁZKU Z GALERIE .................................................... 23 3.3.11 POŘÍZENÍ OBRÁZKU FOTOAPARÁTEM .............................................. 25 3.3.12 GRAFICKÁ ČÁST PROGRAMU – XML zobrazení ................................. 26
4
3.4 SPUŠTĚNÍ APLIKACE ...................................................................................... 26 3.4.1 SPUŠTĚNÍ APLIKACE V EMULÁTORU ................................................. 26 3.4.2 VYGENEROVÁNÍ INSTALAČNÍHO SOUBORU PRO ANDROID ....... 26 4 VÝSLEDKY ŘEŠENÍ .............................................................................................. 28 ZÁVĚR ............................................................................................................................... 29 SEZNAM POUŽITÝCH INFORMAČNÍCH ZDROJŮ ................................................ 30 4.1
LITERATURA .................................................................................................... 30
4.2
ELEKTRONICKÁ MÉDIA ................................................................................ 30
5
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
ÚVOD Zadání pro svůj projekt jsem získal od svého učitele Mgr. Marka Lučného a Ing. Petra Grussmanna. Cílem projektu bylo vytvořit mobilní systém pro platformu Android napsanou v jazyce Java, který bude komunikovat s databází MySQL umístěnou na vzdáleném serveru a bude schopný po úspěšném přihlášení uživatele pracovat s daty v této databázi. Systém pro správu dokumentů (Document management system) by měl umět archivovat a spravovat dokumenty. V mém případě jde o dokumenty v grafické podobě (vyfotografované obrázky a papírové dokumenty). Nedílnou součástí tohoto systému je možnost přidání nového záznamu, možnost editace a smazání záznamu. Výsledkem této práce je spustitelná aplikace pro platformu operačního systému Android 3.0 a vyšší. Až na drobné nedostatky splňuje většinu funkcí, které jsem si stanovil na začátku práce na tomto projektu. Plně funkční jsou funkce autentifikace uživatel, přidávání, editace a mazání příspěvků. Nechybí možnost využití fotoaparátu nebo načítání grafických souborů z galerie na reálném zařízení. V první kapitole této práce bych rád poukázal na dosavadní poznatky k dané problematice, výběr metod a důvody jejich použití. Následně bych představil technologie, které jsem využíval při vytváření tohoto projektu. V další části popíši způsoby a použité postupy při práci a ve finální části této dokumentace bych rád popsal ještě výsledky řešení této aplikace.
6
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
1 TEORETICKÁ A METODICKÁ VÝCHODISKA 1.1
Systém pro správu dokumentů Správa dokumentů nebo také Systém pro správu dokumentů (Document man-
agement system (DMS) nebo Electronic Document management (EDM)), je počítačový systém určený ke správě elektronických dokumentů nebo digitalizovaných papírových dokumentů, tj. např. dokumentů převedených do digitální podoby skenováním. Jde o systém, který by měl ovládat vkládání dokumentů, jejich editaci, metapopisy, ale měl by také být schopen rozdělovat určitá přístupová práva dle jednotlivých uživatelů. Mezi další funkce systémů pro správu dokumentů by měla patřit jejich dohledatelnost (schopnost je správně a rychle vyhledat), dostupnost (data jsou uložená z nějakého centrálního zdroje, měla by být vhodně řešena redundance dat), dobrou ochranu a správnou validaci a následná archivace dat, která se zabývá například správným zálohováním. Každý systém pro správu dokumentů může vypadat jinak. Může se jednat o plně odladěný serverový systém, o aplikace webové prohlížeče, desktopovou aplikaci pro stolní počítače a notebooky nebo jednoduché mobilní verze těchto systému, jako v mém případě. Ale naprostá většina má společné cíle jako vytváření, ukládání a archivaci nějakých dokumentů. Mezi nejrozšířenější a nejpoužívanější DMS systémy patří Alfresco One. Jde vedoucí open-source dokumentační systém. Mezi další bych mohl uvést eFileCabinet, docSTAR nebo ASITE.
7
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
2 VYUŽITÉ TECHNOLOGIE 2.1
ANDROID STUDIO & JAVA 2.1.1
ANDROID STUDIO Pro vytváření svého projektu jsem si zvolil vývojově prostředí (IDE) Android
studio od tvůrců IntellJ IDEA. Přesněji řečeno jsem používal verzi 1.4.1. Jde o oficiální vývojářské studio určené pro vývoj aplikací přímo pro aplikace na mobilní platformu Android. Toto IDE používá programovací jazyk JAVA. Nabízí přehlednou strukturu projektu, kvalitní „nápovědy“ při programování a podporu mnoha užitečných nástrojů (SDK manažer, integrovaný emulátor, apod.). Pro vytváření XML layoutů se hodí přehledný „drag and drop“ (chyť a pusť) panel, který slouží k umisťování widgetů do náhledových stránek. PROGRAMOVACÍ JAZYK JAVA
2.1.2
Java je objektově orientovaný programovací jazyk. Také díky tomu, že je multiplatformní, se jedná o druhý nejpoužívanější programovací jazyk vůbec. Využívá se k programování desktopových aplikací, vývoji aplikací pro mobilní a různá zabudovaná zařízení i pro tvorbu programů pro čipové karty. Java je šířena jako opensource.
2.2
DATABÁZE MySQL & PHPMYADMIN Rozhodl jsem se využívat relační databáze MySQL, které v dnešní době podle mého názoru patří k nejrozšířenějším typům databází díky své jednoduchosti, spolehlivosti a dobré práci v kombinaci například s PHP skripty. K databázi MySQL se přistupuje pomocí jazyka SQL (Structured Query Language -> „Strukturovaný dotazovací jazyk“).
8
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
K nástrojům databází MySQL patří velmi dobře známý phpMyAdmin. Jde o webové prostředí pro správu databáze. MySQL databáze můžeme používat na lokálním přístroji skrze balíček XAMPP pro MS Windows nebo LAMP pro Linux. Umožní nám vytvářet databáze a spouštět lokální server pro testování aplikací. Pro svou androidovou aplikaci jsem používal MySQL databázi a phpMyAdmin na vzdáleném serveru. Prostředí je téměř stejné jako na lokálním stroji.
2.3
PHP PHP je skriptovací jazyk určený především pro programování dynamických internetových stránek (tj. že stránky jsou interaktivní v ohledu na uživatele a nezobrazují pouze obsah jako statické stránky) a webových aplikací. Při použití PHP jsou tyto skripty prováděny na straně serveru. Návštěvníkovi těchto webových stránek je pak odesílána statická stránka v podobě HTML a CSS, která se zobrazí v jeho prohlížeči. PHP je velmi oblíbené mezi vývojáři pro svou jednoduchost a podobnost syntaxi s programovacími C, Pascal nebo Java.
2.4
JSON JavaScript Object Notation (JavaScriptový objektový zápis, JSON) je způsob zápisu dat nezávislý na počítačové platformě (multiplatformní), určený pro přenos dat, která mohou být organizována v objektech. Strukturu textového souboru JSON si můžeme vytvořit vlastní. Podporuje číslicové hodnoty (INT), hodnoty s plovoucí desetinnou čárkou (FLOAT), řetězce (STRING), ale také například „metodu ano, ne“ (BOOLEAN, true, false).
9
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Výše zmíněné PHP skripty umístěné na webovém hostingu jsem používal pro získání a správu dat v databázi, ale také pro vypsání těchto hodnot do soubor JSON, ze kterého jsem poté získával data do androidové aplikace v Javě.
2.5
EMULÁTORY Emulátor je program, který umožňuje běh programů na jiné platformě (architektuře, operačním systému), než pro kterou byly původně vytvořeny. Tuto problematiku můžu popsat na tomto praktickém příkladu. Vytvářel jsem mobilní aplikaci pro platformu Android, ale abych nemusel neustále generovat instalační soubor a přenášet ho na reálné zařízení a tam ho teprve spustit a testovat, tak jsem využil emulátoru. Aplikace se mi po spuštění v Android studiu okamžitě přenesla do spuštěného emulátoru, který simuloval prostředí operačního systému Android a mohl sem ji takto testovat a ladit přímo v počítači. Ze začátku jsem využíval populární emulátor Genymotion. Vyzkoušel jsem mnoho dalších emulátorů jako třeba Xamarin, Windroy nebo Driod4X. Po mnoha pokusech jsem došel až k emulátoru BlueStacks. Nakonec jsem zůstal u testování aplikací v tomto emulátoru, protože bezproblémově podporoval připojení k internetu a databázím, využití kamery a nahrávání z galerie.
10
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
3 ZPŮSOBY ŘEŠENÍ A POUŽITÉ POSTUPY 3.1
DATABÁZE MYSQL 3.1.1
STRUKTURA TABULEK Pro tuto aplikaci jsem zvolil jednoduchou strukturu databáze o dvou tabul-
kách. První tabulka pod názvem pic_data obsahuje pět polí (id, název dokumentu, datum přidání, samotný obrázek ve formátu BASE64 a propojení s tabulkou uživatelů). Druhá tabulka pod názvem pic_user obsahuje 3 pole (id uživatel, uživatelské jméno a heslo).
Obrázek 1. –Struktura databázové tabulky pic_data
Obrázek 2. – Struktura databázové tabulky pic_user
3.2
PHP SKRIPTY 3.2.1
PŘIPOJENÍ K DATABÁZI Skrze PHP skripty uvedené níže se bude aplikace pro Android napsaná v Javě
schopna připojit k vzdálené databázi provádět s ní jednotlivé úkony. Jak se bude
11
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
připojovat tato aplikace na PHP skripty budou uvedeny v kapitole 3.3 Android aplikace. Připojení k databázi řeším PHP třídou v souboru config.inc.php umístěném na webhostingu, ve které jsou uložené údaje pro přístup k databázi a navazuje se v ní spojení s touto databází. V deklarované proměnné $options se provede nastavení kódování na UTF-8.
Obrázek 3. – Připojení ke vzdálené databázi
12
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
3.2.2
PŘIHLÁŠENÍ UŽIVATELE Přihlášení uživatele skrze PHP jsem vyřešil v souboru login.php, který je
umístěn ve stejném adresáři jako config.inc.php. Na začátku souboru se načte konfigurační soubor pro přístup k databázi. Dále se načtou data z tabulky pic_user a shodují-li se, načte se na stránku výpis dat za databáze jako výpis formátu JSON. Využit je zde základní příkaz jazyka SQL – SELECT . 3.2.3
PŘIDÁNÍ ZÁZNAMU DO DATABÁZE Tento PHP skript add.php funguje obdobně jako přihlášení uživatele. Po
úspěšném připojení k databázi je možné přidat záznam do databáze. Využit je zde jeden ze základních příkazů jazyka SQL – INSERT INTO . 3.2.4
EDITACE ZÁZNAMU V DATABÁZI Tento PHP skript update.php opět funguje obdobně jako skript na přidání
záznamu. Po úspěšném připojení k databázi je možné editovat záznam v databázi. Využit je zde jeden ze základních příkazů jazyka SQL – UPDATE.
3.2.5
SMAZÁNÍ ZÁZNAMU Další je PHP skript delete.php opět umístěný ve sejné složce s ostatními PHP
skripty. Po úspěšném připojení k databázi je možno smazat záznam z databáze. Je zde využít jeden ze základních příkazů jazyka SQL – DELETE.
3.2.6
REGISTRACE UŽIVATELE Tuto problematiku jsem řešil vytvořením PHP skriptů registration.php a
pridavani.php. Oba tyto soubory jsou uložené na webhostingu. Uživatel se k nim dostane skrze tlačítko „Registrovat“ na úvodní (logovací) obrazovce mobilní aplikace. Příklad odkazu na webové stránky skrze tlačítko přikládám níže.
13
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 4. – Tlačítko pro registraci uživatele
Obrázek 5. – Funkce pro odkaz na webové stránky po kliknutí
Po úspěšné registraci je do databáze skrze výše zmíněné PHP skripty přidán uživatel (jméno a heslo) a jeden ukázkový záznam.
3.3
ANDROID APLIKACE 3.3.1
ANDROID SDK Android SDK je kompletní vývojářský balíček obsahující potřebné soubory
pro jednotlivé verze platformy Android. Předtím, než budete moci nějakou aplikaci vůbec naprogramovat, musíte mít staženy tyto balíčky. Android SDK obsahuje ještě další pomocné knihovny a pluginy, jako například pro připojení reálného zařízení a testování aplikací na něm.
14
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 6. – SDK manažer
3.3.2
NAVIGAČNÍ MENU A FRAGMENTY V tomto projektu jsem využíval oblíbené navigační menu. Jde o vysunovací
menu z levé strany obrazovky. Toto menu můžeme implementovat do aplikace už při jejím založení, kdy při výběru aktivity zatrhneme Navigation Drawer Activity. Po vytvoření projektu s touto aktivitou se nám do projektu přidá nová třída NavigationDrawerFragment a nová XML layout fragment_navigation_drawer.xml. Dále je toto menu třeba naprogramovat, aby docházelo k přepínání pohledů (XML layout). Fragmenty jsou komponenty, které běží v kontextu Activity. Označují nový přístup ke tvorbě uživatelského rozhraní, kdy mezi Activity a View vstupuje ještě
15
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
jedna vrstva, a to Fragment. Každá Activity může obsahovat libovolné množství Fragmentů. Activity může volat jejich metody a nastavovat jim posluchače událostí. Musíme tedy naprogramovat metodu, která bude obsahovat komponentu switch a bude v různých případech odkazovat na další třídu, ve které bude uložena informace o změně XML zobrazení.
Obrázek 7. – Switch navigačního menu
16
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 8. – Změna XML layout ve třídě Help
Stejným způsobem se dá přidat další XML layout soubory do navigační menu. Výsledek by měl být takový, že při každém vybrání sekce v navigačním menu bude uživateli zobrazena nová stránka. 3.3.3
ASYNCHRONNÍ PROGRAMOVÁNÍ Asynchronní programování jsem využíval při komunikaci s databází. Pokud
je úlohou aplikační logiky načítat údaje z webové služby (v mém případě přístup k PHP skriptům a databázi), může tento proces zabrat nějaký čas. Někdy to při pomalém připojení nebo načítání velkého množství dat může trvat déle, například několik sekund. Pokud by toto načítání pracovalo v hlavním vlákně aplikace, ta by po
17
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
dobu čekání neodpovídala na podněty uživatele. Pokud by tento proces trval déle, operační systém Android by tuto aplikaci po pěti sekundách násilně ukončil s chybovým hlášením „Application Not Responding“. Při delším čekání by ji ani nemusel ukončovat operační systém, protože by to nejspíše udělal mrzutý uživatel. Proto operace, u kterých předpokládáme, že budou trvat delší dobu, realizujeme jako asynchronní, takže nebudou blokovat aplikaci, která je spustila, ale poběží paralelně s ní. Třída AsyncTask je určena pro jednodušší asynchronní úlohy. Úloha běží v samostatném vlákně. Zároveň tato třída poskytuje metody na modifikaci prvků uživatelského rozhraní v hlavním vlákně. Třídu AsyncTask jsem využíval při práci s daty v souboru JSONParser.java.
Obrázek 9. – Asynchronní programování
18
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
3.3.4
PROPOJENÍ S DATABÁZÍ Propojení vzdálené databáze a android aplikace je vyřešeno za pomoci asyn-
chronního programování (viz výše) ve třídě JSONparser.java. V této třídě se využívá pomocných http entit, které se připojují na PHP skripty a o kterých jsem psal v kapitole 3.2. Například, když se uživatel dostane k metodě add (přidání nového záznamu), vyvolá se se PHP skript add.php a parametry se nastaví tak, aby odpovídaly struktuře databáze a tyto parametry se přenesou také do tříd v projektu v Android studiu.
Obrázek 10. – Propojení s databází
19
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 11. – Propojení s databází
3.3.5
VÝPIS ZÁZNAMŮ Po úspěšném přihlášení uživatel do aplikace, proběhne připojení k databázi
skrze skript login.php, který následně vybere data navázaná na uživatele z databáze, přepíše je do souboru JSON a poté se přenesou do Android aplikace. V souboru fragment_list_of_files.xml je vložená komponenta listView, do které se načtou stáhnutá data a zobrazí se jako seznam. Po kliknutí na položku se zobrazení její titulek, datum vytvoření a dekódovaný obrázek. Toto je řešeno ve třídě list_of_files.php. V případě, že není přihlášen žádný uživatel, je vypsáno chybové hlášení s tím, že je vyžadována nutnost přihlášení.
20
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 12. – Reakce na vybrání položky ze seznamu
Přiložený obrázek je pouze ukázkový, protože naplnění a ošetření událostí v souvislosti se seznamem jednotlivých záznamů je komplikovanější. 3.3.6
PŘIDÁNÍ NOVÉHO ZÁZNAMU Při vyvolání funkce add se aplikace napojí na skript add.php, naváže se na
jednotlivé parametry a skrze tento PHP skript přidá správně vyplněný záznam do databáze na vzdáleném serveru.
21
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 13. – Vyvolání skriptu pro přidání záznamu
3.3.7
EDITACE ZÁZNAMU Editace záznamu je obdoba přidávání. V podstatě se mění pouze odkaz na
PHP skript. V tomto případě update.php se napojí na databázi jako přidávací funkce a aktualizuje hodnoty v jednotlivých parametrech.
Obrázek 14. – Vyvolání skriptu pro editaci záznamu
3.3.8
SMAZÁNÍ ZÁZNAMU Tato funkce se oproti předchozím dvěma funkcím pro přidávání a editaci zá-
znamu změní jen nepatrně. Předáme Id jako parametr pro skript delete.php. Aplikace se napojí na databázi a smaže záznam napojený na konkrétního uživatele.
22
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 15. – Vyvolání skriptu pro smazání záznamu
3.3.9
FORMÁT BASE-64 Base64 je kódování, které převádí binární data na posloupnosti tisknutelných
znaků. Umožňuje přenos binárních dat kanály, které dovolují pouze přenos textů. Vybral jsem si tuto možnost, protože jsem komunikoval s databází skrze textový formát JSON. Bylo tedy mnohem jednodušší uložit do něj obrázek zakódovaný do textového řetězce. Obrázek při kódování a zpětném dekódování neztrácí kvalitu, ale jeho velikost o něco vzroste, ovšem ne tak, aby to působilo značné problémy. Jednoduše lze na http://www.motobit.com/util/base64-decoder-encoder.asp nahrát obrázek a vyzkoušet si, jak by vypadal ve formátu BASE64.
3.3.10 NAHRÁVÁNÍ OBRÁZKU Z GALERIE Pro využívání možnosti práce aplikace s fotogalerií na konkrétním zařízení je nutné mít nastavená určitá oprávnění. Ta se mimo jiné nastavují v souboru AndroidManifest.xml. Jsou zde sepsána základní data pro aplikaci jako název, určení hlavní aktivity a oprávnění.
23
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
Obrázek 16. – Oprávnění přístupu k úložišti a galerii
Funkce choose_image_button_click se vyvolá po kliknutí na tlačítko pro nahrání obrázku z galerie. Prvně se překontroluje, jestli je vyplněn titulek k obrázku a pokud ano, otevře se galerie, kde po následném klinutí na vybraný obrázek se tento obrázek nahraje do aplikace.
Obrázek 17. – Nahrání obrázku skrze galerii
24
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
3.3.11 POŘÍZENÍ OBRÁZKU FOTOAPARÁTEM Stejně jako v případě nahrávání obrázku přes galerii musíme i pro nahrávání s využitím fotoaparátu nastavit oprávnění. Stejně jako u oprávnění pro použití galerie se nastavení provede v souboru AndroidManifest.xml.
Obrázek 18. – Oprávnění pro použití fotoaparátu
Funkce create_image_button_click se vyvolá po stisknutí tlačítko pro nahrání obrázku přes fotoaparát. Prvně se překontroluje, jestli je přihlášený uživatel a jestli je vyplněný titulek pro obrázek. Poté se spustí aktivita pro spuštění fotoaparátu a ten následně uloží pořízený snímek do aplikace.
Obrázek 19. – Nahrávání obrázku skrze fotoaparát
25
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
3.3.12 GRAFICKÁ ČÁST PROGRAMU – XML zobrazení Grafické komponenty jsem přidával v návrhovém zobrazení editoru Android studio. Používají se k tomu XML soubory, které obsahují jednotlivé komponenty s atributy a prezentují např. tlačítko, scrollbar nebo rozložení (layouts). Pro manipulaci je důležité vhodně přidávat id jednotlivých komponent. Je možné přidávat např. události „OnClick“, které následně odkazují na metody v jednotlivých třídách.
3.4
SPUŠTĚNÍ APLIKACE 3.4.1
SPUŠTĚNÍ APLIKACE V EMULÁTORU Vyvíjená aplikace pro android není spustitelná přímo ve windows, a proto
můžeme použít pro její spuštění v počítači emulátor. Co je to emulátor, jsem již popsal v kapitolce 2.5 Emulátory. Aplikace lze testovat také v reálném zařízení po připojení přes USB kabel a nastavení režimu ladění na daném zařízení. Já preferuji práci v emulátoru. Některé emulátory jako třeba Genymotion vyžadují mít v Android studiu doinstalovaný plugin genymotion. Jeho instalaci zvládne každý. Přidává se v nastavení projektu -> pluginy. Bluestack nevyžaduje žádný externí plugin pro testování a spuštění aplikace. Stačí jednoduše spustit aplikaci a vybrat běžící emulátor. Všechny spuštěné a běžící emulátory můžete sledovat také pod nástrojem Device monitor, který je součástí Android studia.
3.4.2
VYGENEROVÁNÍ INSTALAČNÍHO SOUBORU PRO ANDROID Před vygenerováním konečného instalačního souboru s příponou .apk, který
je samostatně spustitelný na zařízení s Androidem, je třeba mít na paměti, aby byla
26
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
aplikace kompatibilní s danými verzemi androidu. Tohle se řeší při zakládání projektu, při výběru podporovaných OS. Dále jde toto nastavení samozřejmě změnit v nastavení Gradle. Svou aplikaci jsem udělal přístupnou pro verze SDK 15-23. Například SDK 1 je pro verzi OS Android 1.0 a SDK (API level) 23 je pro OS Android
6.0.
Kompletní
přehled
API
verzí
pro
Android
najdete
na
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html. Samotné vytvoření onoho instalačního souboru není už nijak složité. V horním menu zvolíme možnost Build -> Generate Signed APK a dále zvolíme jméno autora nebo společnosti, nějaké další údaje. Vytvoříme klíč, podle kterého budeme aplikaci generovat, a zvolíme přístupové heslo. Vygenerovaná aplikace je již plně spustitelná na podporovaných zařízeních.
27
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
4 VÝSLEDKY ŘEŠENÍ Základní funkce jako autentifikace a registrace uživatele, přidávání, editace a smazání záznamu fungují. Bezproblémově funguje také řešení přidávání a editace s možnosti nahrání obrázku z galerie na daném zařízení a skrze použití fotoaparátu. Do budoucna by bylo vhodné lépe vyřešit strukturu databáze a určitě by bylo na místě zdokonalit zabezpečení aplikace, a to jak ze strany PHP skriptů, tak i kódu v JAVĚ. Pokud budu mít čas a motivaci na tomto projektu dále pracovat, zaměřím se na to, aby aplikace uměla nějaké jednouché editace obrázků, jako například oříznutí pořízené fotky, přidání textu nebo nějakých barevných symbolů přímo do obrázku, a až poté ho ukládat do databáze. Mohla by se vytvořit také aktivita, kde může jeden uživatel sdílet nějaký dokument s jiným uživatele a přidávat například komentáře.
28
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
ZÁVĚR Výsledek této práce je spustitelný instalační soubor s příponou .apk, který je možno stáhnout a nainstalovat do mobilního zařízení nebo tabletu s operačním systémem Android 3.0 a vyšší. Sice tato aplikace nedisponuje velkou škálou možností práce s obrázkovými dokumenty, ale je to pro mě základní krok dostat se blíže k problematice programování pro mobilní platformu Android. Aplikace zvládá autentifikaci uživatele, práci se záznamy a možnost práce s obrázky pomocí fotoaparátu a galerie reálného zařízení. Dalším krokem po vytvoření mobilní aplikace mělo být vytvoření webových stránek pro možnost přístupu k souborům také přes počítač. Vytvořil jsem jednoduché webové stránky pomocí systému WordPress, na kterých je možná registrace do databáze uživatelů a odkud je možno aplikaci do svého mobilního zařízení stáhnout. Tyto stránky můžete navštívit na http://dms.hol.es/.
29
Marek Kovalčík – IT4 2015/2016 - Systém pro správu dokumentů
SEZNAM POUŽITÝCH INFORMAČNÍCH ZDROJŮ 4.1
LITERATURA
[1]
ĽUBOSLAV, Lacko. Vývoj aplikací pro Android. Vydalo nakladatelství Computer Press v Brně roku 2015 ve společnosti Albatros Media a.s. ISBN 978-80-251-4347-6
4.2
ELEKTRONICKÁ MÉDIA
[2]
YOUTUBE kanál uživatele PRABESH R K. Pomáhal jsem si s touto problematikou s některými video tutoriály toho uživatele. https://www.youtube.com/user/TICOONTECHNOLOGIES/featured
[3]
Oficiální webové stránky pro vývoj aplikací pro Android. Obsahuje dokumentace, návody a rady. http://developer.android.com/index.html
Kromě výše zmíněných použitých informačních zdrojů jsem hledal rady a inspirace na YOUTUBE kanálech různých uživatelů. U většiny problémů jsem také využíval webové stránky http://stackoverflow.com/, kde jsem nejčastěji hledal řešení různých problémů.
30