České Vysoké Učení Technické v Praze Fakulta

Transkript

České Vysoké Učení Technické v Praze Fakulta
České Vysoké Učení Technické v Praze
Fakulta Elektrotechnická
Katedra počítačů
Bakalářská práce
Modul pro vyhledání informací pro Android
Otakar Chasák
Vedoucí práce: Ing. Tomáš Novotný
Studijní program: Elektrotechnika a informatika, strukturovaný, bakalářský
Obor: Výpočetní technika
5. ledna 2012
Poděkování
Rád bych poděkoval vedoucímu práce Ing. Tomáši Novotnému za cenné rady a pomoc při
zpracování bakalářské práce.
Prohlášení
Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze
podklady uvedené v přiloženém seznamu.
Nemám závažný důvod proti užití tohoto školního díla ve smyslu § 60 Zákona č.121/2000
Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých
zákonů (autorský zákon).
V Praze dne 6.1.2012
…………………………………
Abstract
The goal of this barchelor thesis was to design and implement an application for
searching informations from different sources. This application is determined for Android
operating system. Searching modules for information sources were implemented together
with the application. Additional modules can be added to this application.
Modules can save the obtained informations to database, which is located on SD card or
can be downloaded from the sources.
Abstrakt
V rámci této bakalářské práce byla navržena a implementována aplikace pro
vyhledávání v informačních zdrojích. Aplikace je určená pro operační systém Android.
Spolu s aplikací byly implementovány vyhledávácí moduly pro informační zdroje. O další
moduly lze aplikaci rozšířit.
Moduly mohou získané informace ukládat do databáze na SD kartu nebo je stahovat
z informačních zdrojů.
Obsah
1.
2.
3.
Úvod ...............................................................................................................................1
Popis řešeného problému a požadavků...........................................................................3
Rešerše existujících řešení..............................................................................................5
3.1.
Dictionary.com .......................................................................................................5
3.2.
Advanced English & Thesaurus .............................................................................7
3.3.
Multi Lang Dictionary ............................................................................................9
3.4.
Wordmate .............................................................................................................10
3.5.
Colordict ...............................................................................................................12
3.6.
Překladač Google..................................................................................................14
3.7.
Fora dictionary......................................................................................................15
3.8.
Srovnávací tabulka ...............................................................................................18
3.9.
Motivace ...............................................................................................................19
4. Analýza.........................................................................................................................21
4.1.
Použité technologie...............................................................................................21
4.2.
Použité zdroje informací.......................................................................................22
4.3.
Případy užití..........................................................................................................23
5. Architektura ..................................................................................................................27
5.1.
Uživatelské rozhraní .............................................................................................27
5.2.
JavascriptInterface ................................................................................................31
5.3.
ModuleInterface....................................................................................................32
5.4.
Implementace databáze.........................................................................................33
6. Implementované moduly pro získávání informací .......................................................37
6.1.
Modul SlovnikCz..................................................................................................37
6.2.
Modul Wikipedia..................................................................................................38
6.3.
Modul offline........................................................................................................39
6.4.
Modul Wiktionary ................................................................................................40
6.5.
Modul Bing Translate...........................................................................................40
6.6.
Modul Google Translate.......................................................................................41
7. Tvorba nových modulů pro vyhledávání......................................................................43
8. Tvorba šablon pro zobrazení výsledků vyhledávání ....................................................45
9. Testování ......................................................................................................................47
10.
Závěr.........................................................................................................................49
11.
Seznam použitých zkratek ........................................................................................51
12.
Literatura ..................................................................................................................53
13.
Přílohy ......................................................................................................................55
13.1.
Srovnání existujících řešení..............................................................................57
13.2.
UML diagramy .................................................................................................58
13.3.
Instalační příručka ............................................................................................62
13.4.
Uživatelská příručka .........................................................................................62
14.
Obsah přiloženého CD..............................................................................................65
Seznam obrázků
Obrázek 1 Historie vyhledávání v aplikaci Dictionary.com...................................................7
Obrázek 2 Zobrazení výsledků vyhledávání v aplikaci Dictionary.com................................7
Obrázek 3 Našeptávač v aplikaci Advanced English & Thesaurus........................................8
Obrázek 4 Zobrazení výsledků v aplikaci Advanced English & Thesaurus ..........................8
Obrázek 5 Výsledek vyhledávání je zobrazen spolu s reklamou (aplikace Multi lang
dictionary).............................................................................................................................10
Obrázek 6 Našeptávač v aplikaci WordMate .......................................................................12
Obrázek 7 Zobrazení výsledků vyhledávání v aplikaci WordMate .....................................12
Obrázek 8 Zobrazení výsledků v aplikaci ColorDict ...........................................................13
Obrázek 9 Nastavení slovníků aplikace ColorDict...............................................................13
Obrázek 10 Zobrazení výsledků vyhledávání v aplikaci Překladač Google ........................15
Obrázek 11 Zobrazení výsledků vyhledávání v aplikaci Fora dictionary ............................16
Obrázek 12 Případy užití ......................................................................................................24
Obrázek 13 Úvodní obrazovka spolu s menu implementované aplikace.............................29
Obrázek 14 Našeptávač implementované aplikace ..............................................................29
Obrázek 15 Zobrazení historie vyhledávání.........................................................................30
Obrázek 16 Nastavení modulů .............................................................................................30
Obrázek 17 Zobrazení výsledků vyhledávání ......................................................................31
Obrázek 18 Ukázka JSON objektu vráceného metodou getSources() .................................31
Obrázek 19 Schéma history databáze...................................................................................33
Obrázek 20 Schéma databáze modulů..................................................................................35
Obrázek 21 JSON s výsledky vyhledávání modulu SlovnikCz ...........................................38
Obrázek 22 JSON s výsledkem vyhledávání ve Wikipedii..................................................39
Obrázek 23 JSON s výsledky vyhledávání z modulu offline...............................................39
Obrázek 24 Formát JSON objektů modulu Wiktionary .......................................................40
Obrázek 25 Ukázka implementace metody getDownloadConnections().............................43
Obrázek 26 Ukázka html kódu pro spuštění dalšího vyhledávání........................................46
Obrázek 27 Ukázka použití ikony s vlajkou.........................................................................46
Obrázek 28 Použití novější verze JSON...............................................................................46
Obrázek 29 Diagram tříd v balíčku presentation..................................................................58
Obrázek 30 Diagram tříd výchozí aktivity ...........................................................................59
Obrázek 31 Diagram tříd aktivity pro nastavení modulů .....................................................60
Obrázek 32 Diagram tříd aktivity historie............................................................................60
Obrázek 33 Diagram tříd modulů.........................................................................................61
Obrázek 34 Adresářová struktura na přiloženém CD...........................................................65
Seznam tabulek
Tabulka 1 Zhodnocení existujících aplikací.........................................................................18
Tabulka 2 Výchozí metody pro generování html kódu z JSON...........................................45
Tabulka 3 Srovnání existujících řešení.................................................................................57
1. Úvod
V posledních letech prudce narostl počet mobilních zařízení, zejména tzv. „chytrých
telefonů“. Mezi charakteristické znaky těchto telefonů patří pokročilý operační systém a
funkce, které dříve zastávaly počítače (emailový klient, internetový prohlížeč apod.).
Jedním z rozšířených operačních systémů používaných na mobilních zařízeních je OS
Android. Jedná se o open source platformu, která je navržena pro použití na různém
hardwaru. Android je nejrychleji rostoucí mobilní platforma na světě. Ve druhém čtvrtletí
2009 mělo 2,8 % prodaných mobilních zařízení platformu Android. O dva roky později již
používalo tuto platformu 48 % zařízení.[1][2]
Velký rozmach zažívá i trh s aplikacemi pro tato zařízení. Aplikace určené pro mobilní
zařízení mají svá specifika a odlišnosti od aplikací určených pro jiná zařízení. Jedná se
například o optimalizaci grafického rozhraní, důraz na dlouhou výdrž baterie nebo
výpočetní výkon zařízení.
V této práci jsem se zabýval aplikací pro vyhledávání informací pro operační systém
Android. Podobné aplikace pro Android již existují, některé z nich popíši v kapitole
Rešerše existujících řešení. Z porovnání těchto aplikací bude patrné, jaká funkcionalita by
měla být implementována v aplikaci.
1
2
2. Popis řešeného problému a požadavků
Zadání práce lze rozdělit na dvě části:


první částí je samotná aplikace, která spravuje jednotlivé vyhledávací moduly,
jejich nastavení a zobrazení výsledků vyhledávání
druhou část tvoří jednotlivé moduly pro vyhledávání informací.
Každý vyhledávací modul vyhledává v jednom zdroji informací. Tyto zdroje se mohou
velmi lišit, co do typu poskytovaných informací, tak do způsobu jejich uložení, formátu, tak
i způsobu jejich získávání. Může se jednat o různé druhy slovníků, encyklopedie,
vyhledávače. Mohou být uloženy lokálně na mobilním zařízení (např. v databázi), přístupné
pomocí API apod.
Vzhledem k velkému počtu informačních zdrojů, jejich různorodosti, je třeba zajistit
jednoduché rozšíření aplikace o nové moduly, včetně možnosti ovlivnit zobrazení jejich
výsledků vyhledávání.
Samotný vývoj pro platformu Android přináší některé odlišnosti od vývoje desktopové
aplikace. Doporučení pro vývoj výkonnějších aplikací[3]:



Preferovat statické metody před instančními
Nepoužívat settery a gettery
Pro konstanty používat deklaraci static final
Funkční požadavky
Funkční požadavky popisují funkce, které aplikace musí vykonávat. Některé z nich
přímo vyplývají ze zadání bakalářské práce.




Aplikace bude vyhledávat v informačních zdrojích
Aplikace umožňuje nastavení informačních zdrojů
Aplikace uchovává historii vyhledávání
Aplikace poskytuje možnost nastavení vyhledávaných jazyků
Nefunkční požadavky
Nefunkční požadavky zachycují omezení uvalená na danou aplikaci.



Aplikace bude fungovat na operačním systému Android
Aplikace bude mít přívětivé uživatelské rozhraní
Snadná rozšiřitelnost aplikace o další vyhledávací moduly
3
4
3. Rešerše existujících řešení
V současné době existuje mnoho aplikací pro vyhledávání informací pro operační
systém Android. Mezi nejčastější patří slovníky, které obsahují různé datové podklady. Ty
mohou být uloženy lokálně v telefonu, nejčastěji na SD kartě, nebo při vyhledávání
používat data získaná vzdáleně ze serverů. Aplikace mohou kromě dvojjazyčných slovníků
obsahovat i výkladové slovníky.
Mezi služby vyžadující datové připojení patří Google Translate, pro kterou Google
poskytuje API. Její výhodou oproti ostatním je překlad vět nebo celého textu. Další zdroj
pro online překlady je Google Dictionary, zde již Google neposkytuje API. V tomto
případě aplikace zobrazí přímo výslednou stránku této služby ve webovém prohlížeči.
V případě offline zdrojů je často používaný formát StarDict. Tyto slovníky jsou volně
ke stažení. Jedna z níže popsaných aplikací umožňuje tvorbu vlastních slovníků.
Aplikace, které jsou v této kapitole popsané, jsem vybral na základě hodnocení a počtu
instalací v Android Marketu1. Všechny níže popsané aplikace mají vysoké hodnocení(vždy
více než čtyři hvězdičky z pěti možných). Počet instalací se pohybuje v rozmezí 50 000 –
100 000 (WordMate, Fora dictionary[4]) až po 10 000 000 – 50 000 000 (Google
překladač, Dictionary.com[5]).
Vybrané aplikace:
 Dictionary.com
 Advanced English & Thesaurus
 Multi Lang Dictionary
 Wordmate
 Colordict
 Překladač Google
 Fora dictionary
U každé aplikace je posáno grafické uživatelské rozhraní, funkčnost a zdroje dat.
3.1.
Dictionary.com
Aplikace Dictionary.com vyhledává slova ve slovnících na serverech dictionary.com a
thesaurus.com. Na serveru dictionary.com je výkladový slovník anglického jazyka
obsahující 375 000 slov a definic, na thesaurus.com je slovník obsahující 300 000 synonym
a antonym.[5] Data jsou stahována ze serverů při každém vyhledávání, proto je nutné
připojení k internetu. Aplikace obsahuje historii vyhledávaných slov, umožňuje poslání
odkazu na výsledek hledání pomocí SMS nebo emailu, popřípadě sdílení přes Facebook a
Twitter.
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní aplikace je rozděleno na tři části. U horního okraje obrazovky je
textové pole pro vyhledávané slovo, pokud na něj uživatel klikne, aplikace zobrazí rozhraní
pro vyhledávání. Pod textovým polem je prostor, kde jsou zobrazovány výsledky
1
Internetový obchod nabízející aplikace pro platformu Android
5
vyhledávání nebo položky historie atd. U dolního okraje obrazovky je lišta s tlačítky pro
jednotlivé funkce.
První tlačítko (Daily) zobrazuje slovo dne (word of the day), různá slova z angličtiny a
španělštiny s definicí.
Tlačítko (Favourites) zobrazuje seznam slov, která si uživatel označil jako oblíbená. Po
kliknutí na slovo se zobrazuje výsledek vyhledávání z dictionary.com respektive
thesaurus.com podle toho, který výsledek uživatel přiřadil do oblíbených.
Další tlačítko (Search) zobrazuje seznam vyhledávaných slov seřazený podle času
vyhledávání a vpravo od textového pole je ikona pro spuštění vyhledávání. Mezi lištou
s tlačítky pro jednotlivé funkce a seznamem slov je tlačítko pro smazání, které zabírá více
místa něž by bylo nutné, v historii se proto zobrazí méně položek, pokud chce uživatel další
položky, musí rolovat.
Pod textovým polem se pomocí tlačítka zvolí, který slovník bude prohledán. Aplikace
zobrazuje výsledky buď ze zdroje dictionary, nebo thesaurus, mezi zdroji lze přepínat při
vyhledávání nebo pomocí ikony přímo na stránce s výsledky. U hledaného slova je napsána
výslovnost.
Výsledky z výkladového slovníku (dictionary.com) jsou číslovány a rozděleny podle
slovních druhů, samostatně jsou zobrazeny idiomy, u sloves také frázová slovesa. U
nalezeného významu je zobrazena definice a příklad použití, popřípadě zda se jedná o
slangové vyjádření. Jako poslední se zobrazuje stručný původ slova (letopočet a původní
slova). Aplikace umožňuje také přehrání výslovnosti.
V případě vyhledávání v thesaurus.com je pro každý význam nalezeného slova
zobrazen slovní druh a definice, pak následuje výčet synonym a antonym. Pokud jsou
nalezená synonyma či antonyma neformální, jsou označena.
Aplikace pro Android zobrazuje podstatně méně hodnot než vyhledávač na serverech,
při vyhledávání ve výkladovém slovníku zobrazuje výsledky ze slovníku Random House
Dictionary. Webový vyhledávač nabízí výsledky i z jiných zdrojů, například Collins
English Dictionary, Online Etymology Dictionary (historie a původ slova) nebo Dictionary
of English Slang and Colloquial Expressions. V případě vyhledávání v thesaurus.com jsou
zobrazené výsledky také pouze ze slovníku Random House Dictionary. Na rozdíl od
webového vyhledávače neumožňuje program překlad mezi jazyky.
Na stránce s výsledky lze kliknout na libovolné slovo a tím spustit nové vyhledávání,
nalezené výsledky jsou zobrazeny ve stejné aktivitě, takže se nelze vracet pomocí klávesy
zpět k předchozím vyhledáváním. K předchozím vyhledáváním se uživatel vrátí pouze přes
položky v historii.
Výsledek vyhledávání lze sdílet na Facebooku, Twitteru nebo odeslat SMS a emailem.
Po sdílení nebo odeslání se nelze vrátit na stránku s výsledky, i když toto zobrazení
obsahuje i tlačítko zpět, pomocí kterého se uživatel ale nevrátí na stránku s výsledky, ale do
historie hledání. Pokud se chce vrátit na výsledky, musí vybrat hledané slovo z historie.
Mezi navigační lištou se záložkami a výsledkem hledání je reklama, místo které by mohlo
být zobrazeno více výsledků.
Čtvrté tlačítko umožňuje vyhledávání pomocí hlasu, výsledky jsou poté zobrazeny
stejně jako při vyhledávání pomocí textové vstupu.
Poslední tlačítko obsahuje nastavení, kde lze měnit pouze pozadí aplikace.
6
Obrázek 1 Historie vyhledávání v aplikaci
Dictionary.com
Obrázek 2 Zobrazení výsledků vyhledávání v
aplikaci Dictionary.com
Srovnání
Oproti většině ostatních aplikací poskytuje Dictionary.com data pouze z jednoho
slovníku, nenabízí uživateli možnost doinstalovat vlastní slovník. Data získaná z toho
slovníku jsou navíc rozdělena do dvou částí a uživatel mezi nimi musí přepínat. Výsledné
zobrazení dat je přehledné, ale v části obrazovky, kde by mohlo být zobrazeno více
výsledků, je reklama. Stejná situace je i v horní části obrazovky, kde jsou tlačítka pro
přehrání výslovnosti, sdílení a přepínání slovníku, které by mohly být realizovány například
pomocí menu. Aplikace celkově nevyužívá možnosti uživatelského rozhraní, které nabízí
operační systém Android (spouštění nových aktivit, kontextové menu). Oproti ostatním
aplikacím se špatně ovládá kvůli malým tlačítkům.
3.2.
Advanced English & Thesaurus
Program Advanced English & Thesaurus umožňuje prohledávání slovníku WordNet.
Po nainstalování aplikace je stažen WordNet do telefonu, tím je umožněno vyhledávání i
bez připojení k internetu. V nastavení aplikace lze zvolit úložiště pro slovníky (SD karta,
nebo paměť telefonu). Při vyhledávání lze použít tři filtry. Aplikace poskytuje našeptávač.
Grafické uživatelské rozhraní a funkčnost
Uživatelské rozhraní aplikace používá prvky z grafického rozhraní systému Android.
V aktivitě pro vyhledávání se u horního okraje obrazovky nalézá vyhledávací pole, pod ním
je seznam slov z WordNetu seřazený podle abecedy. Seznamem je možno procházet. Při
psaní do vyhledávacího pole je seznam slov posouván, aby byla zobrazena slova, která
nejvíce odpovídají vyhledávanému textu. Seznam je opět možno procházet oběma směry.
Po kliknutí na výsledek vyhledávání je spuštěna nová aktivita, kde jsou zobrazeny
podrobnosti o slovu. Pomocí hardwarové klávesy menu lze vyvolat menu programu.
První položkou menu je Filter, který umožňuje volit filtr použitý při prohledávání
slovníku. Při použití filtru je vpravo od vyhledávacího pole zobrazena ikona filtru, která se
pohybuje, po skončení hledání je ikona statická. Fuzzy filtr lze použít, pokud si uživatel
7
není jist psanou podobou. Tento způsob vyhledávání je časově náročný. Po kliknutí na
výsledek vyhledávání dojde ke spuštění nové aktivity se zobrazením podrobností o slově.
Pomocí klávesy Zpět se lze vrátit do aktivity s výsledky vyhledávání. Wildcard filter
umožňuje použití zástupných znaků - ? pro jeden znak a * pro skupinu znaků. Tento filtr je
podstatně rychlejší než fuzzy filtr. Filtr keyword vyhledává zadané slovo i ve složených
slovech. Při vypnutí filtru je použito abecední vyhledávání.
Po zvolení položky history z menu je spuštěna nová aktivita, která zobrazuje posledních
50 vyhledaných slov. Po kliknutí na slovo je zobrazena aktivita s podrobnostmi o slově, po
jejím zrušení je zrušena i aktivita s historií a je obnovena aktivita s vyhledáváním. Historii
vyhledávání lze smazat z menu.
Další položkou v menu je Settings, kde lze zvolit umístění pro uložení slovníků (SD
karta, nebo paměť telefonu) a smazat data v cache.
Položka More dictionaries spustí Android Market, kde jsou nabízeny ke stažení další
produkty vývojáře.
Pro zobrazení aktivit o konkrétních slovech je použit WebView. Nalezené významy
jsou rozděleny podle slovních druhů a očíslovány. Pro každý význam je zobrazen synset
(synonyma), ve kterém se slovo vyskytuje, jeho definice, ukázková věta a druh vazby
(hyponymum, holonymum, antonymum…) a odkaz na synset, který s ním tvoří vazbu.
Kliknutí na odkaz nebo libovolné slovo v textu spustí vyhledávání a novou aktivitu. Pokud
se zobrazené výsledky nevejdou na jednu obrazovku a musí se rolovat, nelze kliknout na
slovo či odkaz, který je úplně dole uprostřed, protože je překrytý tlačítky pro přiblížení a
oddálení.
Pomocí hardwarového tlačítka menu lze spustit menu, které obsahuje položky Back a
Forward pro procházení spuštěných aktivit. Pomocí položky History můžete vyhledat
například minulé slovo a potom pomocí Back a Forward přecházet mezi jednotlivými
výsledky. Položka List slouží pro návrat do aktivity pro vyhledávání (aktivity s konkrétními
slovy jsou zrušeny). Ostatní položky menu jsou shodné s menu v základní aktivitě.
Obrázek 3 Našeptávač v aplikaci Advanced
English & Thesaurus
Obrázek 4 Zobrazení výsledků v aplikaci
Advanced English & Thesaurus
8
Srovnání
V porovnání s aplikací Dictionary.com používá Advanced English grafické uživatelské
rozhraní pro Android, využívá i dalších možností jako je spouštění aktivit, využití historie
ve WebView. Díky tomuto uspořádání lze porovnávat výsledky vyhledávání více slov
pomocí procházení historie WebView. Lepší je i uspořádání grafických prvků tak, že zbývá
více místa pro zobrazení výsledků.
Tato aplikace vyhledává pouze ve slovníku WordNet, uživatel nemá možnost stáhnout
nebo nahrát jiný slovník například ve formátu StarDict. Oproti ostatním aplikacím které
umožňují vyhledávat ve Wordnet (ColorDict, WordMate, Fora dictionary) zobrazuje tato
aplikace i vazby mezi jednotlivými synsety (hyperonyma, meronyma, …). Při vyhledávání
ve WordNetu zobrazuje tato aplikace nejvíce podrobností o daném synsetu a jeho vazbách
na ostatní synsety.
3.3.
Multi Lang Dictionary
Program Multi Lang Dictionary je dostupný v základní verzi a ve verzi PRO. Základní
verze je zdarma a poskytuje překlady mezi více než 50 jazyky pomocí Google Translate a
Wiktionary. V této verzi je vyžadováno připojení k internetu. Aplikace umožňuje stažení
hlasového analyzátoru pro přehrání výslovnosti v různých jazycích. Ve verzi PRO je
podpora pro offline slovníky uložené na SD kartě, 45 slovníků volně ke stažení a
odstraněna reklama.
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní má tři části. V horní části obrazovky je umístěna lišta s tlačítky pro
volbu zdroje, spuštění vyhledávání a tlačítka pro nastavení vyhledávání. Pod lištou se
nachází prostor pro zobrazení výsledků, ty se zobrazují ve WebView, který jde tlačítky
přibližovat, respektive oddalovat. Ve spodní části obrazovky se nachází lišta s tlačítky pro
přehrání výslovnosti (Speak), zakoupení licence pro verzi PRO (Pro Key) a pro zobrazení
informací o programu a nápovědy (About).
V levém horním rohu se nalézá tlačítko pro volbu zdroje, po stisku si uživatel může
vybrat mezi Google Dictionary, Wiktionary nebo SD kartou. Tato nabídka je zobrazena na
liště pod tlačítkem. Vpravo od tlačítka je vstupní pole pro vyhledávaný text a tlačítko pro
spuštění vyhledávání.
Při zvolení zdroje Google jsou pod vstupním polem zobrazena tlačítka pro volbu
zdrojového a cílového jazyka a přepínání směru překladu. Po kliknutí na tlačítko pro volbu
jazyka je zobrazen seznam dostupných jazyků. Při vyhledávání je ve WebView zobrazen
výsledek. Překlady jsou rozděleny podle slovních druhů a očíslovány, poté je zobrazen
seznam odkazů na fráze, ve kterých se dané slovo vyskytuje, a jejich překlady. Poté jsou
zobrazeny definice nalezené na webu, například Wikipedia nebo WordNet. V základní
verzi jsou zde zobrazeny reklamy. Po kliknutí na odkaz je spuštěna nová aktivita, kde je
zobrazena kompletní stránka služby Google Dictionary. Tento WebView nelze zmenšovat
resp. zvětšovat. Po kliknutí na tlačítko F-Screen je také spuštěna nová aktivita.
Pokud je ze zdrojů vybrána Wiktionary, lze volit pouze jeden jazyk, ve kterém bude
vyhledáváno, pokud uživatel zadá slovo v jiném jazyce, je prohledáván Wikislovník a
zobrazen překlad. Výsledek vyhledávání je zobrazen stejně jako webová stránka
Wiktionary, i zde jsou přidány reklamy. Výsledky vyhledávání ve Wiktionary se pro
jednotlivá slova diametrálně odlišují. Někdy jsou obsaženy pouze překlady, jindy
jednotlivé významy, etymologie slova, výslovnost, v češtině i tvary jednotlivých pádů.
Oproti webovým stránkám Wiktionary v aplikaci nefungují odkazy. Pomocí tlačítka pod
9
vyhledáváním lze zobrazit Slovo dne (Word of the day), zobrazuje pouze anglická slova a
jejich význam. Při dalším vyhledávání není spuštěna nová aktivita, k předchozím
výsledkům se lze vracet pouze přes historii.
Pokud je ve standardní verzi jako zdroj vybrána SD karta, je v horní liště zobrazeno
tlačítko pro volbu offline slovníku a tlačítko pro přepnutí směru překladu. Při zakoupení
verze PRO je každý offline slovník uložen v jedné Sqlite databázi na SD kartě. Návod
aplikace předepisuje jednotné databázové schéma. V tabulce dbinfo jsou obecné informace
o slovníku – název, autor, verze, směr překladu. V tabulce word je sloupec s primárním
klíčem, sloupec wname, kde je hledané slovo, a sloupec wmean, kde je význam slova. Toto
schéma je možné použít pouze pro jednoduchý překladový slovník, například strukturu
WordNetu by zde nebylo možné zachytit. Placená verze umožňuje uživateli vytvářet si
vlastní slovníky.
Obrázek 5 Výsledek vyhledávání je zobrazen spolu s reklamou (aplikace Multi lang dictionary)
Srovnání
Multilang dictionary nepoužívá nativní grafické uživatelské rozhraní operačního
systému Android. V základní verzi poskytuje menší funkčnost než například aplikace
ColorDict, ve verzi PRO si uživatel může vytvářet nové slovníky, které jsou uložené
v databázi SQLite. Všechny ostatní aplikace využívají různé formáty slovníků, ale
nevyužívají databázi. Verze PRO obsahuje 45 připravených dvojjazyčných slovníků,
nepodařilo se mi zjistit, z jakých zdrojů tyto slovníky pochází. Ve verzi PRO nabízí oproti
ostatním aplikacím jen možnost uložení do databáze SQLite, podpora offline slovníků ve
formátu StarDict je i v ostatních aplikacích.
3.4.
Wordmate
Program Wordmate umožňuje vyhledávat ve slovnících uložených na SD kartě.
Základní slovníky je možné stáhnout přímo spolu s aplikací. Aplikace umožňuje vytvoření
vlastních slovníků nebo použití slovníku ve formátu StarDict. Po uložení slovníků na SD
kartu aplikace nevyžaduje připojení k internetu.
10
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní využívá nativní prvky operačního systému Android, jeho uspořádání
je podobné jako u aplikace Advanced English. V horní části obrazovky je tlačítko pro
přepínání slovníků, textové pole pro vyhledávaný text, tlačítko pro spuštění vyhledávání a
pro smazání celého textu. Všechny tyto položky jsou v jedné úrovni a zbytek obrazovky je
použit pro zobrazení výsledků vyhledávání. Klávesa Menu spustí nabídku dalších funkcí.
Položka nastavení (Settings) umožňuje volbu zobrazení výsledků vyhledávání (Enable
Wordlist).
Pokud je povolena, položky slovníku jsou zobrazeny v abecedním pořadí a lze mezi
nimi rolovat. Při vyhledávání se na první pozici seznamu zobrazuje slovo s nejdelší shodou
a pak následují další slova či slovní spojení podle abecedy, díky tomu lze vidět například
fráze nebo frázová slovesa, ve kterých je vyhledávané slovo na prvním místě. Po kliknutí
na položku seznamu je spuštěna nová aktivita, kde jsou zobrazeny informace o slově.
Kliknutí na tlačítko pro vyhledávání zobrazí první položku seznamu. Stejným tlačítkem
nebo klávesou Zpět lze přejít k seznamu slov. Pokud je tato volba zobrazení vypnuta, při
vyhledávání jsou zobrazovány přímo informace o vyhledávaném slově. Tlačítko pro
vyhledávání není zobrazeno. Pomocí tlačítek Prev word a Next word z menu lze přecházet
k předchozím respektive k dalším položkám v seznamu. Při použití těchto tlačítek se
informace zobrazují ve stejné aktivitě.
Mezi jednotlivými slovníky lze přepínat tlačítkem, které je umístěno vlevo od
textového pole. Po jeho stisku je zobrazen seznam aktuálně uložených slovníků na SD
kartě. Aplikace umožňuje zvolit vždy jen jeden slovník, který bude prohledáván.
Při zvolení položky menu Dict downloader je zobrazen seznam aktuálně dostupných
slovníků ke stažení. Stáhnout lze anglické výkladové slovníky, WordNet, nebo překladové
slovníky anglicko-německý, anglicko-francouzský a anglicko-španělský. Překladové
slovníky nabízené ke stažení přímo v aplikaci umožňují pouze jednosměrné vyhledávání
z angličtiny do jiného jazyka.
Při použití slovníku WordNet jsou informace o slovech děleny podle slovních druhů.
Pro každý význam je zobrazen synset, ve kterém se vyhledávané slovo vyskytuje, definice
a příklad použití, pokud je k dispozici. Vazby mezi synsety (hyperonyma, synonyma, atd.)
zde vůbec nejsou zobrazeny.
V případě ostatních slovníků je pro nalezené slovo zobrazen slovní druh a překlady.
Pokud má stejné slovo více slovních druhů je pro každý slovní druh položka v seznamu, o
který slovní druh se jedná, lze zjistit až po otevření každé položky. Nevýhodou těchto
slovníků je překlad pouze směrem z angličtiny do jiného jazyka.
Z internetu lze stáhnout slovníky ve formátu StarDict, které stačí rozbalit a nakopírovat
do samostatné složky v adresáři wordmate na SD kartě. Pro obousměrný překlad je nutné
stáhnout dva slovníky a oba uložit na SD kartu. Přepínání směru překladu je potom možné
přepnutím používaného slovníku pomocí tlačítka vlevo od textového pole.
Ze stránek aplikace lze stáhnout program pro překlad textového souboru do formátu
DWM. Tento slovník je po uložení na SD kartu zobrazen v nabídce slovníků programu
Wordmate. Formát vstupního textového souboru je následující. Na prvním řádku je název
slovníku (je zobrazen v nabídce slovníků), na druhém řádku je popis slovníku. Tyto
informace lze získat přes položku Dict info v menu. Na třetím a každém dalším lichém
řádku je text, který lze vyhledat. Na sudých řádcích text, který bude zobrazen po vybrání
slova ze seznamu. Výsledný text lze formátovat pomocí vybraných html tagů (odřádkování,
barva fontu, tučná písmena nebo kurzíva). Slovník opět umožňuje pouze jednosměrné
vyhledávání.
11
Obrázek 6 Našeptávač v aplikaci WordMate
Obrázek 7 Zobrazení výsledků vyhledávání v
aplikaci WordMate
Srovnání
Aplikace používá grafické uživatelské rozhraní systému Android, jeho rozvržení je
podobné jako u aplikace Advanced English Thesaurus, oproti předchozím aplikacím
podporuje více slovníků, uživatel si může vytvořit vlastní nebo nahrát na SD kartu slovník
ve formátu StarDict. Oproti aplikacím ColorDict a Fora Dictionary neumožňuje
prohledávat více slovníků současně. V případě slovníku WordNet nezobrazuje antonyma a
vazby mezi synsety. Překladové slovníky jsou dostupné pouze ve formátu StarDict, takže
pro každý směr je nutné mít vlastní slovník a mezi nimi přepínat.
3.5.
Colordict
Aplikace podporuje vyhledávání přes Google Translate, nabízí ke stažení slovníky
(např. WordNet), slovníky ve formátu StarDict, vyhledává také články na Wikipedii.
Aplikace funguje i bez připojení k internetu, pro Wikipedii a Google Translate je připojení
nutné. U slov nalezených ve slovníku WordNet nebo Google Translate lze přehrát
výslovnost anglických slovíček. Lze doinstalovat slovníky i pro další jazyky (němčina,
španělština, …) nebo slovník anglických nepravidelných sloves.
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní je pomocí záložek (TabView) umístěných v horní části obrazovky
rozděleno na tři části.
V první záložce (Search) je textové pole a tlačítko pro spuštění vyhledávání. V průběhu
psaní do textového pole jsou v seznamu pod ním zobrazovány shodné záznamy z offline
slovníků, které lze procházet. Po stisknutí tlačítka je spuštěno vyhledávání prvního slova
v seznamu. Případně lze zvolit jiné slovo ze seznamu. Při vyhledávání je seznam nahrazen
prohlížečem s výsledky. Zároveň jsou prohledány všechny zapnuté slovníky. Výsledky jsou
zobrazeny v pořadí slovníků v záložce Dicts a orámované barvou, která je zvolená u
každého slovníku.
12
U vyhledávání ve WordNetu lze přehrát americkou a britskou výslovnost. U každého
významu je zobrazen slovní druh, definice a příklad použití. Vazby mezi synsety (zde
pouze synonyma a antonyma) jsou zobrazeny jako odkazy, po kliknutí na odkaz je spuštěno
vyhledávání daného slova ve všech slovnících.
Google translate zobrazuje jedno slovo pro každý směr překladu, který byl zvolen
v nastavení slovníku. Kliknutí na tento výsledek zobrazí webovou stránku s výsledkem
vyhledávání v Google Dictionary, v případě Wikipedie je zobrazení výsledků stejné.
Ze záložky s vyhledáváním lze přes menu přistoupit do nastavení. Aplikace umožňuje
nastavit font a velikost písma.
V aktivitě s výsledky vyhledávání lze vyvolat Context menu, které umožňuje odeslat
vybraný výsledek vyhledávání přes bluetooth, Gmail nebo SMS. Výsledek je možné
zkopírovat do schránky. Po výběru položky Select a word je označený výsledek zvětšen a
kurzorem lze vybrat slovo, které je vloženo do textové pole a dojde ke spuštění nového
vyhledávání.
Další slovníky lze doinstalovat přes tlačítko Download Dictionary Data, které je
v záložce Vyhledávání po startu aplikace, uživateli jsou nabídnuty slovníky z Android
Marketu. Po stažení a nainstalování se spustí samostatná aplikace, která zkontroluje, zda je
nainstalována aplikace ColorDict, a překopíruje obsah slovníku na SD kartu a poté se
odinstaluje. Slovník je poté dostupný přímo v aplikaci ColorDict, kde ho lze nastavit. Další
možností je stažení slovníků ve formátu Stardict a jejich nahrání do složky dictdata na SD
kartu.
V druhé záložce (History) je seznam vyhledávaných slov a počet, kolikrát bylo slovo
vyhledáváno. Položky historie lze řadit podle času, počtu vyhledání a abecedně. Historii je
možné také smazat. Řazení i mazání je dostupné přes položky menu v záložce Historie.
Třetí záložka (Dicts) obsahuje nastavení slovníků. Nainstalované slovníky lze vypínat,
respektive zapínat. U Google Translate lze nastavit až tři směry překladu. U Wikipedie
maximálně dva jazyky, ve kterých bude probíhat vyhledávání. Jednotlivé slovníky je
možné přesouvat v seznamu a tím určit pořadí výsledků hledání.
Obrázek 9 Nastavení slovníků aplikace ColorDict
Obrázek 8 Zobrazení výsledků v aplikaci
ColorDict
13
Srovnání
Aplikace ColorDict spolu s aplikací Fora Dictionary umožňují vyhledávání ve více
zdrojích současně. Výsledky jsou zobrazeny v pořadí, v jakém jsou nastaveny jednotlivé
slovníky, to uživateli umožňuje porovnat například významy jednoho slova z více slovníků.
Vyhledávání ve slovníku WordNet nezobrazuje jednotlivé vazby mezi synsety, jsou
zobrazeny odkazy na synonyma (jednotlivá slova každého synsetu) a antonyma. Při
kliknutí je spuštěno vyhledávání a k původním výsledkům se lze vrátit pouze přes historii
nebo novým vyhledáváním původního slova.
Aplikace používá nativní grafické uživatelské rozhraní, její ovládání je jednodušší než u
aplikace Fora Dictionary, přitom poskytuje stejnou funkčnost. Ze všech zde popisovaných
aplikací bych tuto hodnotil jako nejlepší.
3.6.
Překladač Google
Tato aplikace je verzí Google Translate a Google Dictionary pro operační systém
Android. Program umožňuje překládat mezi více než 50 jazyky. Dále lze překládat přijaté
SMS zprávy, odeslat překlad přes bluetooth, Gmail nebo SMS. Aplikace vyžaduje připojení
k internetu.
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní se skládá ze dvou tlačítek pro volbu jazyka, tlačítka pro změnu směru
překladu a textového pole. Tyto prvky se nacházejí u horního okraje obrazovky. V dolní
části jsou dvě tlačítka - pro překlad SMS a historie vyhledávání.
Po stisknutí tlačítka pro volbu jazyka je zobrazen Spinner, kde je abecedně seřazený
seznam jazyků, naposledy vybrané jazyky jsou znovu zobrazeny na prvních pozicích, je
umožněna automatická detekce zdrojového jazyka.
Při překladu SMS je spuštěna nová aktivita se seznamem přijatých SMS, po vybrání je
SMS přeložena dle nastavených jazyků, popřípadě je umožněno pomocí stejného
uživatelského rozhraní měnit jazyky a směr překladu.
Vybrání historie spustí novou aktivitu se seznamem vyhledávaných slov včetně jejich
prvního překladu. Kliknutím na položku seznamu je spuštěna nová aktivita s vyhledáváním
podle parametrů použitých s danou položkou.
Při zadávání vyhledávaného textu je k dispozici nápověda (Autocomplete), kde je
obsažen i první překlad. Ve výsledcích je zobrazen překlad (Google Translate) a původní
slovo, překlady rozdělené podle slovních druhů a odkazy na související slovní spojení, po
kliknutí je spuštěno vyhledávání. Oproti webové verzi chybějí synonyma a definice.
V menu je dostupné odeslání výsledku vyhledání – ve zprávě je obsažen zdrojový jazyk,
vyhledávané slovo, cílový jazyk a překlad. U výsledků je také ikona pro přehrání
výslovnosti hledaného slova a prvního nalezeného překladu.
14
Obrázek 10 Zobrazení výsledků vyhledávání v
aplikaci Překladač Google
Srovnání
Aplikace Google Translate pro Android nabízí lepší grafické zpracování stejné funkce
jaké poskytuje například ColorDict. V současné verzi aplikace podporuje takzvaný
Conversation mode zatím pouze anglicko - španělský, jedná se o překlad mluvené
konverzace mezi lidmi. Díky této funkci by mohla aplikace v budoucnosti získat výhodu
oproti ostatním při překladu mluveného projevu.
3.7.
Fora dictionary
Fora dictionary používá offline slovníky i online zdroje (Wikipedia, Google Translate).
U offline slovníků je podporováno více formátů, např. StarDict nebo plain-text (oddělený
tabulátory). Všechny zdroje jsou uloženy na SD kartě. Slovníky lze stáhnout přímo
v aplikaci, nebo je nahrát na SD kartu. Některé online slovníky jsou dostupné pomocí
DICT protokolu2. Aplikace umožňuje vytvoření více profilů, kde je možné mít odlišné
nastavení slovníků. U nalezených slov je možné přehrání jejich výslovnosti nebo odeslání
výsledků přes SMS, Gmail nebo bluetooth.
Grafické uživatelské rozhraní a funkčnost
Grafické rozhraní aplikace je rozděleno na dvě části. U horního okraje obrazovky jsou
v jedné úrovni zobrazeny tlačítko přehrání výslovnosti, textové pole a tlačítko pro
vyhledávání. Zbytek obrazovky je použit pro zobrazení výsledků. Uživatel může použít
nápovědu, která je realizována pomocí Autocomplete, při zadávání textu. Je zobrazena při
podržení tlačítka pro vyhledávání. Pro zobrazení výsledků je použit WebView, každý zdroj
je orámován. Při novém vyhledávání se nespouští nová aktivita. Mezi jednotlivými
vyhledáváními se lze přesouvat pomocí tlačítek Next a Previous, která jsou ve WebView,
2
Slovníkový síťový protokol[6]
15
nebo pomocí stejně pojmenovaných položek v menu. Zde je dostupná i historie
vyhledávání, jejíž položky jsou řazeny abecedně.
V nastavení aplikace, položce Settings v menu, je možné měnit adresář pro uložení
slovníků, font a velikost písma. Aplikace umožňuje zobrazit navigační lištu ve WebView
s výsledky. Při použití navigační lišty je pro každý zdroj v liště graficky oddělená část, na
kterou lze kliknout a tím se přesunout na začátek příslušného zdroje.
Slovníky a jednotlivé zdroje se nastavují v menu v položce Manage. Zdroje lze vypínat
respektive zapínat, měnit jejich pořadí a tím i umístění ve výsledcích vyhledávání, měnit
barvy, které se zobrazují u položek v navigační liště. Aplikace umožňuje přidávat lokální
zdroje (slovníky v podporovaných formátech uložené na SD kartě), Wikipedii a Google
Translate (jazykové verze) nebo online slovníky podporující DICT protokol. Aplikace
obsahuje přednastavené servery pro online slovníky, například dict.org, kde jsou
dvojjazyčné slovníky. Jsou dostupné i některé offline slovníky, často pouze z angličtiny do
jiného jazyka, ale slovník pro opačný směr překladu není dostupný. Uživatel také může
slovník v podporovaném formátu nahrát na SD kartu, opět platí, že slovníky vyhledávají
pouze jedním směrem. Položka menu Layout vytváří nové profily, které umožňují odlišné
nastavení slovníků a zdrojů. Mezi profily lze přepínat pomocí položky Switch v menu nebo
tlačítka ve WebView s výsledky vyhledávání.
Pokud uživatel potřebuje vyhledat slovo obsažené ve výsledcích vyhledávání, může
zvolit položku menu Pick, poté se zvolí zdroj a řádek, nakonec se vybere slovo, aplikace
poté spustí nové vyhledávání. Tento způsob neumožňuje vybrat slovní spojení, které by
uživatel chtěl vyhledat. Text lze také označit pomocí položky Select and Search v menu.
Při použití této funkce uživatel nemůže rolovat zobrazenými výsledky, může označit úsek
textu pouze v oblasti, která byla zobrazena před zvolením funkce Select and Search.
Aplikace poté celý úsek vyhledá.
Výsledky vyhledávání nebo historii lze odeslat pomocí SMS, bluetooth nebo Gmail
nebo vyexportovat jako textový soubor či html stránku.
Obrázek 11 Zobrazení výsledků vyhledávání v aplikaci Fora dictionary
16
Srovnání
Aplikace Fora Dictionary využívá nativní grafické rozhraní operačního systému
Android. Aplikace umožňuje vyhledávání ve více zdrojích současně jako ColorDict, ale
ovládání programu přes menu, kde je více než dvacet položek, je velmi nepřehledné.
Odlišné je i formátování výsledků vyhledávání mezi jednotlivými slovníky v této aplikaci.
Ve slovníku English Dictionary and Thesaurus jsou jednotlivé významy barevně odděleny
od ukázkových vět, ve slovníku WordNet jsou významy i ukázkové věty formátovány
stejně a výsledky tak nejsou přehledné.
17
3.8.
Srovnávací tabulka
Klady
-
Dictionary.com
-
obsáhlé slovníky
-
Advanced English
Multi Lang
dictionary
-
-
jednoduché ovládání
nejlepší zobrazení
WordNetu
-
nelze instalovat další
slovníky
-
oproti ostatním
aplikacím malá
funkčnost
nepoužívá možnosti
Android GUI
nezobrazuje všechny
vazby mezi synsety
WordNetu
pro každý směr
vyhledávání vlastní
StarDict slovník
nutné přepínání mezi
jednotlivými
slovníky
oproti ostatním
aplikacím malá
funkčnost
pouze jeden online
zdroj
složité ovládání
nepřehledné
zobrazení výsledků u
některých slovníků
použití Wiktionary
-
Wordmate
-
jednoduché ovládání
více slovníků
-
-
použití více slovníků
zároveň
-
-
pěkné grafické zpracování
Conversation mode
použití více slovníků
zároveň
-
Colordict
Překladač Google
Fora dictionary
Tabulka 1 Zhodnocení existujících aplikací
18
Zápory
pouze online zdroje
nelze instalovat další
slovníky
nepoužívá možnosti
Android GUI
nutné přepínání mezi
jednotlivými
slovníky
-
3.9.
Motivace
V tabulkách Tabulka 1 Zhodnocení existujících aplikací a Tabulka 3 Srovnání
existujících řešení jsou zachyceny jednotlivé funkce a vlastnosti každé aplikace, kterou
jsem vybral pro srovnání. Je patrné, že většina aplikací používá shodné slovníky (u online
vyhledávání se jedná o Google Translate a Dictionary, u offline vyhledávání slovník
WordNet). Větší rozdíly mezi aplikacemi byly v případě grafického uživatelského rozhraní.
Funkčnost jednotlivých aplikací je velmi podobná.
Na základě porovnání těchto aplikací jsem navrhl grafické uživatelské rozhraní pro
vlastní aplikaci a vybral funkčnosti, které by měla splňovat. V následujících odstavcích
jsou popsány stěžejní požadavky.
Funkčnost
V předchozím srovnání se ukázalo, že u většiny aplikací jsou funkčnosti velmi podobné
nebo úplně shodné. Klíčová funkčnost se zdá být prohledávání více zdrojů zároveň.
Uživatel díky tomu nemusí přepínat mezi jednotlivými zdroji při vyhledávání stejného
slova a výsledky vyhledávání může snáze porovnat. Ze srovnávaných aplikací toto
umožňovaly pouze dvě – Colordict a Fora dictionary.
Pokud aplikace umožňuje prohledávání více zdrojů současně, je vhodné, aby
podporovala také nastavení jednotlivých zdrojů (vypínání/zapínání, pořadí výsledků
vyhledávání z jednotlivých zdrojů).
Aplikace by měla umožňovat zobrazení dříve hledaných slov (historii), toto bylo u
většiny srovnávaných aplikací implementováno.
Grafické uživatelské rozhraní
V uživatelském rozhraní byly rozdíly mezi aplikacemi větší. Některé aplikace
nevyužívají možnosti, které nabízí grafické rozhraní systému Android. Například v aplikaci
Dictionary.com by bylo možné jednotlivá tlačítka pro funkčnosti zobrazit po stisknutí
klávesy menu a tím ponechat více místa pro zobrazení výsledků vyhledávání. Stejný
problém je i u vyhledávacího pole u horního okraje obrazovky. Vyhledávací pole je malé,
ale barevná lišta, ve které je umístěno, zabírá zbytečně mnoho místa.
U aplikace Fora dictionary se ovládání stalo velmi nepřehledným kvůli nadměrnému
množství položek v menu a použití více funkcí, které dělají téměř totéž nebo je lze rychleji
spustit například z aktivity zobrazující výsledky vyhledávání.
Pro zobrazení výsledků vyhledávání se jako nejlepší ukázalo použití samostatného
webového prohlížeče, který byl umístěn přes celou obrazovku. Díky tomu uživatel vidí
nejvíce informací najednou. Výsledky lze také formátovat pomocí html a kaskádových
stylů.
Na základě porovnávaných aplikací se nejlepší volbou pro implementovanou aplikaci
ukázalo použití grafického rozhraní, které poskytuje operační systém Android. Důležité je
přehledné zobrazení co nejvíce vyhledaných informací.
Slovníky
Porovnávané aplikace používaly většinou totožné slovníky i způsob uložení. Offline
slovníky byly u testovaných aplikací uloženy v textových souborech, nejčastěji ve formátu
19
StarDict. Nejspíše proto, že slovníky v tomto formátu jsou volně dostupné na internetu. Při
použití tohoto formátu je nutné mít pro každý směr vyhledávání samostatný slovník.
Z online slovníků byl používán Google Translate a Google Dictionary, aplikace Multi
Lang Dictionary umožňovala vyhledávání ve Wiktionary.
Kvalita offline českých slovníků v testovaných aplikacích byla špatná. Všechny
aplikace používaly stejný slovník ve formátu StarDict. Nabízeny byly anglicko-český,
česko-anglický, německo-český a česko-německý slovník.
Ve většině aplikací byl použit slovník WordNet, který poskytuje podobné informace
jako výkladové slovníky. Většina aplikací nezobrazuje všechny dostupné informace
z WordNetu. Nejvíce jich zobrazí aplikace Advanced English and Thesaurus. Ostatní
aplikací nezobrazují vazby mezi synsety.
Pro ukládání slovníků v implementované aplikaci byla vybrána databáze SQLite, která
je nainstalovaná v zařízeních s operačním systémem Android. Informace získané z online
zdrojů budou uloženy do databáze, aby byly při příštím vyhledávání k dispozici bez
nutnosti připojení k internetu. Takto získané překlady budou díky tomu dostupné i při
použití opačného směru vyhledávání.
Pokud bude při dalším vyhledávání dostupné připojení k internetu, bude provedena
aktualizace získaných dat.
20
4. Analýza
V této kapitole jsou popsány jednotlivé použité technologie, informační zdroje, které
jsou použity ve vyhledávacích modulech. Jsou zde popsány také případy užití.
4.1.
Použité technologie
Při vývoji aplikací pro platformu Android lze využít oficiálně distribuovaný Android
SDK[7], který poskytuje nástroje pro vývoj a testování aplikací jako např. jednotlivé verze
operačního systému, emulátor mobilního zařízení, debugger. Aplikace lze psát v jazyce
Java a použít aplikační framework, nebo psát nativní aplikace v jazyce C/C++. Pro vývoj
v jazyce C lze použít Android NDK3.
Pro vývoj aplikace jsem zvolil jazyk Java a to zejména kvůli přenositelnosti aplikace a
použití aplikačního frameworku.
Operační systém Android
Android je operační systém určený pro mobilní zařízení. O jeho vývoj se stará
konsorcium Open Handset Alliance, kam patří společnosti jako Google, Samsung, HTC a
mnoho dalších. Android se skládá z pěti vrstev.





Linuxové jádro – Android používá Linux ve verzi 2.6, tvoří abstraktní vrstvu
mezi hardwarem a zbytkem softwaru
Knihovny – knihovny napsané v jazyce C/C++
Android Runtime – Dalvik virtual machine
Aplikační framework Android – umožňuje přístup k jednotlivým
knihovnám
Aplikace – psané v jazyce Java (využití aplikačního frameworku), lze však
použít i jazyk C/C++
Aplikační framework Android
Aplikační framework Android umožňuje vývojáři přistupovat ke stejnému API, které
používají aplikace předinstalované v telefonu (uživatelské rozhraní, kontakty uložené
v telefonu, zabudovaná SQLite databáze). Vývojář může použít všechny hardwarové
komponenty mobilního zařízení, např. GPS zařízení. Framework umožňuje
znovupoužitelnost komponent, díky kterému může aplikace využívat schopnosti ostatních
aplikací nebo lze jednotlivé komponenty vyměnit.
Každá aplikace běží ve vlastním procesu spolu s vlastní instancí Dalvik VM (virtual
machine). Tento virtuální stroj je registrově orientovaný na rozdíl od Java VM, který má
zásobníkově orientovanou architekturu.[9]
Mezi nejdůležitější součásti frameworku patří:


3
View system – část frameworku podporující tvorbu uživatelského rozhraní
Content Providers – umožňuje aplikacím přistupovat k datům jiných aplikací nebo
sdílet vlastní data
Native Development Kit - umožňuje vývojáři psát části aplikace přímo v nativním kódu[8]
21


Resource Manager – poskytuje přístup ke zdrojům mimo vlastní kód, např.
grafické prvky, xml soubory definující uživatelské rozhraní
Activity Manager – řídí životní cyklus aplikací
Databáze SQLite
Aplikační framework Android poskytuje API pro práci s databází SQLite. Většinou je
databáze umístěna v interní paměti zařízení a je přístupná pouze aplikaci, která ji vytvořila.
Kvůli předpokládanému nárůstu velikosti databáze a omezené interní paměti mobilních
zařízení jsem jako úložiště databází zvolil SD kartu. Toto umístění přináší některá rizika,
jako např. nedostupnost SD karty.
SQLite je relační databázový systém napsaný v jazyce C. Svou koncepcí se liší od
klasických databázových systémů, které využívají koncepci klient-server, zatímco SQLite
je samostatná knihovna, která je přilinkována k aplikaci. Každá databáze je uložena
v jednom samostatném souboru přímo v klientském zařízení. SQLite databáze je široce
využívána ve webových prohlížečích (Mozilla Firefox, Opera) nebo mobilních zařízeních
(Android, Symbian, Iphone).[10]
4.2.
Použité zdroje informací
Následující část obsahuje popis zdrojů informací použitých v modulech a přístupu
k informacím, které poskytují.
Slovnik.cz
Server slovnik.cz poskytuje překlady z českého jazyka do angličtiny, němčiny,
francouzštiny, španělštiny, italštiny, ruštiny, latiny, esperanta, polštiny a portugalštiny nebo
opačně. Neposkytuje překlad mezi libovolnými dvěma z těchto jazyků.
Na server slovnik.cz se lze odkazovat externě pomocí URL. Není zde poskytováno
žádné API pro přímý přístup, tudíž je nutné parsovat html kód stránky, kde jsou
lexikograficky seřazená slova.[11]
Google Translate API
Firma Google nabízí široké spektrum API, která jsou dostupná pro vývojáře na různých
platformách. Jedním z nich je i Google Translate API, to poskytuje programový přístup ke
Google překladači. Ten zajišťuje překlad slov, vět nebo webových stránek. Překlad je
možný mezi 57 jazyky.[12]
Pro přístup k tomuto API je nutné získat Google API key a zaplatit poplatek, protože od
1.12. 2011 je API přístupné pouze jako placená služba.
API poskytuje tři operace:
 translate – překlad mezi dvěma jazyky
 languages – vrací seznam podporovaných jazyků
 detect – detekuje jazyk použitý v textu.
Operace lze vyvolat přímo přes REST nebo vyvolat REST z Javascriptu. Google
neposkytuje přístup přímo k resourcům, ale přístup ke službě. Uživatel ke službě přistupuje
22
pomocí HTTP GET požadavku. V URI HTTP požadavku operace translate je obsažen
Google API key, text, zdrojový jazyk a cílový jazyk. Odpovědí je JSON.
Bing Translation API
Bing Translation API od společnosti Microsoft nabízí stejnou funkcionalitu jako
Google Translate API. Navíc nabízí například překlad pole textů. Pro přístup je potřeba mít
vygenerované Bing App ID, které je stejně jako celé API zadarmo.[13]
Přístup k API je možný přes Ajax, SOAP nebo HTTP interface. Já jsem ve své práci
použil HTTP interface, který vrací xml. Nevýhodou tohoto API je fakt, že pokud hledané
slovo v zadaném jazyce neexistuje (nebo ho překladač neumí přeložit), v xml je vráceno
zadané slovo, ale není signalizováno, že neexistuje.
MediaWiki API
MediaWiki API poskytuje přístup k datům obsaženým v databázích MediaWiki.
MediaWiki je společný název pro skupinu projektů, kam mimo jiné patří Wikipedia a
Wiktionary. Pomocí API se aplikace mohou přihlašovat, měnit obsah nebo získat data. API
poskytuje více výstupních formátů, např. JSON, xml nebo YAML.[14]
K API se přistupuje pomocí HTTP požadavku.
4.3.
Případy užití
Případy užití zachycují funkční požadavky na systém. V systém bude vystupovat pouze
jedna role – uživatel.
23
Obrázek 12 Případy užití
Vyhledávání
Hlavní úspěšný scénář:
1.
2.
3.
4.
Uživatel napíše vyhledávané slovo nebo slovní spojení do textového pole
Systém zobrazí seznam nalezených výsledků
Uživatel vybere jeden výsledek nebo spustí vyhledávání zadaného slova
Systém zobrazí všechny dostupné informace o slovu, které uživatel zvolil
Rozšíření:
4.a: Systém nenalezl žádný výsledek
.1 Systém zobrazí varování, že nenalezl žádný výsledek
.2 Uživatel může vyhledávat znovu, pak návrat do bodu 1
Zobrazení historie vyhledávání
Hlavní úspěšný scénář:
1. Uživatel zvolí položku Historie v menu
24
2. Systém zobrazí seznam vyhledávaných slov seřazených podle času vyhledávání
3. Uživatel vybere jednu položku z historie
4. Systém zobrazí všechny dostupné informace o výsledku, který uživatel zvolil
Rozšíření:
3.a: Uživatel zvolí smazat položku
.1 Systém smaže položku v historii vyhledávání
.2 Scénář pokračuje bodem 3
Nastavení primárního jazyka
Hlavní úspěšný scénář:
1. Uživatel zvolí položku Primární jazyk v menu
2. Systém zobrazí seznam jazyků
3. Uživatel vybere jeden jazyk
Nastavení sekundárního jazyka
Hlavní scénář:
1. Uživatel vybere tlačítko pro změnu sekundárního jazyka
2. Systém zobrazí seznam jazyků
3. Uživatel vybere jeden jazyk
Nastavení vyhledávacích modulů
Hlavní úspěšný scénář:
1. Uživatel zvolí položku Nastavení modulů v menu
2. Systém zobrazí seznam nainstalovaných modulů
Nastavení vyhledávacího modulu
Hlavní úspěšný scénář:
1.
2.
3.
4.
Uživatel spustí Nastavení vyhledávacích modulů
Uživatel vybere požadovaný modul
Systém zobrazí možnosti nastavení vybraného modulu
Uživatel změní nastavení
Vypínání/Zapínání vyhledávacího modulu
Hlavní úspěšný scénář:
1. Uživatel spustí Nastavení vyhledávacích modulů
2. Uživatel vybere možnost vypnout slovník
25
Rozšíření:
2.a: Slovník je vypnutý
.1 Uživatel vybere možnost zapnout slovník
Nastavení pozice vyhledávacího modulu
Hlavní úspěšný scénář:
1. Uživatel spustí Nastavení vyhledávacích modulů
2. Uživatel pomocí tlačítka změní pozici slovníku v seznamu
26
5. Architektura
Aplikace je napsána v programovacím jazyce Java a používá aplikační framework
Android. Jednotlivé moduly jsou zodpovědné za vyhledávání v rámci svého zdroje. Pro
zobrazení výsledků vyhledávání je použit webový prohlížeč, jehož obsah je modifikován
pomocí javascriptu.
Aplikaci lze rozdělit na dvě části. První část zajišťuje kompletní uživatelské rozhraní
pro vyhledávání, zobrazení výsledků, nastavení aplikace a vyhledávacích modulů a historii
vyhledávání. Stará se i o přenos výsledků vyhledávání mezi moduly a uživatelským
rozhraním. Při vyhledávání volá funkce vyhledávacích modulů. Tato část je popsána
v kapitolách Uživatelské rozhraní, JavascriptInterface a Implementace databáze.
Druhou část tvoří jednotlivé vyhledávací moduly. Každý modul je zodpovědný za
vyhledávání informací v informačním zdroji a předání výsledků vyhledávání do aplikace.
Případné ukládání dat zajišťuje také modul.
Při návrhu aplikace byl kladen důraz na její snadnou rozšiřitelnost o další moduly.
Každý modul musí implementovat rozhraní, kde jsou definovány metody pro práci
s modulem.
Správu
modulů
zajišťuje
třída
net.extbrain.android.app.lookup.tools.ModulesHolder. Zde jsou vytvářeny instance
jednotlivých modulů a načítáno jejich nastavení (vypnutí/zapnutí, pořadí). Tato část je
popsána v kapitolách ModuleInterface, Implementace databáze a Implementované moduly
pro získávání informací.
Výsledky vyhledávání jsou předávány do webového prohlížeče ve formě JSON objektů.
V prohlížeči jsou parsovány Javascriptem, který zajišťuje jejich zobrazení ve webové
stránce. Tento přístup umožňuje změnit styl webové stránky a nebo zobrazení výsledků
z jednotlivých modulů. Vytvoření nové šablony je popsané v kapitole Tvorba šablon pro
zobrazení výsledků vyhledávání.
5.1.
Uživatelské rozhraní
V této kapitole je nejprve popsán princip fungování grafického uživatelského rozhraní
na platformě Android, poté konkrétní implementace, která je použita v aplikaci.
Uživatelské rozhraní v aplikačním frameworku Android
Uživatelské rozhraní se v Androidu skládá z objektů typu android.view.View,
android.view.ViewGroup nebo jejich potomků. Třída View slouží jako rodičovská třída pro
všechny grafické prvky nazývané „widgets“, jedná se například o tlačítko, textové pole atd.
Třída ViewGroup je rodičovská třída pro prvky označované jako „layouts“, které definují
rozložení grafických prvků v okně.
Aplikační framework Android umožňuje definovat vzhled uživatelského rozhraní v xml
souborech nebo programově při běhu aplikace. Výhodou použití xml souborů je oddělení
prezentační vrstvy od kódu aplikace. Pokud potřebujeme s prvky pracovat programově,
můžeme je přiřadit do proměnných a poté s nimi v kódu pracovat. Tento postup jsem použil
v celé aplikaci.
27
Každá aplikace se typicky skládá z komponent, tzv. aktivit. Jedná se o třídy typu
android.app.Activity nebo jejich potomky. Každá instance této třídy vytvoří okno, do
kterého lze nahrát uživatelské rozhraní z xml souboru nebo ho programově vytvořit. Jedna
aktivita je definována jako hlavní, ta je spuštěna při startu aplikace. Další aktivity lze
spouštět pomocí metody startActivity() a parametru typu android.content.Intent, který
popisuje jakou aktivitu chceme spustit. Vždy při spuštění nové aktivity je stávající aktivita
zastavena a uložena na zásobník. Při skončení aktivity je ze zásobníku vyjmuta předchozí
aktivita a opět spuštěna.
Každá aplikace obsahuje soubor nazvaný AndroidManifest.xml, který poskytuje
základní informace o aplikaci. Jsou zde uvedeny aktivity (jinak by je nebylo možné spustit)
nebo přístup k SD kartě a internetu.
Implementace uživatelského rozhraní
Celá
aplikace
se
skládá
z
pěti
aktivit, které jsou umístěny v balíčku
net.extbrain.android.app.lookup.presentation. Obrázek 29 Diagram tříd v balíčku
presentation zobrazuje diagram aktivit.
Aktivita SlovnikList je nastavena jako hlavní, tudíž je spuštěna při startu aplikace. Její
vzhled je definován v souboru listlayout.xml. Tato aktivita slouží pro zadání
vyhledávaného slova nebo slovního spojení. Při zadání tří a více znaků poskytuje
našeptávač v podobě seznamu slov, který je zobrazen pod polem pro zadávání textu.
V seznamu jsou nejprve abecedně seřazená slova z primárního jazyka, poté ze
sekundárního a nakonec abecedně seřazená slova z ostatních jazyků, které aplikace
podporuje. Našeptávač je realizován grafickým prvkem ListView. Vzhled řádku našeptávače
je definovaný v souboru wordrow.xml.
Pro
vyhledání
položek
našeptávače
jsou
použity
vnitřní
třídy
GetWordsFromOfflineDatabase, která prohledává offline databázi na SD kartě telefonu, a
GetWordsFromWiki, která používá MediaWiki API (popsáno u modulů Wiktionary a
Wikipedia) pro získání seznamu hesel ze serveru wikipedia.org. Obě třídy mají společného
předka, tím je třída android.os.AsyncTask.
Třída AsyncTask zajišťuje své vykonání v samostaném vlákně a poté předání výsledku
zpět do vlákna uživatelského rozhraní.[15] Toto je velmi důležité právě u časově nebo
výpočetně náročných operací, které jsou spouštěny z jednotlivých aktivit. Pokud bychom
nepoužili samostatné vlákno, došlo by k zablokování vlákna, které se stará o běh
uživatelského rozhraní.
Nalezené výsledky pro našeptávač jsou vloženy do seznamu pomocí metody update()
ve vnitřní třídě WordListAdapterWrapper. Tím je zaručena synchronizace mezi více vlákny,
která nahrávají položky do našeptávače.
28
Obrázek 13 Úvodní obrazovka spolu s menu
implementované aplikace
Obrázek 14 Našeptávač implementované aplikace
Při každém vyhledávání je hledané slovo nebo slovní spojení uloženo do databáze
history. Historie hledání je zobrazena ve třídě HistoryView. Pro zobrazení je opět použit
grafický prvek ListView, vzhled řádku je definován v souboru historyrow.xml.
V historii lze smazat buď jednotlivé položky – kliknutím na ikonu křížku v řádku
seznamu nebo celou historii – přes položku v menu.
Pomocí ikony Lupa lze spustit nové hledání v rámci stejných jazyků, pro které byla
položka vyhledávána. Kliknutím do řádku seznamu dojde k ukončení aktivity historie a
slovo z historie bude nakopírováno do textového pole hlavní aplikace, která je spuštěna
místo stávající aktivity. Slovo lze poté upravit a nebo spustit vyhledávání v rámci jiných
jazyků.
Pro déle trvající operace (vyhledávání a mazání v databázi) je opět použit potomek třídy
AsyncTask, aby nedošlo k zablokování uživatelského rozhraní.
Nastavení aplikace je řešeno v aktivitě Preferences, její vzhled je definovaný v souboru
preferences.xml. Aplikační framework Android poskytuje grafické prvky pro tvorbu
nastavení. Jedná se například o přepínače, textové pole, prvek pro výběr jedné hodnoty
z více (ListPreference).
Hodnoty získané z nastavení lze uložit přímo v systému Android. Třída
android.content.SharedPreferences poskytuje metody pro uložení a získání dvojic klíčhodnota, kde mohou být uloženy primitivní typy. Tato data zůstávají persistentní i po
ukončení aplikace.[16]
V nastavení aplikace lze zvolit primární jazyk, maximální počet paralelně běžících
vláken pro stahování a nastavit vzhled pro webový prohlížeč, který definuje naformátování
výsledků vyhledávání. Pro uchování všech hodnot nastavení používám již zmíněnou třídu
SharedPreferences.
29
V aktivitě ModulesSettings je možné nastavovat jednotlivé moduly pro získávání
informací. Uživatelské rozhraní je opět realizováno pomocí prvku ListView, jehož řádek je
definovaný v souboru dictionaryrow.xml. Jednotlivé moduly lze vypínat, resp. zapínat a
měnit jejich pořadí. Změna pořadí se provádí tažením za ikonu úplně vlevo na každém
řádku. Její funkcionalitu poskytuje třída com.android.music.TouchInterceptor.
Pokud má modul možnost vlastního nastavení, je u něj zobrazena ikona spouštějící
samostatnou aktivitu. Za její chování je zodpovědný patřičný vyhledávací modul. Typicky
se jedná například o nastavení přístupových údajů ke službě poskytující informace (např.
Google API key).
Obrázek 15 Zobrazení historie vyhledávání
Obrázek 16 Nastavení modulů
Aktivita ResultsWebView spouští webový prohlížeč pro zobrazení výsledků
vyhledávání. Její vzhled je definovaný v souboru webviewlayout.xml. Pomocí metody
addJavacriptInterface() je k prohlížeči připojen objekt. Metody tohoto objektu lze volat
z Javascriptu běžícím ve webovém prohlížeči a naopak.
30
Obrázek 17 Zobrazení výsledků vyhledávání
5.2.
JavascriptInterface
Aplikační framework Android umožňuje do webového prohlížeče zapojit objekt, jehož
metody lze volat z Javascriptu. Objekt se zapojí voláním metody addJavascriptInterface() na
instanci webového prohlížeče. První parametr je typu java.lang.Object (objekt, jehož
metody lze volat z Javascriptu), druhý parametr je název interfacu. Objekt zapojený jako
JavascriptInterface běží v jiném vlákně, než byl vytvořen.[17] Z Javascriptu lze volat
metody objektu pomocí tečkové notace: nazevInterfacu.nazevMetody. Metody Javascriptu
lze z Javy volat pomocí metody loadUrl() na instanci prohlížeče. Parametrem je URL, které
začíná javascript: a následuje volání funkce (např. javascript:fill();).
V aplikaci tuto funkcionalitu používám pro předávání informací mezi Javascriptem
běžícím ve webovém prohlížeči a zbytkem aplikace. Přes JavascriptInterface jsou
předávány jednotlivé JSON objekty s výsledky vyhledávání, z Javascriptu lze volat funkce,
které poskytují informace o vyhledávání – primární a sekundární jazyk, seznam zapnutých
modulů, spuštění vyhledávání apod.
V aplikaci
je
k
webovému
prohlížeči
připojena
instance
třídy
net.extbrain.android.app.lookup.bussiness.WebViewInterface.
Metoda getSources() vrací JSON objekt, ve kterém je pole s názvy zapnutých
vyhledávacích modulů, pole je seřazeno podle pořadí nastaveného v aktivitě
DictionarySettings.
Obrázek 18 Ukázka JSON objektu vráceného metodou getSources()
31
Metody getPrimaryLanguage() a getSecondaryLanguage() vracejí primární, resp.
sekundární jazyk. Metoda getSearchedWord() vrací hledané slovo nebo slovní spojení.
Metoda getNothingFound() vrací textový popis pro případ, že nebylo nic nalezeno,
návratovou hodnotu z metody getNext() lze použít pro generování informace, že zdroj
může hledat další data. Poslední dvě jmenované metody načítají hodnoty z resourců, lze je
tedy použít při případné lokalizaci aplikace.
Metoda retrieveData() spustí samostané vlákno, které provede vyhledávání ve všech
zapnutých modulech, podle jejich nastaveného pořadí. Nejprve spustí asynchronní
stahování dat pro všechny moduly, které to vyžadují. Poté postupně prohledá lokální
databáze zdrojů podle nastaveného pořadí. JSON s výsledky vyhledávání je okamžitě
předán Javascriptové funkci, která je parametrem funkce retrieveData(), aby je mohla
zobrazit v prohlížeči. Poté jsou jednotlivým modulům předány odpovědi, které byly
staženy. Odpovědi jsou do modulů předávány dle pořadí, ve kterém byly staženy, aby
nedocházelo ke zdržení (např. timeout, vytížené servery apod.). JSON objekty
z jednotlivých modulů jsou opět ihned přeposílány do prohlížeče. Nakonec je nad
jednotlivými moduly volána funkce pro uložení aktualizovaných dat.
Metoda retrieveNextData() spustí další vyhledávání v modulu, který byl zadán
v parametrech funkce. Průběh metody je shodný s předchozí metodou, pouze je
vyhledávání prováděno v rámci jednoho modulu a jednoho směru vyhledávání. Tato
metoda je potřebná pro zdroje, kde nelze všechny informace k vyhledávanému slovu
stáhnout jedním požadavkem. Jedná se například o slovnik.cz, kde je maximální počet
položek v jednom požadavku 50, pro stažení dalších je potřeba parsovat další webovou
stránku.
5.3.
ModuleInterface
Třída net.extbrain.android.app.lookup.bussiness.ModuleInterface definuje rozhraní,
které musí implementovat každý vyhledávací modul.
Rozhraní definuje následující metody:
 getName() – vrací jméno modulu, např. Wiktionary, SlovnikCz
 hasSettings() – vrací hodnotu typu boolean, zda má modul vlastní nastavení
 startSettings() – spustí vlastní nastavení slovníku
 getDownloadConnections() – vrací seznam instancí typu HttpConnection pro
oba směry vyhledávání, které budou spuštěny ve funkci retrieveData()
v javascriptInterfacu
 getDatabaseRecords() – vrací výsledky nalezené v lokální databázi pro oba
směry vyhledávání
 getUpdates() – vrací výsledky nalezené při aktualizaci, v této metodě doporučuji
provést porovnání s lokálními výsledky, aby se do prohlížeče neposílala dvakrát
stejná data
 insertUpdates() – zde se implementuje uložení získaných aktualizací
Následující metody provádějí stejnou funkcionalitu jako předchozí metody. Funkcionalita
se provádí pro další vyhledávání a stahování. Vyhledává se pouze jedním směrem.
32




getNextDownloadConnection()
getNextDatabaseRecords()
getNextDatabaseUpdates()
insertNextUpdates()
Pokud modul nepotřebuje funkcionalitu pro další vyhledávání a stahování, lze ho
vytvořit
děděním
od
abstraktní
třídy
net.extbrain.android.app.lookup.bussiness.BaseModuleClass.
5.4.
Implementace databáze
V aplikaci jsou dva typy databází. První je databáze history, která uchovává historii
vyhledávání včetně jazyků. Druhý typ databáze používají jednotlivé moduly pro uložení
získaných dat. Každý modul, který svá data ukládá, má vlastní databázi, její jméno se
shoduje se jménem modulu.
Databáze history
Databáze history slouží pro ukládání historie vyhledávání. V databázi je uloženo
vyhledávané slovo nebo slovní spojení spolu s jazyky, pro které bylo vyhledávání
provedeno. V aktivitě HistoryView jsou poté záznamy seřazeny sestupně podle sloupce Date
v tabulce Words.
Obrázek 19 Schéma history databáze
Databáze pro vyhledávací moduly
Pro vyhledávací moduly jsem vytvořil univerzální databázové schéma, které umožňuje
ukládat více typů informací než pouze překlady. V této kapitole je popsán projekt
WordNet, ze kterého jsem při návrhu schématu vyšel, poté je vysvětlen význam
jednotlivých tabulek a sloupců v databázi a nakonec příklady, jak schéma použít při
ukládání informací ze slovníků.
WordNet je lexikální databáze anglického jazyka vyvíjená na univerzitě Princeton od
roku 1985. V databázi jsou obsažena podstatná a přídavná jména, slovesa a příslovce.
Jednotlivá slova jsou seskupována do synonymických řad, tzv. synsetů. Ke každému
synsetu poskytuje WordNet krátké definice nazývané gloss a k většině i příklady použití.
33
Jednotlivé synsety jsou vzájemně spojeny vazbami. Ty se liší v závislosti na slovním druhu.
U podstatných jmen to jsou například: nadřazený, vztah celek-část a obráceně. U sloves se
jedná například o: nadřazený pojem, tzv. troponymum (sloveso Y je troponymem ke
slovesu X, jestliže Y znamená dělat X nějakým způsobem). Vztahy mezi synsety jsou
definovány i pro přídavná jména a příslovce.[18]
WordNet je použitelný jako výkladový slovník a zároveň jako thesaurus4, uplatnění má
v textové analýze a umělé inteligenci.[19]
Názvy tabulek v databázovém schématu jsou shodné nebo podobné s terminologií
používanou v projektu WordNet.
Základem je tabulka Synsets, která obsahuje cizí klíče do tabulek Languages, Sources a
WordClasses. V tabulce Languages jsou uloženy jednotlivé jazyky. Tabulka Sources
obsahuje výčet jednotlivých zdrojů, např. slovnik.cz, wikipedia nebo wiktionary. Tabulka
WordClasses určuje slovní druh synsetu.
V tabulce VocableSynsets je ve sloupci Vocable uložena slovo nebo slovní spojení,
které patří do synsetu. Sloupec WordOrder určuje pořadí mezi jednotlivými slovy v synsetu.
Tabulka SynsetLinkSynsets zachycuje vazby mezi jednotlivými synsety. Typ vazby je
popsán v tabulce LinkTypes, např. překlad, antonymum, 1. pád atd. Sloupce
SourceSynsetOrder a TargetSynsetOrder popisují pořadí jednotlivých synsetů, které jsou ve
vazbě. To lze použít u překladů, pokud je pevně dáno pořadí přeložených synsetů.
Tabulka Glosses zachycuje text, který je připojen k jednotlivým synsetům. Typ textu
bude uložen v tabulce GlossType, např. definice, použití, poznámka atd. Tabulka
GlossSynsets je pouze vazební tabulka.
Pro zrychlení vyhledávání jsem přidal indexy pro následující sloupce: Vocable a
SynsetId v tabulce VocableSynsets, SourceId a TargetId v tabulce SynsetLinkSynsets.
4
Slovník nabízející seznam synonym
34
Obrázek 20 Schéma databáze modulů
Použití databáze pro překladový slovník ukáži na použití v modulu SlovnikCz. V tomto
modulu probíhá překlad vždy mezi českým jazykem a jedním z podporovaných cizích
jazyků nebo opačně. Pro každé slovo v každém jazyce jsem vytvořil jeden záznam
v tabulce Synsets, který má přiřazen právě jeden záznam v tabulce VocableSynsets (z
tohoto zdroje nelze určit, zda překlady získané pro jednotlivá slova jsou synonyma), zde je
vyplněný sloupec Vocable a cizí klíč odkazující na záznam v Synsets. V tabulce Sources je
jediný záznam – SlovnikCz. Každý záznam v tabulce Synsets obsahuje cizí klíč právě na
záznam v tabulce Sources. Vazba mezi záznamy v tabulce Synsets (záznam v tabulce
LinkType) je pouze translation.
Pořadí jednotlivých překladů udává TargetSynsetOrder, pokud sloupec SourceId
obsahuje id synsetu, který je vytvořen pro hledané slovo. Pokud je id synsetu ve sloupci
TargetId, pořadí určuje SourceSynsetOrder.
35
Při ukládání překladů, tj. vazeb mezi synsety jsem nejprve pomocí metody compareTo()
porovnal jazyky obou synsetů. Podle návratové hodnoty funkce jsem určil buď sloupec
SourceId, nebo TargetId. Při vyhledávání stačí opět porovnat jazyky a víme, v jakém pořadí
provázat tabulky.
Při ukládání dat z výkladového slovníku by byly použity tabulky VocableSynsets,
Synsets, Sources a Languages stejně jako v předchozím případě. Doplňující informace
k jednotlivým slovům by byly uloženy v tabulce Glosses. V tabulce GlossType by byl
uložen typ informace, např. definice. Pokud by bylo potřebné zachytit vazby mezi
jednotlivými slovy nebo synsety, použila by se tabulka SynsetLinkSynsets jako
v předchozím případě.
36
6. Implementované moduly pro získávání informací
Pro informační zdroje popsané v kapitole Použité zdroje informací jsem vytvořil
moduly. Zdroj MediaWiki je použit v modulu Wikipedia a Wiktionary. Modul offline
používá překladový slovník, který je ke stažení na stránkách dict.info5. Všechny moduly
musejí implementovat rozhraní ModuleInterface, nebo být potomkem třídy
BaseModuleClass.
V následujících kapitolách je popsána struktura jednotlivých modulů, konkrétní
implementace přístupu ke zdrojům informací a případné odlišnosti od implementace, která
je popsána v kapitole ModuleInterface.
6.1.
Modul SlovnikCz
Implementace modulu se nachází v balíčku net.extbrain.app.lookup.modules.slovnikcz.
Třída SlovnikCzModule implementuje rozhraní ModuleInterface. Protože tento modul
získává překlady ze serveru Slovnik.cz, poskytuje překlady pouze mezi českým jazykem a
cizím jazykem nebo obráceně. To je kontrolováno v metodách getDownloadConnections() a
getDatabaseRecords().
Pro vyhledávání v databázi používá modul třídu TranslationDAO. Kvůli pozdějšímu
porovnání výsledků z databáze a aktualizovaných výsledků je z databáze použito prvních
padesát nalezených překladů. Nalezené výsledky jsou přiřazeny do instanční proměnné pro
pozdější porovnání.
Výsledky z databáze jsou předány do webového prohlížeče v JSON reprezentaci na
obrázku 21. Hodnoty Source obsahuje název modulu, LanguageFrom udává jazyk, ve
kterém bylo hledáno zadané slovo, a LanguageTo jazyk výsledku. Hodnota hasNext udává,
zda jsou v databázi další výsledky, Count určuje pořadí vyhledávání v databázi (při každém
vyvolání funkce getNext() v javascriptInterfacu je hodnota inkrementována). Překlady jsou
uloženy v poli, kde je pro každé nalezené slovo (WordFrom) jeden JSON objekt. Hodnota
Words je pole s přeloženými výrazy.
5
Server nabízející volně dostupné online i offline slovníky
37
Obrázek 21 JSON s výsledky vyhledávání modulu SlovnikCz
Pro aktualizaci dat je potřeba poslat HTTP GET požadavek na server Slovnik.cz.
Odpověď je poté v metodě getUpdates() předána do třídy SlovnikCzParser, kde jsou
v metodě translate vyparsovány překlady. Protože server Slovnik.cz neposkytuje API pro
přístup ke slovníkům, je zde parsován html kód stažené stránky. Pro parsování je použit
XmlPullParser, který je součástí Androidu.
Pomocí jednoho požadavku lze získat maximálně 50 položek. Tyto položky jsou
abecedně seřazeny, při parsování proto kontroluji, zda je získaná hodnota shodná nebo
začíná hledaným slovem. Pokud tato podmínka platí u všech padesáti položek je
vyparsována i adresa další stránky. Formát JSONu posílaného do prohlížeče je totožný
s JSON objektem posílaným s výsledky z databáze.
6.2.
Modul Wikipedia
Modul Wikipedia vyhledává články na serveru wikipedia.org. Úvodní sekce nalezeného
článku je zobrazena ve webovém prohlížeči aplikace spolu s odkazem na stránku s celým
článkem. Pokud uživatel klikne na odkaz, stránka je otevřena ve výchozím webovém
prohlížeči mobilního zařízení. Všechny překlady jsou staženy jedním požadavkem, proto
není nutné implementovat funkce pro další vyhledávání.
K obsahu Wikipedie je použito MediaWiki API. Konkrétně akce parse[20], která vrací
html kód požadované stránky. Tato akce je volána pro primární i sekundární jazyk zvlášť.
Získaná odpověď je předána metody parseResponse() ve třídě WikipediaParser. Pomocí
JSoup6 parseru je z html kódu vyparsován text úvodní sekce a podle jazyka sestavena
adresu odkazu na mobilní verzi Wikipedie.
Formát JSON objektu posílaného do webového prohlížeče má následující formát.
Hodnota Leading Section je text v úvodní sekci, Page Address je adresa článku na serveru
wikipedia.org.
6
HTML parser
38
Obrázek 22 JSON s výsledkem vyhledávání ve Wikipedii
6.3.
Modul offline
Modul offline vyhledává překlady pouze v lokální databázi uložené na SD kartě. Data
do této databáze byla stažena ze serveru dicts.org v podobě xml souborů. Pro naparsování
vstupních souborů byl použit XmlPullParser ve třídě OfflineParser. Naparsovaná data jsou
v databázi offline.
Modul je potomkem třídy BaseModuleClass, protože zde modulu není potřeba funkce
pro další vyhledávání
Vyhledávání v databázi je implementováno ve třídě OfflineTranslationDAO.
Vyhledávání probíhá vždy z primárního, resp. sekundárního jazyka do všech ostatních
jazyků, které jsou v databázi. V JSON objektu jsou zahrnuty všechny výsledky. Hodnoty
LanguageFrom a LanguageTo jsou jazyky nastavené pro vyhledávání. Výsledky jsou
uloženy v poli, pro každý směr vyhledávání jeden JSON objekt. Hodnota LanguageTo
v tomto objektu určuje v jakém jazyce byl výsledky (Words) nalezeny.
Obrázek 23 JSON s výsledky vyhledávání z modulu offline
39
6.4.
Modul Wiktionary
Modul Wiktionary získává překlady ze serveru wiktionary.org, pro přístup k datům
používá MediaWiki API. Struktura získaných dat je stejná jako v modulu offline (tj. jedním
vyhledáváním lze získat překlad z jednoho jazyka do více jazyků). Rozdíl oproti ostatním
modulům je v počtu HTTP požadavků pořebných pro získání dat. Tento modul potřebuje
dva požadavky, ostatní pouze jeden.
Implementace
modulu
je
v balíčku
net.extbrain.android.app.lookup.modules.wiktionary. Z metody getDownloadConnections()
je vrácen seznam s prvky typu WiktionaryHttpConnection, který je potomkem třídy
HttpConnection. V této třídě je nejprve volána akce query[21] z MediaWiki API, která vrátí
seznam článků a jejich identifikátorů, jejichž název odpovídá hledanému slovu. Tato
odpověď je parsována pomocí třídy ApiParser. Dále je vytvořena nová instance typu
HttpConnection, která stáhne obsah (akce parse[20]) požadovaného článku. Odpověď je
předána do třídy WiktionaryParser, která pomocí XmlPullParseru vyparsuje jednotlivé
překlady z html kódu stránky.
Formát JSON objektu s výsledky databáze je shodný s formátem použitým v offline
modulu. JSON s výsledky vyhledávání ze serveru má navíc hodnotu Page Address, která
udává adresu mobilní verze stránky s hledaným slovem.
Obrázek 24 Formát JSON objektů modulu Wiktionary
6.5.
Modul Bing Translate
Tento modul používá pro získání překladů Bing Translation API, získané překlady jsou
ukládány do databáze. Vyhledávání probíhá vždy mezi primární a sekundárním jazykem,
nebo opačně. Všechny překlady jsou staženy jedním požadavkem, proto není nutné
implementovat funkce pro další vyhledávání.
Implementace
modulu
se
nachází
ve
třídě
net.extbrain.android.app.lookup.modules.translate.BingTranslateModule.
Vyhledávání
v databázi je implementováno ve třídě OneToOneTranslationDAO. Stažená odpověď je
40
předána do metody translate() ve třídě BingParser. Pro parsování staženého xml je použit
XmlPullParser.
Formát JSON objektu posílaného do prohlížeče je shodný s formátem JSON objektu
použitého v modulu Slovnikcz.
6.6.
Modul Google Translate
Google Translate modul je velmi podobný modulu Bing Translate, pouze používá
Google Translate API. Rozdíl je v typu, který vrací API. V tomto module se jedná o JSON
oproti xml v Bing Translate modulu. Na rozdíl od všech ostatních modulů má Google
Translate modul možnost vlastního nastavení.
Implementace
modulu
je
v balíčku
net.extbrain.android.app.lookup.modules.translate.google.
Vlastní vyhledávání je
implementováno ve tříde GoogleTranslateModule. Metoda hasSettings() musí vracet
hodnotu true, aby byla zobrazena ikona pro nastavení modulu. Metoda startSettings() spustí
aktivitu definovanou ve třídě GoogleTranslatePreference.
Grafický
vzhled
nastavení
modulu
je
definovaný
v souboru
googletranslatepreference.xml, v tomto případě se jedná pouze o textové pole, které slouží
pro zadaní klíče pro přístup ke službě Google Translate. Jeho hodnota je uložena pomocí
dříve popsané třídy android.content.SharedPreferences.
41
42
7. Tvorba nových modulů pro vyhledávání
Nový modul pro vyhledávání informací lze vytvořit velmi jednoduše a to implementací
rozhraní ModuleInterface. Pokud modul nepodporuje funkce pro další vyhledávání, stačí
rozšířit třídu BaseModuleClass. Dále je potřeba přidat do konstruktoru třídy ModulesHolder
– dictionaries.add(new Module());. Modul musí mít definovaný název, který je dostupný
pomocí metody getName(). Tento název musí být unikátní v rámci všech nainstalovaných
modulů.
Pro každé vyhledávání jsou vytvořeny nové instance všech vyhledávacích modulů.
Tudíž lze výsledky z lokálního zdroje přiřadit do proměnné instance a využít při pozdějším
porovnání s aktualizovanými výsledky.
Pokud má metoda v ModuleInterface parametry primaryLanguage a secondaryLanguage
je volána pro každé vyhledávání pouze jednou, proto je potřeba do návratové hodnoty
zahrnout všechny směry vyhledávání.
Stahování dat
Veškeré
stahování
dat
musí
zajišťovat
třída
net.extbrain.android.app.lookup.tools.ConnectionManager, která hlídá maximální počet
paralelně běžících stahování.
Pokud modul vyžaduje stahování dat, měl by implementovat funkci
getDownloadConnections(), kde vrátí seznam instancí třídy HttpConnection, nebo jejích
potomků. Tato funkce je volána pro každé vyhledávání pouze jednou, proto je potřeba
vrátit seznam, který obsahuje instance HttpConnection pro všechny směry vyhledávání. O
správné stažení těchto vláken se postará implementace javascriptInterfacu. Odpovědi
z těchto stahování modul dostane jako parametr response ve funkci getUpdates().
Příklad implementace je z modulu Bing Translate, kde je vidět, že modul vrací instance
HttpConnection pro oba směry vyhledávání.
Obrázek 25 Ukázka implementace metody getDownloadConnections()
Získání informací ze stažených dat
Parsování dat z HTTP odpovědí je implementováno v metodě getUpdates(). Tato
metoda je zavolána pro každé dokončené stahování (každá instance HttpConnection, která
byla vrácena z metody getDownloadConnections()).
43
Pro parsování dat lze použít nekterá API dostupná přímo v Androidu. Pro xml například
XmlPullParser, pro JSON objekty například balíček org.json.
Návratová hodnota funkce getUpdates() je ResultInterface. Pokud by pro Váš modul
nevyhovovala žádná implementace v aplikaci vytvořte si vlastní pomocí implementování
rozhraní ResultInterface. V metodě getJSON() vytvořte JSON objekt, který bude poslán do
webového prohlížeče.
Pokud nový modul vrací JSON shodný s JSON objektem, který vrací již existující
modul, stačí patřičně upravit Javascriptovou funkci fill(), aby podle názvu modulu volala
funkci pro tvorbu html kódu z JSON objektu. Pokud jste vytvořili zcela nový JSON, je
potřeba vytvořit také funkci, která se postará o vytvoření html kódu z tohoto JSON objektu.
Poté upravte funkci fill(), aby zavolala Vaši novou funkci. Funkce fill() se nachází ve složce
assets v souboru default.js.
Přístup do databáze
Pro přístup do databáze je použita třída SQLiteHelper, která je potomkem třídy
android.database.sqlite.SQLiteOpenHelper.[22] Tato třída vytváří databáze umístěné ve
složce cz.slovnik/databases na SD kartě. Schéma databáze je popsáno v kapitole Databáze
pro vyhledávací moduly. V aplikaci je jedna instance této třídy pro každou databázi, odkaz
na instanci získáte voláním metody getInstance().
Pokud potřebujete databázi s jiným schématem doporučuji postupovat obdobně.
Vytvořit vlastní třídu, která bude potomkem SQLiteOpenHelper. Pro každou databázi,
kterou tato třída spravuje, musí být v aplikaci jediná instance, čímž se zaručí vláknová
bezpečnost. Tato třída se postará i o zavírání databáze, to se hodí zejména při přístupu
k databázi z více vláken. Při volání konstruktoru nadtřídy lze použít novou instanci třídy
DatabaseContext jako parametr, tím je zajištěno vytvoření databáze ve výše zmiňované
složce na SD kartě. Vlastní SQL příkazy pro definic dat jsou v metodě onCreate().
Vyhledávání dalších informací
Pro vyhledávání dalších informací slouží metody getNextDownloadConnection(),
getNextDatabaseRecords(), getNextUpdates() a insertNextUpdates(). Jejich smysl i
implementace jsou velmi podobné jako u metod popsaných v této kapitole. Všechny tyto
metody jsou volány pouze pro jeden směr překladu. Parametr count určuje kolikáté
vyhledávání má být provedeno. V dříve popsaných funkcích měl hodnotu 1, nejmenší
hodnota pro tyto funkce bude 2.
Při implementaci těchto funkcí je třeba pamatovat, že jejich vykonávání může být
vyvoláno ihned po vrácení výsledku vyhledávání z metody getDatabaseRecords() a funkce
getUpdates() a insertUpdates() nemusejí ještě být vykonány.
44
8. Tvorba šablon pro zobrazení výsledků vyhledávání
Aplikace umožňuje uživateli definovat vlastní vzhled webové stránky s výsledky
vyhledávání. Každá šablona je html soubor, který je v průběhu vyhledávání modifikován na
základě JSON objektů Javascriptem. Ve vlastní šabloně může uživatel definovat nový
vzhled webové stránky a nebo změnit způsob zobrazení výsledků z jednotlivých
vyhledávacích modulů. Mezi šablonami lze přepínat v nastavení aplikace, položka
WebView layout. Výchozí šablona je umístěna ve složce assets, jedná se o soubory
default.html, default.css a default.js. Vlastní šablony se umísťují do složky
cz.slovnik/layouts na SD kartě.
Ve výchozí šabloně je pro každý modul vygenerován nadpis zobrazující jméno modulu.
Pro každý směr vyhledávání v rámci modulu je vygenerován element (span), který má
nastaven parametr class na hodnotu open, resp. closed. Element s hodnotou closed je
pomocí kaskádových stylů skryt. Po kliknutí na odkaz s opačným směrem je pomocí
javascriptu hodnota obrácena, tím dojde k zobrazení opačného směru vyhledávání. Pomocí
javascriptu je poté měněn obsah těchto elementů podle JSON objektů s výsledky
vyhledávání.[23]
Při implementaci vlastní šablony lze využít funkce, které se nacházejí v souboru
default.js, jedná se předevšim o funkce:




getSearchedWord() – vrací hledané slovo
getPrimaryLanguage() – vrací aktuálně nastavený primární jazyk
getSecondaryLanguage() – vrací aktuálně nastavený sekundární jazyk
retrieveData() – spustí vyhledávání ve všech zapnutých modulech
vyvolat
i
voláním
interface.nazevFunkce
(např.
interface.getPrimaryLanguage()). Funkce retrieveData() musí být volána pouze jednou pro
každé hledání, například při události onLoad. Soubor default.js lze k šabloně začlenit
pomocí odkazu: src=file:///android_asset/default.js a obdobně i soubor default.css.
Po zavolání funkce retrieveData() bude aplikace volat funkci, jejíž název jste použili
jako parametr function, vždy po prohledání každého modulu. V této funkci je třeba
vygenerovat z JSON objektu (parametr funkce) html kód, který vložíte do stránky. Funkce
má jeden parametr – JSON objekt. Pro již nainstalované moduly lze použít výchozí funkce
pro generování html kódu, které se nacházejí v souboru default.js. Formáty JSON objektů
jsou definovány v kapitole Implementované moduly pro získávání informací.
Tyto
funkce
lze
Vyhledávací modul Výchozí metoda pro generování html kódu
SlovnikCz
fillSlovnikCz()
Wiktionary
fillWiktionary()
Offline
fillOneToManyLanguages()
Google Translate
fillOneToOne()
Bing Translate
fillOneToOne()
Wikipedia
fillWikipedia()
Tabulka 2 Výchozí metody pro generování html kódu z JSON
45
Pokud potřebujete spustit vyhledávání dalších výsledků, je třeba zajistit zavolání funkce
retrieveNextData(). Toho lze docílit například pomocí odkazu nebo tlačítka.
Obrázek 26 Ukázka html kódu pro spuštění dalšího vyhledávání
Ikony s vlajkami pro jednotlivé jazyky jsou ve složce assets. Název souboru je shodný
s názvem jazyka, přípona je png.
Obrázek 27 Ukázka použití ikony s vlajkou
Kvůli problémům s Javascriptem, který se objevil při testování na telefonech s verzí
operačního systému Android 2.3.3 doporučuji vložit do hlavičky html stránky následující
kód.
Obrázek 28 Použití novější verze JSON
46
9. Testování
Testování bylo zajištěno vedoucím práce a probíhalo průběžně při vývoji. Zjištěné
nedostatky byly opraveny. Na základě reference od uživatelů byl vybrán způsob zobrazení
výsledků vyhledávání ve webové stránce. Modul Google Translate nemohl být otestován,
vzhledem ke zpoplatnění služby Google Translate.
Při testování byly odhaleny a odstraněny následující problémy:


Bylo přidáno upozornění na špatné verze databáze
U verze 2.3.3 se objevil problém s parsováním JSON objektů, projevem byla
prázdná webová stránka, kde měly být zobrazeny výsledky. Toto bylo
odstraněno změnou verze JSONu, viz kapitola Tvorba šablon pro zobrazení
výsledků vyhledávání
47
48
10. Závěr
V rámci bakalářské práce jsem navrhl a implementoval aplikaci pro vyhledávání
informací pro Android a šest vyhledávacích modulů. Aplikace využívá možnosti
poskytované aplikačním frameworkem Android. Při návrhu jsem vycházel ze srovnání již
existujících podobných aplikací pro Android. V průběhu implementace byly zapracovány
přípomínky a náměty vzešlé z testování aplikace.
V této fázi aplikace kromě samotného vyhledávání umožňuje nastavení vyhledávacích
modulů, zobrazuje historii vyhledávání, lze definovat vlastní šablony pro zobrazení
výsledků. V rámci práce jsem implementoval šest modulů pro vyhledávání informací.
Pro zdokumentování aplikace jsem použil UML diagramy a JavaDoc pro
zdokumentování kódu, aby další vývojář mohl pokračovat ve vývoji.
Uživatelské rozhraní bylo navrženo a implementováno na základě porovnání rozhraní u
stávajících aplikací a námětů z testování.
Další vývoj aplikace
Další rozšíření aplikace lze rozdělit na dvě skupiny.


Rozšíření samotné aplikace
Dopsání dalších modulů nebo rozšíření těch stávajících
Vzhledem k použití doporučeného postupu při vývoji uživatelského rozhraní (všechny
texty jsou v xml souborech) lze aplikaci snadno lokalizovat.
V rámci historie by mohlo být implementováno více možností řazení a podpora
oblíbených položek.
Aplikace umožňuje jednoduché rozšíření o nové moduly. Postup je popsán v kapitole
Tvorba nových modulů pro vyhledávání. Nový modul by mohl podporovat například
vyhledávání ve slovníku WordNet.
Co se týče rozšíření stávajích modulů, modul Wiktionary by šlo rozšířit o další
informace (význam slova, historie apod.). Databáze modulu offline může být rozšířena o
nové zdroje, tím by se obohatila i nabídka našeptávače.
49
50
11. Seznam použitých zkratek
API
AJAX
HTML
HTTP
JSON
NDK
REST
SDK
SQL
URI
URL
OS
XML
YAML
Application Programming Interface
Asynchronous Javascript and Xml
HyperText Markup Language
HyperText Transfer Protocol
Javascript Object Notation
Native Development Kit
Representational State Transfer
Software Development Kit
Structured Query Language
Uniform Resource Identifier
Uniform Resource Locator
Operační Systém
Extensible Markup Language
YAML Ain’t Markup Language
51
52
12. Literatura
[1]
Android (operační systém) [online]. [cit. 2010-01-02]. Dostupné z WWW:
<http://cs.wikipedia.org/wiki/Android_%28opera%C4%8Dn%C3%AD_syst%C3%A9m%29>
[2]
Android (operating system) [online]. [cit. 2012-01-02]. Dostupné z WWW:
<http://en.wikipedia.org/wiki/Android_%28operating_system%29>
[5]
Designing for Performance [online]. [cit. 2012-01-02]. Dostupné z WWW:
<http://developer.android.com/guide/practices/design/performance.html>
Aplikace Fora dictionary [online]. [cit. 2011-03-15]. Dostupné z WWW:
<https://market.android.com/details?id=com.ngc.fora>
Aplikace Dictionary.com [online]. [cit. 2011-03-15]. Dostupné z WWW:
<https://market.android.com/details?id=com.dictionary>
[6]
DICT [online]. [cit. 2011-17-03]. Dostupné z WWW: <http://en.wikipedia.org/wiki/DICT>
[3]
[4]
[7]
[8]
[9]
Android SDK [online]. [cit. 2011-12-27]. Dostupné z WWW:
<http://developer.android.com/sdk/index.html>
Native Development Kit [online]. [cit. 2011-12-28]. Dostupné z WWW:
<http://developer.android.com/sdk/ndk/overview.html>
What is Android [online]. [cit. 2011-12-26]. Dostupné z WWW:
<http://developer.android.com/guide/basics/what-is-android.html>
[10] SQLite [online]. [cit. 2011-12-28]. Dostupné z WWW: <http://www.sqlite.org/about.html>
[11] O slovníku.cz [online]. [cit. 2011-12-25]. Dostupné z WWW: <http://slovnik.cz/about.html>
Google Translate API v2 [online]. [cit. 2011-12-28]. Dostupné z WWW:
[12] <http://code.google.com/intl/cs/apis/language/translate/overview.html>
Using the free Bing Translation APIs [online]. [cit. 2011-12-26]. Dostupné z WWW:
[13] <http://www.microsoft.com/web/post/using-the-free-bing-translation-apis>
MediaWiki API [online]. [cit. 2011-12-26]. Dostupné z WWW:
[14] <http://www.mediawiki.org/wiki/API>
AsyncTask [online]. [cit. 2011-12-28]. Dostupné z WWW:
[15] <http://developer.android.com/reference/android/os/AsyncTask.html>
Shared Preferences [online]. [cit. 2011-12-27]. Dostupné z WWW:
[16] <http://developer.android.com/guide/topics/data/data-storage.html#pref>
[17]
[18]
Metoda addJavascriptInterface() [online]. [cit. 2001-12-28]. Dostupné z WWW:
<http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterfac
e%28java.lang.Object,%20java.lang.String%29>
Wordnet [online]. [cit. 2011-12-28]. Dostupné z WWW:
<http://en.wikipedia.org/wiki/Wordnet>
[19] WordNet [online]. [cit. 2011-12-28]. Dostupné z WWW: <http://wordnet.princeton.edu/>
Action parse [online]. [cit. 2011-12-25]. Dostupné z WWW:
[20] <http://en.wiktionary.org/w/api.php>
Action query [online]. [cit. 2011-12-25]. Dostupné z WWW:
[21] <http://www.mediawiki.org/wiki/Query>
SQLiteOpenHelper [online]. [cit. 2012-01-02]. Dostupné z WWW:
[22] <http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html>
53
Javascript and HTML DOM Reference [online]. [cit. 2011-12-12]. Dostupné z WWW:
[23] <http://www.w3schools.com/jsref/default.asp>
54
13. Přílohy
55
56
13.1.
Srovnání existujících řešení
Dictionary.com
Advanced
English
Multi Lang
Dictionary
Google
translate,
Google
dictionary,
Wiktionary
Ve verzi
PRO
Wordmate
Colordict
Překladač Google
Fora dictionary
-
Google
translate,
Google
dictionary,
Wikipedia
Google translate,
Google dictionary
Google Translate,
Wikipedia, slovníky přes
dict protokol
WordNet,
WordNet
-
57
Online zdroje
Dictionary.com,
thesaurus.com
-
Offline zdroje
-
WordNet
Formát
offline zdrojů
-
StarDict
databáze
StarDict, DWM
StarDict
-
Historie
Oblíbené
ano
ano
ano
-
ano
-
ano
ano
ano
ano
Nastavení
pozadí
místo uložení
slovníku
-
Zobrazení
seznamu slov,
nebo zobrazení
slova
font,
velikost
textu
Převod textu na řeč,
použití našeptávače,
režim konverzace
Přehrávání
výslovnosti
ano
-
ano
ano
ano
ano
ano
Vyhledávací
filtry
-
Fuzzy,
wildcard,
keyword
-
-
-
-
-
-
-
-
-
ano
-
ano
-
-
Ve verzi
PRO
ano
ano
-
ano
ne
ano
ne
ano
ano
ano
ano
Použití více
slovníků
současně
Použití
dalších
slovníků
Našeptávač
Tabulka 3 Srovnání existujících řešení
English Dictionary and
Thesaurus
StarDict, XDXF, DSL,
DICTD a plain-text
(oddělený tabulátory)
ano
ano
místo uložení slovníků,
vypínaní/zapínání
našeptávače, font,
velikost textu,
13.2.
UML diagramy
Obrázek 29 Diagram tříd v balíčku presentation
58
Obrázek 30 Diagram tříd výchozí aktivity
59
Obrázek 31 Diagram tříd aktivity pro nastavení modulů
Obrázek 32 Diagram tříd aktivity historie
60
Obrázek 33 Diagram tříd modulů
61
13.3.
Instalační příručka
Pro instalaci aplikací, které nejsou staženy z Android Marketu je třeba mít tuto možnost
povolenou
v nastavení
zařízení.
Je
třeba
zaškrtnout
možnost:
menu/Nastavení/Aplikace/Neznámé zdroje(Povolit instalaci aplikací z jiných trhů).
Poté stačí instalační soubor slovnik.apk, který se nachází na přiloženém CD v adresáři
bin/, zkopírovat do mobilního zařízení (např. na SD kartu). Pomocí správce souborů otevřít
instalační soubor, potom dojde k instalaci.
Aplikace je nyní nainstalována v systému pod jménem Slovnik. Po jejím spuštění jsou
na SD kartě vytvořeny adresáře: cz.slovnik/databases a cz.slovnik/layouts.
Do adresáře cz.slovnik/databases nakopírujte databázi offline, která je na přiloženém
CD v adresáři Project/databases/.
Aplikace je připravena k používání.
13.4.
Uživatelská příručka
Po spuštění programu je zobrazena úvodní aktivita, kde je textové pole pro zadání
vyhledáváné fráze, tlačítko s ikonou lupy pro spuštění vyhledávání. V pravém horním rohu
je tlačítko s ikonou aktuálně zvoleného sekundárního jazyka. Kliknutím na tlačítko je
zobrazen seznam jazyků, ze kterých může uživatel vybírat. Uprostřed obrazovky je tlačítko
pro změnu primárního jazyka. Pod ním se nachází seznam aktuálně nainstalovaných
vyhledávacích modulů.
Po stisku hardwarového tlačítka Menu je vyvoláno menu pro přepínání mezi
jednotlivými aktivitami aplikace.



Položka Modules Settings slouží pro spuštění nastavení vyhledávacích modulů
Položka History zobrazí historii vyhledávaných frází.
Položka Settings spustí nastavení aplikace.
Stisknutím hardwarového tlačítka Zpět se vrátíte do úvodní aktivity.
Nastavení aplikace
V nastavení aplikace lze zvolit primární jazyk (položka Primary Language), maximální
počet současně běžících vláken pro stahování (položka Number of download threads) a
šablonu pro zobrazení výsledků vyhledávání (položka WebView Layout).
Nastavení vyhledávacích modulů
V nastavení vyhledávacích modulů lze měnit jejich pořadí a tím určit jejich pozici na
stránce s výsledky vyhledávání. Pořadí modulu změníte tažením za ikonu, která se nachází
62
vlevo u každého modulu. Dále lze modul vypnout, resp. zapnout pomocí zaškrtávacího
tlačítka u pravého okraje.
Pokud vyhledávací modul umožňuje nastavení, je u něj zobrazena ikona ozubeného
kolečka, jejímž stisknutím spustíte aktivitu s nastavením modulu.
Historie vyhledávání
Historie vyhledávání zobrazuje vyhledávané fráze seřazené podle času vyhledávání. U
každé fráze je zobrazeno v rámci jakých jazyků byla vyhledávána. Každou položku lze
vyhledat znovu kliknutím na ikonu lupy (spustí vyhledávání v rámci jazyků zobrazených u
položky). Kliknutím na ikonu křížku vymažete položku z databáze. Kliknutím na řádek je
fráze nakopírována do textového pole v úvodní aktivitě a aktivita historie je vypnuta. To
umožňuje například opravit vyhledávanou frázi nebo spustit vyhledávání této fráze v rámci
jiných jazyků.
Historii vyhledávání můžete smazat kliknutím na položku Clear history v menu aktivity
Historie.
Vyhledávání
Vyhledávanou frázi nebo její začátek napiště do textového pole v úvodní aktivitě. Pod
textovým polem jsou zobrazovány položky našeptávače, pokud jich je více lze mezi nimi
rolovat. Položky jsou zobrazovány z offline databáze a ze serveru Wikipedia. U každé
položky je zobrazen jazyk, ve kterém byla nalezena. Samotné vyhledávání spustíte kliknutí
na ikonu lupy vpravo od textového pole. Druhou možností je kliknutí na vybranou položku
z našeptávače. Pokud jazyk u vybrané položky neodpovídá aktuálně zvolenému
primárnímu nebo sekundárnímu jazyku, je provedeno vyhledávání mezi jazykem u vybrané
položky a aktuálně nastaveným sekundárním jazykem.
Mezi směry vyhledávání lze přepínat přímo v aktivitě zobrazující výsledky vyhledávání
kliknutím na vlajku v horní části obrazovky.
Vlastní šablony
Aplikace umožňuje definovat vlastní šablonu pro zobrazení výsledků vyhledávání.
Návod pro její vytvoření je v kapitole Tvorba šablon pro zobrazení výsledků vyhledávání.
Vytvořenou šablonu umístěte do složky cz.slovnik/layouts/. V aplikaci lze mezi šablonami
přepínat v nastavení aplikace položka WebView Layout.
63
64
14. Obsah přiloženého CD
Na přiloženém CD je následující adresářová struktura:
Obrázek 34 Adresářová struktura na přiloženém CD
Obsah adresářů:




Application – obsahuje instalační soubor aplikace
JavaDoc – JavaDoc dokumentace ke zdrojovému kódu
Project
o Databases – offline databáze pro použití v aplikaci
o Slovnik – projekt pro Eclipse
Texts – Text bakalářské práce ve formátech doc a pdf, instalační a uživatelská
příručka
65

Podobné dokumenty

dip.felk.cvut.cz - DCGI - České vysoké učení technické v Praze

dip.felk.cvut.cz - DCGI - České vysoké učení technické v Praze Na tomto místě bych chtěla poděkovat všem, kteří mě podporovali během vzniku bakalářské práce. Především bych chtěla poděkovat panu Mgr. Jakubovi Francovi za vedení bakalářské práce, panu Ing. Zdeň...

Více

Synchroniza£ní modul pro Mozilla Thunderbird - ExtBrain

Synchroniza£ní modul pro Mozilla Thunderbird - ExtBrain České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů

Více

Rozs20 s19 r20 ren19 ExtBrain Communicatoru o dals20 s19

Rozs20 s19 r20 ren19 ExtBrain Communicatoru o dals20 s19 V dnešnı́m době většina lidı́ vlastnı́ několik emailových účtů od různých poskytovatelů. Kvůli tomu se musı́ dennodenně vı́cekrát přihlašovat k serveru svého poskytovatele a musı́...

Více

Na tomto miste bude oficiální zadanizadani

Na tomto miste bude oficiální zadanizadani různých artefaktů a nižší přesnost měření v domácích podmínkách a neprofesionálním přístrojem oproti monitorování ve spánkové laboratoři.

Více

setkání bohemistů - Poetický Cikháj v Brně

setkání bohemistů - Poetický Cikháj v Brně v sufixu, který realizuje morfém [VocSg], má stejné elementové složení jako fonologický výraz, který je interpretován jako [e] v kořenech a v sufixu –em, ale oba se liší svojí vnitřní strukturou → ...

Více

bizers vize svět

bizers vize svět K třídění dokumentů dochází na základě přiřazení deskriptivních termínů (indexů, deskriptorů), tomuto procesu se tedy říká indexace. Indexem je každý popisný prvek dokumentu - název, autor či žánr....

Více

zde - Univerzita Hradec Králové

zde - Univerzita Hradec Králové stavu (nejvyšší fáze vývoje) zahyne o jedno kolo déle než druh první. Pro malý počet srážek (malá pravděpodobnost deště nebo malý objem srážek) však oba druhy po určité době vyhynou. Obrázek tři i...

Více

Implementace protokolu XMPP v JavaScriptu

Implementace protokolu XMPP v JavaScriptu V současné době zažı́váme roustoucı́ trend v použitı́ aplikacı́ založených na výměně rychlých zpráv, tzv. instant messagingu. Známy jsou zejména dı́ky zprostředkovánı́ komunikace m...

Více

Abíčko - AbcLinuxu.cz

Abíčko - AbcLinuxu.cz Cílem serveru http://www.abclinuxu.cz je pomáhat všem uživatelům Linuxu, nezávisle na jejich zkušenostech, platformě či použité distribuci. Motorem, který nás pohání vpřed, je idea vzájemné pomoci ...

Více