M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
}
w A| y < 5 4 23 1 0 / -. , )+ ( %&' $ # !"
Æ
Možnosti úprav systému Android D IPLOMOVÁ PRÁCE
Bc. Jan Rychnovský
Brno, jaro 2015
Prohlášení Prohlašuji, že tato diplomová práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Bc. Jan Rychnovský
Vedoucí práce: RNDr. Bc. Jonáš Ševˇcík i
Podˇekování Rád bych na tomto místˇe podˇekoval svému vedoucímu Jonáši Ševˇcíkovi za podnˇetné rady a ochotu pˇri konzultacích této diplomové práce. Dále dˇekuji všem testujícím vytvoˇreného firmware, kteˇrí se zapojili do testování a pˇrispˇeli tak k jeho vylepšení. V neposlední rˇ adˇe bych rád podˇekoval Ing. Vˇerˇ e Petˇrvalské za korekci textu diplomové práce.
ii
Shrnutí Tato práce se zabývá možností vytvoˇrení vlastního upraveného firmware pro Android zaˇrízení, jako je set-top box, jež disponuje dálkovým ovládáním a schopností pˇripojit externí obrazovku. Práce se také zamˇerˇ uje na možnosti celkového brandingu a zejména vytvoˇrení vlastního uživatelského prostˇredí tzv. launcheru. V první cˇ ásti práce je podrobnˇe popsána platforma Android TV, tvorba vlastní aplikace pro tuto platformu a podpurná ˚ Android knihovna - Leanback Support Library od spoleˇcnosti Google, jež byla využita pˇri tvorbˇe launcheru. Následující cˇ ást práce se vˇenuje popisu hardwarových specifikací set-top boxu˚ spoleˇcnosti Zoomtak a pˇredevším pˇredstavuje provedené úpravy jejich firmware. Stˇežejní cˇ ást práce se zabývá návrhem vytvoˇreného launcheru a jeho ovládáním. Následnˇe je popsána implementace launcheru, vˇcetnˇe vytvoˇreného mechanismu získávání ikon aplikací v lepším rozlišení. Závˇereˇcná cˇ ást textu se vˇenuje testování vytvorˇ eného firmware, zhodnocení dosažených výsledku˚ a možnostem budoucího rozvoje vytvoˇreného firmware. Výsledná práce je napsána tak, aby posloužila jako referenˇcní výukový materiál pro kurz PV256 - Projekt z programování pro Android.
iii
Klíˇcová slova Android, Android TV, Google TV, Leanback, Zoomtak, launcher, PV256.
iv
Obsah 1 2
3
4
5
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Platforma Android TV . . . . . . . . . . . . . . . . . . . . 2.1 Specifikace platformy Android TV . . . . . . . . . . 2.2 Grafický návrh . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Launcher platformy Android TV . . . . . . 2.2.2 Doporuˇcení pˇri návrhu aplikace . . . . . . . 2.2.3 Vize platformy Android TV . . . . . . . . . . 2.3 Tvorba aplikace pro Android TV . . . . . . . . . . . 2.3.1 Nastavení Android projektu . . . . . . . . . 2.3.2 Podpurné ˚ knihovny . . . . . . . . . . . . . . 2.3.3 Odlišný hardware . . . . . . . . . . . . . . . 2.3.4 Dálkové ovládání . . . . . . . . . . . . . . . 2.3.5 Tvorba layoutu Android TV aplikace . . . . Platforma set-top boxu˚ Zoomtak . . . . . . . . . . . . . . 3.1 Hardwarové specifikace platformy M6 . . . . . . . . 3.1.1 Srovnání platforem Android TV a M6 . . . . 3.2 Firmware platformy set-top boxu M6 . . . . . . . . . 3.2.1 Pˇríprava vlastního firmware . . . . . . . . . Tvorba aplikace launcheru . . . . . . . . . . . . . . . . . 4.1 Uživatelské rozhraní navrženého launcheru . . . . . 4.1.1 Hlavní obrazovka . . . . . . . . . . . . . . . 4.1.2 Obrazovka s aplikacemi . . . . . . . . . . . . 4.1.3 Obrazovka nastavení . . . . . . . . . . . . . 4.1.4 Obrazovka pruvodce ˚ prvotním nastavením 4.2 Ovládání rozhraní launcheru . . . . . . . . . . . . . 4.2.1 Zvýraznˇení ovládacích prvku˚ . . . . . . . . 4.2.2 Zvuková odezva ovládacích prvku˚ . . . . . 4.2.3 Dálkové ovládání . . . . . . . . . . . . . . . ˇ 4.2.4 Rada karet s oblíbenými aplikacemi . . . . . 4.2.5 Pˇripojení k internetu . . . . . . . . . . . . . . 4.2.6 Zprávy . . . . . . . . . . . . . . . . . . . . . 4.2.7 Logo . . . . . . . . . . . . . . . . . . . . . . . 4.2.8 Nastavení pozadí a jazyka . . . . . . . . . . 4.2.9 Nápovˇeda . . . . . . . . . . . . . . . . . . . . Implementace aplikace launcheru . . . . . . . . . . . . . 5.1 Struktura projektu . . . . . . . . . . . . . . . . . . . . 5.2 Popis vybraných komponent . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 4 6 8 8 10 12 12 13 15 19 21 22 26 27 29 31 32 38 38 39 41 42 43 45 45 45 46 47 49 50 51 51 52 54 54 57 v
6 1 2 3 4 5 6 7 8 9 10 11 12 13
ˇ 5.2.1 Rada karet . . . . . . . . . . . . . . . . . . 5.2.2 Získávání ikon aplikací v lepším rozlišení 5.2.3 Zjišt’ování aktuálního stavu pˇripojení . . . 5.3 Analýza výsledného launcheru . . . . . . . . . . . Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zaˇrízení se systémem Android TV . . . . . . . . . . . . Set-top boxy spoleˇcnosti Zoomtak . . . . . . . . . . . . Jednotlivé obrazovky launcheru Android TV . . . . . Uživatelská rozhraní Google TV aplikací . . . . . . . . Hardwarové specifikace set-top boxu˚ Zoomtak . . . . Set-top box Zoomtak M6 . . . . . . . . . . . . . . . . . Uživatelské prostˇredí XMBC (Kodi) . . . . . . . . . . . Adresáˇrová struktura firmware set-top boxu M6 . . . . Jednotlivé obrazovky launcheru platformy M6 . . . . Aplikace z nastavení . . . . . . . . . . . . . . . . . . . . Pozadí launcheru platformy M6 . . . . . . . . . . . . . Levé navigaˇcní menu . . . . . . . . . . . . . . . . . . . . Seznam elektronických pˇríloh . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
58 61 63 65 67 76 78 79 80 81 85 86 87 88 89 90 91 92
vi
1 Úvod 5. listopadu 2007 bylo v Kalifornii založeno uskupení Open Handset Alliance, konsorcium zahrnující mobilní operátory, spoleˇcnosti zabývající se výrobou mobilních telefonu, ˚ komponent, služeb nebo pˇrímo mobilních aplikací (jako jsou Google, Motorola, LG, HTC, Samsung, Intel, NVIDIA, aj). Hlavním cílem tohoto konsorcia bylo vyvinout otevˇrený standard pro mobilní zaˇrízení. Tyto spoleˇcnosti brzy oznámily, že spolupracují na projektu otevˇrené mobilní platformy postavené na jádˇre operaˇcního systému Linux [1]. Eric Schmidt, CEO spoleˇcnosti Google, pˇri této pˇríležitosti ve svém projevu pronesl: „Today’s announcement is more ambitious than any single Google Phone that the press has been speculating about over the past few weeks. Our vision is that the powerful platform we’re unveiling will power thousands of different phone models.“ [2] V tomto ohledu mˇel Dr. Eric Schmidt pravdu a mobilní operaˇcní systém Android je dnes instalován na témˇerˇ 81,5% mobilních zaˇrízení [3]. Android ale není pouze platforma pro mobilní telefony nebo tablety, nachází uplatnˇení i v jiných zaˇrízeních, napˇr. Android Wear - chytré hodinky, Android Auto - automobil s integrovaným inteligentním systémem pro navigaci a ovládání nebo Android TV. Android TV je operaˇcní systém urˇcený pro zobrazování multimediálního obsahu na televizních obrazovkách, monitorech, projektorech nebo jiném zobrazovacím zaˇrízení. Primárním úˇcelem Android TV je samozˇrejmˇe ale pˇripojení k televizoru. Uživateli tak v obývacím pokoji vznikne inteligentní systém, který lze ovládat dodaným dálkovým ovládáním, herním ovládáním nebo pomocí aplikace pro mobilní telefon cˇ i chytré hodinky Android Wear. Android TV umožnuje ˇ uživateli hrát hry, stahovat nové aplikace z Google Play obchodu cˇ i hlasem vyhledávat a pˇrehrávat videa z video serveru. ˚ Velké technologické spoleˇcnosti jako Philips, Sony, Sharp nebo Huawei již oznámily, že budou tuto inteligentní platformu integrovat pˇrímo do svých televizoru. ˚ V souˇcasné dobˇe jsou od zaˇcátku ledna 2015 v prodeji televizory Bravia s integrovaným systémem Android TV od spoleˇcnosti Sony, konkrétnˇe se jedná o šest nových rˇ ad pomˇernˇe dobˇre hardwarovˇe vybavených Sony televizoru. ˚ Další televizory od výrobcu˚ jako Phillips a Sharp by mˇely brzy následovat. Jiní výrobci, jako Razer nebo Nvidia, se rozhodli vytvoˇrit vlastní platformu s operaˇcním systémem Android TV, jenž bude možné pˇripojit k televizoru jako pˇríslušenství pomocí HDMI kabelu. Tyto 1
1. Ú VOD platformy se inspirují referenˇcním zaˇrízením pˇrímo od spoleˇcnosti Google Nexus Player, který byl vyvinut ve spolupráci se spoleˇcností Asus a jež má Android TV pˇredstavit širší veˇrejnosti a také má sloužit jako dostupné zaˇrízení pro Android vývojáˇre. Avizovaná zaˇrízení jsou zobrazena v Pˇríloze 1. Zaˇrízení Nexus Player mi bylo zapujˇ ˚ ceno pro úˇcely této práce a bude tedy popsáno v následujících kapitolách, zmínˇeny také budou výsledky jeho testování. Cílem této práce je prozkoumat možnosti, zdokumentovat a vytvoˇrit vlastní upravený firmware pro vybrané Android zaˇrízení. V dnešní dobˇe již existuje mnoho alternativních operaˇcních systému Android pro mobilní telefony cˇ i tablety. Proto se v této práci zamˇerˇ ím na pomˇernˇe novou oblast operaˇcních systému˚ Android pro moderní televizory, v níž spoleˇcnost Google se svou platformou Android TV udává smˇer. Samozˇrejmˇe existuje mnohem více spoleˇcností, které se snaží se svými platformami v této oblasti také uspˇet, jako je napˇríklad spoleˇcnost Apple se svou Apple TV, Amazon s Fire TV, spoleˇcnost Roku se svou Roku TV nebo do jisté míry i herní konzole Xbox od Microsoftu cˇ i Playstation od Sony. Nemá ovšem ze zjevných duvod ˚ u˚ význam upravovat operaˇcní systém Android TV zaˇrízení Nexus Playeru, spíše se v této práci zamˇerˇ ím na nˇekterého alternativního výrobce Android zaˇrízení, jež poskytuje firmware ne zcela optimalizovaný pro velké obrazovky televizoru˚ a pokusím se jej upravit. Souˇcasnˇe vytvorˇ ím výukový materiál pro pˇredmˇet PV256 Projekt z programování pro Android. Pro vytvoˇrení takové platformy je nutné zvolit vhodný hardware. Jako ideální zaˇrízení se jeví chytré set-top boxy spoleˇcnosti Zoomtak (viz Pˇríloha 2), které mi byly spoleˇcnˇe se zaˇrízením Nexus Player zapujˇ ˚ ceny pro potˇreby této práce spoleˇcností SledovaniTv.cz. ˇ Cínská spoleˇcnost Zoomtak se od roku 2010 zamˇerˇ uje na vývoj chytrých set-top boxu˚ pro domácí zábavu. Set-top boxy spoleˇcnost dodává vˇcetnˇe vlastního upraveného firmware. Jelikož je zadáním této práce úprava systému Android, pokusím se vytvoˇrit firmware, který bude vycházet z firmware spoleˇcnosti Zoomtak a který vhodným zpusobem ˚ upravím tak, aby byl použitelný pro obrazovky televizoru˚ a byl jednoduše ovladatelný pomocí dálkového ovladaˇce. Pro vytvoˇrení takového firmware bude nutné upravit nˇekteré systémové promˇenné operaˇcního systému, zajistit aby pˇri startu operaˇcní systém zobrazil vlastní logo, nahrát do nˇej nové cˇ eské fonty, aj. Pˇredevším ale bude nutné vytvoˇrit nové uživatelské prostˇredí, tzv. launcher 1 , jež bude vycházet z myšlenek a pravidel návrhu aplikací pro 1. Launcher je aplikace, která uživateli slouží mimo jiné k nalezení a spuštˇení ostatních nainstalovaných aplikací daného zaˇrízení.
2
1. Ú VOD platformu Android TV. Budou použity vývojové nástroje platformy Android TV, konkrétnˇe podpurná ˚ knihovna Leanback Support Library. V následujícím textu budu dále pˇredpokládat, že cˇ tenáˇr není zaˇcáteˇcníkem v programování a tudíž by mˇel porozumˇet textu i ukázkám zdrojového kódu, jejichž podrobnému vysvˇetlování se ze zjevných duvod ˚ u˚ v této práci nemohu vˇenovat. Proto, abych dosáhl výše zmínˇeného cíle, bude nutné v Kapitole 2 popsat uživatelské prostˇredí platformy Android TV a jelikož tato práce má také sloužit jako referenˇcní výukový materiál pro kurz PV256, bude popsána i tvorba uživatelských aplikací pro tuto novou platformu. V Kapitole 3 cˇ tenáˇre seznámím se zvolenou platformou Zoomtak set-top boxu, ˚ na nichž budu vytvoˇrený firmware testovat a porovnám jejich hardwarové specifikace a softwarové vybavení s referenˇcním pˇrístrojem Nexus Player platformy Android TV. V Kapitole 4 detailnˇeji rozeberu návrh vytvoˇreného launcheru a popíši jeho ovládání za pomoci dálkového ovladaˇce. V poslední Kapitole 5 se pak budu vˇenovat zajímavˇejším cˇ ástem implementace launcheru platformy set-top boxu a v závˇeru této práce budou zhodnoceny dosažené výsledky.
3
2 Platforma Android TV Spoleˇcnost Google na své každoroˇcní konferenci Google I/O v cˇ ervnu lonˇ ského roku mimo jiné pˇredstavila novou platformu, která si má získat místo v obývacích pokojích nároˇcnˇejších televizních diváku˚ - Android TV. Google se již pátým rokem snaží zaujmout širší spektrum uživatelu. ˚ Prvním pokusem byla Google TV. Do tohoto programu se zapojilo nˇekolik výrobcu˚ v cˇ ele se spoleˇcnostmi Logitech, Sony a LG, avšak postupem cˇ asu se ukázalo, že platforma Google TV neuspˇeje a spoleˇcnost Google tak na svém komunitním Google+ profilu [4] oznámila, že ukonˇcuje podporu vývojových nástroju˚ pro platformu Google TV. Google TV si nekoupilo mnoho uživatelu, ˚ jednak díky nejednotnosti zaˇrízení, na kterých byla nainstalována, ale také díky jejich pomalosti nebo chybovosti [5]. Navíc uživatelská rozhraní aplikací této platformy a jejich ovládání nebyla sjednocená, viz Pˇríloha 4. V roce 2012 Google pˇredstavil zaˇrízení Nexus Q. Díky operaˇcnímu systému Android 4.0 této platformy bylo podporováno spouštˇení videí z Youtube a Google Play. Kromˇe toho, že si získala na konferenci obdiv a Google ji rozdal vývojáˇrum, ˚ nebyla nikterak dále spoleˇcností Google podporována a vyvíjena [6]. Až tˇretí pokus byl úspˇešnˇejší. Chromecast, malé chytré zaˇrízení ve formˇe USB flash disku, se prodalo miliony kusu. ˚ Oblibu si pomalu získává i u nás a to navzdory tomu, že ji zde spoleˇcnost Google oficiálnˇe neprodává. Hlavní pˇredností tohoto zaˇrízení je funkce Google Cast, jež umožnuje ˇ pˇrenášení aktuální obrazovky chytrého mobilního telefonu s operaˇcním systémem Android na obrazovku televizoru. V Google se rozhodli, že na úspˇech zaˇrízení Chromecast navážou a oklikou se tak vrací k puvodnímu ˚ konceptu Google TV. Avšak Android TV se se svými hardwarovými specifikacemi a jednoduchostí ovládání od Google TV výraznˇe liší. Android TV cˇ erpá ze zkušeností pˇredchozích platforem a spoleˇcnost Google se snaží mnohem více spolupracovat s významnými technologickými výrobci. Na Obrázku 2.1 jsou zobrazena výše zmínˇená zaˇrízení. [7] Android TV je zaˇrízení s nejnovˇejším operaˇcním systémem Android 5.0 urˇcené pro uživatele sledující televizní obrazovky, kteˇrí oˇcekávají pˇridanou hodnotu moderních plochých televizoru. ˚ Tito uživatelé mají však odlišné požadavky od tˇech, kteˇrí používají mobilní telefon cˇ i tablet. Typický televizní divák sedí pˇribližnˇe tˇri metry od televizní obrazovky, nemusí si tedy malých detailu˚ všimnout, anebo pro nˇej mohou být špatnˇe cˇ itelné [12]. Hlavní rozdíl je v ovládání. Televizní divák je nucen používat dálkový ovladaˇc televize pro navigaci v uživatelském rozhraní, musí se mezi 4
2. P LATFORMA A NDROID TV
Obrázek 2.1: Zaˇrízení pro rozšíˇrení funkcí televizoru˚ od spoleˇcnosti Google. [8] jednotlivými prvky grafického rozhraní posouvat pomocí šipek dálkového ovladaˇce a vybírat prvky zpravidla pomocí tlaˇcítka OK. Kdežto uživatelé mobilních telefonu˚ cˇ i tabletu˚ se mohou obrazovky pˇrímo dotýkat. Tyto rozdílnosti ve velké míˇre ovlivnují ˇ požadavky uživatelu˚ na pohodlné a intuitivní ovládání daného pˇrístroje. Televizní obrazovka je navíc mnohem vˇetší než u jiných zaˇrízení, a proto vytvoˇrení pohodlného uživatelského rozhraní vyžaduje odlišný pˇrístup a odlišné nástroje. Pro zjednodušení vývoje aplikace pro platformu Android TV mužeme ˚ využít spoleˇcností Google poskytnuté nástroje knihovny Leanback Support Library. Knihovna nám poskytuje API a widgety 1 pro tvorbu aplikace. V následující Podkapitole 2.1 budou struˇcnˇe charakterizovány klíˇcové vlastnosti platformy Android TV a budou popsány výsledky testování této platformy. V Podkapitole 2.2 bude podrobnˇeji rozebrán grafický návrh uživatelského rozhraní launcheru platformy Android TV, budou popsány jeho jednotlivé ovládací prvky a pˇredstaveny pravidla návrhu aplikace pro tuto 1. API (angl. Application Programming Interface) oznaˇcuje rozhraní pro programování aplikací, jde o sbírku procedur, funkcí, tˇríd cˇ i protokolu˚ knihovny, které muže ˚ programátor využívat. Widget neboli ovládací prvek je základní element pro interakci programu s uživatelem. Ovládací prvek je vizuálnˇe ztvárnˇen a obvykle slouží pro manipulaci s daty v daném programu.
5
2. P LATFORMA A NDROID TV platformu. V Podkapitole 2.3 bude cˇ tenáˇri nastínˇen zpusob ˚ jak vytvoˇrit vlastní aplikaci vhodnou pro platformu Android TV a budou popsány odlišnosti od vývoje aplikace pro standardní Android zaˇrízení, jako jsou chytré mobilní telefony nebo tablety. Získané znalosti z této kapitoly nám dále v Kapitole 4 umožní navrhnout vlastní launcher platformy set-top boxu˚ Zoomtak.
2.1
Specifikace platformy Android TV
Pˇred rozborem grafického návrhu uživatelského rozhraní této platformy budou popsány její klíˇcové vlastnosti. Uživatelské prostˇredí systému Android TV se skládá pouze z jedné hlavní obrazovky a nˇekolika dalších obrazovek, jež plní funkci uživatelského nastavení, zobrazení detailních informací o vybraném obsahu a pˇrehrávání video souboru. ˚ Jednotlivé obrazovky jsou zobrazeny v Pˇríloze 3. Operaˇcní systém Android TV je postaven na nejnovˇejší verzi systému Android 5.0 - Lollipop. Android TV však disponuje odlehˇcenou verzí tohoto systému a uživateli tak nenabízí zdaleka tolik funkcionality jako samotný systém Android Lollipop. Hlavní funkce systému Android TV jsou následující: •
vyhledávání - vyhledává se hlasem nebo zadáním vstupu na softwarové klávesnici, je vhodné v nastavení zvolit jazyk vyhledávání. V aktuální verzi systému Android TV vyhledávání probíhá pouze mezi video soubory na serverech Google Play a Youtube,
•
sledování video souboru˚ - sledovat lze videa ze dvou zdroju: ˚ Youtube nebo Google Play. Vyhledaná videa se zobrazí do rˇ ady. Pro pˇrehrání videa slouží aplikace Youtube, jež zobrazí video na celou obrazovku a nabídne uživateli ovládací prvky, viz Pˇríloha 3,
•
poslouchání hudby - hudbu lze poslouchat pomocí aplikace Google Play Music, hudba je uživateli pˇrehrána ze serveru Google Play,
•
hraní her - hry uživatel muže ˚ stahovat a instalovat za pomoci aplikace Google Play Games, tato aplikace uživateli umožní zaznamenávat statistiky, hrát hru on-line cˇ i multiplayer,
•
stahovaní aplikací - stahovat a instalovat muže ˚ uživatel nové aplikace nebo hry pomocí Google Play Store aplikace. Aktuální nabídka aplikací cˇ i her pro platformu Android TV není zatím pˇríliš poˇcetná, 6
2. P LATFORMA A NDROID TV obsahuje pˇribližnˇe 90 her vˇetšinou optimalizovaných pro herní dálkové ovládání a pˇribližnˇe 20 aplikací sloužící pˇrevážnˇe pro pˇrehrávání videí z jiných video serveru, ˚ •
zobrazování obrazovky jiného zaˇrízení - tuto funkcionalitu zajišt’uje mechanismus Google Cast, jež umožní uživateli zobrazit aktuální obrazovku jeho Android zaˇrízení, jako je chytrý mobilní telefon cˇ i tablet. Tato funkcionalita je souˇcástí systému Android od verze 4.4.2. Nejnovˇeji lze také zobrazit obrazovku z internetového prohlížeˇce Chrome uživatelova poˇcítaˇce. [9]
Ovˇerˇení funkcí platformy Android TV Testování funkcí platformy Android TV probíhalo na zapujˇ ˚ ceném zaˇrízení Nexus Player verze 5.1. Pˇri testování byly ovˇerˇ eny všechny avizované funkce, nepodaˇrilo se pouze pˇripojit externí USB flash disk do micro-USB konektoru a otevˇrít tak soubory z externího úložištˇe, tak jak napˇríklad popisuje internetový cˇ lánek na serveru androidcentral.com [10]. Pˇri pˇripojení ovládacího zaˇrízení myš se okamžitˇe zobrazil kurzor myši, ale ovládání launcheru pomocí levého nebo pravého tlaˇcítka nebylo možné. Naopak pˇripojená hardwarová klávesnice se chovala oˇcekávaným zpusobem. ˚ Platforma Android TV je ale pohodlnˇe ovladatelná za pomocí zaˇrízení k tomuto úˇcelu urˇceným: dálkové ovládání, herní dálkové ovládání anebo pomocí Android aplikace pro chytré telefony cˇ i hodinky Android Wear, viz Obrázek 2.2.
Obrázek 2.2: Aplikace pro chytrý Android telefon cˇ i hodinky Android Wear pro dálkové ovládání platformy Android TV. [11] 7
2. P LATFORMA A NDROID TV
2.2
Grafický návrh
Platforma Android TV poskytuje vlastní uživatelské prostˇredí. Je duležité ˚ porozumˇet návrhu tohoto prostˇredí, protože dle spoleˇcnosti Google definuje ideální rozložení prvku˚ a jejich ovládání, cˇ ehož bude využito pˇri návrhu vlastního uživatelského prostˇredí platformy set-top boxu Zoomtak. [13]
2.2.1 Launcher platformy Android TV Launcher platformy Android TV pˇredstavuje uživatelské rozhraní, které má být vzorem pro novˇe vznikající aplikace této platformy. Právˇe nejednotnost uživatelských rozhraní a ovládání aplikací byla klíˇcovým aspektem neúspˇechu platformy Google TV [5]. Uživatelské rozhraní launcheru Android TV se skládá z nˇekolika málo ovládacích prvku. ˚
Domovská obrazovka Jedná se o základní obrazovku, kterou uživatel navštˇevuje nejˇcastˇeji. Poskytuje pˇrístup k jednotlivým aplikacím cˇ i hrám, obsahuje vyhledávací nástroj, rˇ adu karet s doporuˇceným obsahem, systémové nastavení, indikaci pˇripojení k internetu a cˇ as, viz Obrázek 2.3.
Obrázek 2.3: Domovská obrazovka launcheru platformy Android TV, vyhledávací nástroj, cˇ as a rˇ ada karet s doporuˇceným obsahem. [14] 8
2. P LATFORMA A NDROID TV
Obrázek 2.4: Obrázek vlevo znázornuje ˇ jeden ze základních prvku˚ domovské obrazovky platformy Android TV - karta s personalizovaným obsahem: 1 - ikona obsahu, 2 - název, 3 - dodateˇcný informaˇcní text, 4 - tzv. badge image, neboli malá ikona pˇridružené aplikace k danému obsahu. Vpravo ikona uživatelské aplikace vˇcetnˇe lokalizovaného názvu pro platformu Android TV. [17] Vyhledávání Nástroj na vyhledávání je propojen s internetovým Google vyhledávaˇcem. Vyhledávat lze hlasem nebo zadáním textu na dálkovém ovladaˇci. Vyhledávací nástroj je zobrazen ve vrchní cˇ ásti Obrázku 2.3. Pˇri vyhledávání hlasem je zvuk snímán bud’ z dodaného dálkového ovládání, herního dálkového ovládání nebo z mobilního telefonu cˇ i chytrých hodinek. Telefonem lze launcher ovládat pomocí aplikace k tomuto úˇcelu urcˇ ené, kterou má uživatel možnost si stáhnout z obchodu Google Play. Doporuˇcený obsah Hlavním prvkem domovské obrazovky je rˇ ada karet s doporuˇceným obsahem, která umožnuje ˇ uživateli rychlý pˇrístup k personalizovanému obsahu dle jeho pˇredchozích aktivit, viz Obrázek 2.3. Mezi kartami s novým doporuˇceným obsahem lze jednoduše pˇrecházet zleva doprava pomocí šipek na dálkovém ovládání. Prvky jednotlivé karty s doporuˇceným obsahem jsou popsané na Obrázku 2.4 vlevo. Systém Android doporuˇcení vybírá ze služeb Google Play, Youtube nebo z nainstalovaných uživatelských aplikací. ˇ Uživatelské aplikace a hry Rady karet s aplikacemi a hrami jsou oddˇelené a mají své nadpisy, aby uživateli naznaˇcily v jaké rˇ adˇe se momentálnˇe nachází, viz Obrázek 2.5. Karty aplikací si bohužel nemuže ˚ uživatel pˇreskládat dle svých preferencí, avšak v našem návrhu launcheru set-top boxu Zoomtak je tato možnost uživateli poskytnuta. Ukázková ikona aplikace pro platformu Andorid TV je zobrazena na Obrázku 2.4 vpravo. 9
2. P LATFORMA A NDROID TV
ˇ Obrázek 2.5: Rady karet s uživatelskými aplikacemi a hrami, nastavení a indikace pˇripojení k internetu. [15] Nastavení a indikace pˇripojení Uživateli je umožnˇeno vstoupit do standardního systémového nastavení nebo zjistit momentální stav pˇripojení k Wi-Fi síti pomocí tlaˇcítek ve spodní cˇ ásti domovské obrazovky, viz Obrázek 2.5. Obrazovka se systémovým nastavením a obrazovka s pˇripojením k vyhledaným Wi-Fi sítím jsou zobrazeny v Pˇríloze 3 dole. V návrhu launcheru platformy set-top boxu Zoomtak jsou podobná tlaˇcítka uživateli také poskytnuta, viz Kapitola 4 o tvorbˇe uživatelského rozhraní vyvíjeného launcheru. 2.2.2 Doporuˇcení pˇri návrhu aplikace Vývojáˇri pro platformu Android TV by mˇeli dodržovat urˇcité vzorové rozložení ovládacích prvku˚ obrazovky vyvíjených aplikací, aby uživatelum ˚ umožnili rychle pochopit ovládání dané aplikace. Navigace, Focus a Selekce Uživatelé ovládají TV aplikaci pomocí šipek tzv. D-padu 2 na dálkovém ovladaˇci. Tento typ ovládání omezuje pohyb po obrazovce na 4 smˇery - nahoru, dolu, ˚ doleva a doprava, viz Obrázek 2.6. 2. D-pad (directional pad nebo control pad) je plochý, obvykle palcem ovládaný cˇ tyˇrsmˇerový prvek s jedním tlaˇcítkem pro každou stranu, k dispozici je na témˇerˇ všech moderních herních ovladaˇcích, na dálkových ovladaˇcích nˇekterých televizí, pˇrehrávaˇcu˚ a telefonu. ˚
10
2. P LATFORMA A NDROID TV
Obrázek 2.6: Navigace mezi prvky uživatelského rozhraní pomocí D-padu. [16] Duležitým ˚ aspektem pro navigaci mezi prvky uživatelského rozhraní je tzv. focus, tj. mechanismus, který daný prvek zvýrazní a udˇelá jej pro uživatele odlišným od ostatních prvku. ˚ Zvýraznˇení by mˇelo být ve formˇe zmˇeny velikosti, stínování, pruhlednosti, ˚ animací nebo kombinací tˇechto metod. Uživatel si vybere rˇ adu v levém navigaˇcním menu, provádí tzv. selekci. Tímto získává focus na první prvek vybrané rˇ ady. Tento zpusob ˚ ovládání je dle spoleˇcnosti Google pro uživatele srozumitelný, uživatel má možnost se mezi prvky viditelnˇe pohybovat a provádˇet zamýšlené akce. Ikona aplikace Ikona reprezentuje aplikaci na domovské obrazovce v rˇ adˇe karet s aplikacemi cˇ i hrami, a tudíž musí splnovat ˇ urˇcité náležitosti. Standardní velikost ikony je 320 x 180 pixelu. ˚ Název aplikace je souˇcástí ikony, pokud je aplikace dostupná ve více jazycích, musí být text názvu pˇreložen do daných jazyku. ˚ Na výše zobrazeném Obrázku 2.4 vpravo je znázornˇen doporuˇcený vzhled karty s aplikací. Pozadí Obrázek pozadí je vždy viditelný a vyplnuje ˇ celou cˇ ást obrazovky. Obrázek by mˇel také splnovat ˇ urˇcité náležitosti. Doporuˇcené rozlišení je 1920 x 1080 pixelu˚ plus 5% velikosti pro okraj, tzv. margin. Pokud má obrázek jiné rozmˇery, systém Android provede úpravu velikosti. Obrázek ne11
2. P LATFORMA A NDROID TV smí být ani cˇ ásteˇcnˇe pruhledný ˚ a jelikož aplikace pro platformu Android TV mají fixní orientaci, musí být obrázek poskytnut v tzv. landscape módu (tzn. naležato). Vývojáˇr díky tomu nemusí uvažovat zmˇenu orientace aplikace. Zvuková odezva Zvuky jsou v aplikacích pro Android TV velmi duležité. ˚ Spolu s vizuálním znázornˇením informují uživatele o akcích, které provádí. Jsou obzvlášt’ duležité, ˚ pokud se uživatel pokouší o nepovolenou akci, jako napˇr. navigace za konec rˇ ady s aplikacemi, aj. 2.2.3 Vize platformy Android TV Platforma Android TV není osobní poˇcítaˇc nebo mobilní telefon, proto musí být uživatelské rozhraní aplikací, bˇežících na tomto zaˇrízení, pˇrizpusobeno ˚ uživateli a jeho požadavkum. ˚ Zde je soupis nˇekolika duležitých ˚ vizí nebo pravidel, které si platforma dává za cíl: •
okamžitý pˇrístup k obsahu po zapnutí televize,
•
jednoduchý, pˇrehledný a intuitivní design,
•
pˇrirozené držení tˇela vsedˇe pˇri sledování filmu, ˚
•
uživatelsky pˇrívˇetivé prostˇredí pro hraní her,
•
rychlý pˇrístup uživatele k jeho oblíbené aplikaci (at’ už se jedná o sledování filmu˚ nebo hraní her),
•
veškerý obsah musí být pˇrístupný maximálnˇe do dvou kliknutí,
•
omezení textu na obrazovce (informování uživatele pomocí vizuálních a zvukových efektu), ˚
•
minimalizování navigaˇcních kroku˚ potˇrebných ke spuštˇení urˇcité akce,
•
omezení nutnosti zadávat text na obrazovce (použití hlasového vyhledávání). [18, 49]
2.3
Tvorba aplikace pro Android TV
Android již dnes nabízí bohaté zkušenosti s optimalizací aplikací pro zarˇ ízení s velkými obrazovkami a vysokým rozlišením. Vývoj aplikací pro 12
2. P LATFORMA A NDROID TV platformu Android TV proto nabízí vývojáˇrum ˚ novou pˇríležitost jak zaujmout uživatele, a to pˇrímo v pohodlí jejich domovu. ˚ Aplikace pro Android TV používají stejnou strukturu jako aplikace pro Android mobilní telefony cˇ i tablety. To znamená, že vývojáˇri mohou vytváˇret nové Android TV aplikace založené na zkušenostech, které získali pˇri vývoji pro jiné Android platformy. Kapitola 2.3.1 popisuje jak zaˇcít s vývojem pro platformu Android TV, vˇcetnˇe nastavení vývojového prostˇredí. Kapitola 2.3.2 struˇcnˇe pojednává o nástrojích, které nám usnadní vývoj aplikace pro platformu Android TV s pˇredem daným návrhem uživatelského rozhraní. V této kapitole jsou také zmínˇeny možnosti optimalizace stávajících projektu˚ pro platformu Android TV, nicménˇe model interakce uživatele s Android TV aplikacemi je podstatnˇe odlišný od interakce s mobilními telefony cˇ i tablety, jak již bylo v pˇredchozím textu zmínˇeno. V kapitole 2.3.3 je popsáno v cˇ em je vlastnˇe tato platforma tak odlišná od jiných Android platforem a cˇ eho si musí být vývojáˇr vˇedom pˇri tvorbˇe aplikace pro tuto platformu. Kapitola 2.3.4 popisuje ovládací zaˇrízení platformy Android TV a v kapitole 2.3.5 je nastínˇeno jak vytvoˇrit efektivní rozhraní aplikace pro tuto platformu. [19] 2.3.1 Nastavení Android projektu Tato kapitola popisuje jak nastavit vývojové prostˇredí pro tvorbu TV aplikací. Hlavní komponenty, které musí vývojáˇr využít jsou: •
aktivita pro bˇeh na platformˇe Android TV - nutnou podmínkou je v souboru AndroidManifest.xml deklarovat aktivitu pro bˇeh na platformˇe Android TV, viz Program 2.1,
•
podpurné ˚ knihovny - existují tˇri podpurné ˚ knihovny pro vývoj TV aplikace, viz následující kapitola 2.3.2.
Prerekvizity Než vývojáˇr pˇristoupí k psaní zdrojového kódu je nutné zkontrolovat nˇekolik náležitostí jeho vývojového prostˇredí: •
verze vývojového prostˇredí Android Studia 0.8 nebo novˇejší,
•
aktualizace SDK 3 tools na verzi minimálnˇe 24.0.0 - tato aktualizace umožní vytváˇret a testovat TV aplikace,
•
aktualizace SDK pro novou verzi Android 5.0 (API 21) nebo vyšší a
•
kompilaˇcní nástroj Gradle verze minimálnˇe 0.12.
3. SDK (software developement kit) je souhrn vývojových nástroju, ˚ které zahrnují knihovny, emulátor, debugger, dokumentace, ukázkové projekty, aj.
13
2. P LATFORMA A NDROID TV 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
<manifest> <uses-feature android:name="android.software.leanback" android:required="true"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <uses-feature android:name="android.hardware.gamepad" android:required="false"/> ...
...
Program 2.1: Vzorová definice souboru AndroidManifest.xml pro platformu Android TV. Šedou barvou jsou zvýraznˇeny duležité ˚ rˇ ádky.
Deklarace Android TV komponent V souboru AndroidManifest.xml, který udržuje a pˇredává základní informace o aplikaci Android systému, definujeme strukturu potˇrebnou pro vývoj Android TV aplikace podle Programu 2.1. Vyvíjíme-li aplikaci pro platformu Android TV informujeme o tom Android systém pomocí pˇríkazu˚ intent filter 4 a uses-feature. Intent filter oznaˇcí aplikaci jako spustitelnou na platformˇe Android TV a umožní ji stahovat uživatelum ˚ platformy Android TV z Google Play obchodu. Nezbytné je deklarovat, že nepoužíváme zaˇrízení s dotykovou obrazovkou opˇet pomocí pˇríkazu uses-feature. Poslední nutnou úpravou aplikaˇcního manifestu je poskytnutí ikony vyvíjené aplikace (viz Obrázek 2.4 vpravo) pomocí pˇríkazu android:banner pro launcher platformy Android TV, tak jak je znázornˇeno v Programu 2.1 na rˇ ádku 11.
4. Intent je object zprávy, díky kterému mohou komponenty Android systému mezi sebou komunikovat. Intent filter tedy definuje, na které intent zprávy má daná komponenta reagovat.
14
2. P LATFORMA A NDROID TV 2.3.2 Podpurné ˚ knihovny Pokud pro vývoj aplikace použijeme vývojové prostˇredí Android Studio, mužeme ˚ již pˇri založení projektu zvolit jako typ nového projektu Android TV, cˇ ímž se nám nainstalují veškeré potˇrebné nástroje do projektu automaticky. Pokud ovšem chceme konvertovat již vzniklou aplikaci do formátu, použitelného na platformˇe Android TV, musíme nástroje deklarovat pomocí závislostí v souboru build.gradle, viz Program 2.2. Android SDK obsahuje podpurné ˚ knihovny, které jsou urˇceny pro vývoj Android TV aplikací. Následuje výˇcet a popis zmínˇených knihoven, které jsou umístˇeny v adresáˇri <sdk>/extras/android/support/ : •
v17 leanback library - poskytuje potˇrebné komponenty a widgety uživatelského rozhraní TV aplikace,
•
v7 recyclerview library - poskytuje tˇrídy pro správu zobrazení seznamu˚ s aplikacemi cˇ i jiným obsahem, pˇredchozí zmínˇená knihovna využívá komponent této knihovny,
•
v7 cardview library - poskytuje widgety uživatelského rozhraní pro zobrazení informací uvnitˇr karet, které mají konzistentní vzhled,
•
v4 support library - poskytuje komponenty potˇrebné pro knihovnu Leanback.
Leanback poskytuje styl aplikace nazvaný Theme.Leanback, který nám zajistí konzistentní vizuální schéma televizní aplikace a je doporuˇcen pro každou aplikaci, která využívá tˇrídy z knihovny Leanback. V pˇrípadˇe, že má vývojáˇr v úmyslu aplikaci vyvinout nejen pro platformu Android TV, ale i ostatní Android platformy nebo konvertuje-li aplikaci na platformu Android TV, muže ˚ nastavit parametr android:required v aplikaˇcním manifestu na hodnotu false. Tímto krokem vývojáˇr informuje systému Android, že se nemusí jednat pouze o aplikaci pro TV platformu. Pˇri konvertování aplikace na platformu Android TV je nutné poskytnout aplikaci nový layout 5 pro stávající aktivity, který bude jednodušší pro navigaci pomocí dálkového ovládání a bude dodržovat doporuˇcení zmínˇená v pˇredchozí Kapitole 2.2.2. I když knihovna Leanback byla navržena pro systém Android 5.0 Lollipop, podporuje i starší verze systému, a to jednak z duvodu ˚ možnosti 5. Layout neboli grafické rozvržení jednotlivých prvku˚ obrazovky Android aplikace zahrnuje obvykle formát, rozvržení, velikost a barvu textu/obrázk ˚ u/tlaˇ ˚ cítek/linek/prázdných ploch a dalších grafických prvku. ˚
15
2. P LATFORMA A NDROID TV 1 2 3 4 5 6
dependencies { compile "com.android.support:leanback-v17:21.0.0" compile "com.android.support:recyclerview-v7:21.0.0" compile "com.android.support:cardview-v7:21.0.0" compile "com.android.support:support-v4:21.0.0" }
Program 2.2: Deklarace závislostí pro platformu Android TV v souboru build.gradle.
Obrázek 2.7: Knihovna Leanback využívá komponent knihoven RecyclerView a V4. konvertování aplikací ze standardních Android platforem (mobilní telefon, tablet) na Android TV a také z duvodu ˚ podpory aplikací platforem, které pˇredcházely platformˇe Android TV, tzn. pˇrevážnˇe aplikací platformy Google TV. Tato knihovna je závislá na komponentách z jiných dvou podpurných ˚ knihoven, viz Obrázek 2.7. Následující Tabulka 2.1 obsahuje výˇcet hlavních komponent knihovny Leanback, které mohou být pro vývojáˇre užiteˇcné. Leanback Support Library je navržena na základˇe návrhového vzoru Model-Presenter-View, který je odvozen ze vzoru Model-View-Controller. Model pˇredstavuje datovou cˇ ást aplikace, která udržuje objekty. V návrhovém vzoru Model-Presenter-View nejsou kladeny témˇerˇ žádné požadavky na formu nebo vlastnosti objektu˚ modelové cˇ ásti. To umožnuje ˇ vývojáˇri konvertovat jeho aplikaci na platformu Android TV bez vˇetších úprav moˇ delové cˇ ásti jeho aplikace. Cást View zastupuje standardní view prvky layoutu Android aplikací jako je napˇríklad TextView nebo ImageView. Zajímavˇejší cˇ ástí tohoto vzoru je Presenter, jež zastupuje souhrn komponent, které nám umožní navázat objekty z modelové cˇ ásti aplikace do jednotlivých grafických prvku˚ View cˇ ásti a taktéž nám umožní definovat vzhled jednotlivých prvku. ˚ 16
2. P LATFORMA A NDROID TV BrowseFragment VerticalGridFragment SearchFragment DetailsFragment RowsFragment BackgroundManager ArrayObjectAdapter HeaderItem ImageCardView ListRow ListRowPresenter Presenter Presenter.ViewHolder
navigaˇcní menu, pˇrepínání mezi kategoriemi a podpora ostatních Leanback komponent správa a vykreslení jednotlivých objektu˚ rˇ ad a kategorií podpora vyhledávání a vrácení výsledku pro RowsFragment vykreslení obrazovky s detailním popisem karty s obsahem definuje rˇ adu karet sofistikovanˇejší zmˇeny pozadí za bˇehu aplikace více použití, hlavním cílem této komponenty je udržovat objekty jednotlivých rˇ ad udržuje metainformace o dané rˇ adˇe karet view objekt pro vykreslení ikony karty s obsahem zahrnuje ArrayObjectAdapter s objekty a HeaderItem s informacemi o rˇ adˇe vykresluje ListRow objekt generuje jednotlivá view, ve kterých zobrazuje objekty ArrayObjectAdapteru stará se o provázání objektu˚ z ArrayObjectAdapteru s view, zárovenˇ ukládá do mezipamˇeti již naˇctené objekty pro opˇetovné vykreslení
Tabulka 2.1: Hlavní komponenty knihovny Leanback
Základní komponenty návrhu aplikace jsou cˇ tyˇri (viz Obrázek 2.8). SearchFragment podporuje vyhledávání v aplikaci, poskytuje rozhraní vyhledávání a umožnuje ˇ získat a vykreslit výsledek vyhledávání pomocí komponenty RowsFragment. VerticalGridFragment definuje uspoˇrádání objektu˚ do karet. DetailsFragment poskytuje možnost vykreslení karty s obsahem v detailnˇejší podobˇe, vˇcetnˇe textu, ˚ tlaˇcítek a ikony. Hlavní komponentou je BrowseFragment, který definuje použití ostatních komponent z knihovny Leanback a umožnuje ˇ nám definovat layout komponent levého navigaˇcního menu a rˇ ady karet s obsahem. BrowseFragment je nutné definovat v layoutu aplikace tak, jako v Programu 2.3. 17
2. P LATFORMA A NDROID TV 1 2 3 4 5 6 7
Program 2.3: Definice BrowseFragmentu v layout souboru dané aktivity.
Obrázek 2.8: Znázornˇení základních cˇ tyˇr komponent knihovny Leanback.
Obrázek 2.9: Rozložení jednotlivých komponent knihovny Leanback v doporuˇceném stylu Theme.Leanback. 18
2. P LATFORMA A NDROID TV Modelovou cˇ ást knihovny Leanback zastupuje komponenta ObjectAdapter, která programátorovi umožní udržovat jakýkoliv typ objektu, vˇcetnˇe vlastních definovaných objektu. ˚ Modelová cˇ ást aplikace muže ˚ pracovat s lokálními objekty nebo on-line se vzdálenými objekty. V aplikaci vývojáˇr použije tˇrídu ArrayObjektAdapter, která rozšiˇruje vlastnosti ObjectAdapteru. ArrayObjectAdapter udržuje objekty komponenty ListRow, jež se skládá ze dvou cˇ ástí - HeaderItem a dalšího ArrayObjectAdapteru. HeaderItem udržuje metainformace o dané rˇ adˇe karet, jako je napˇríklad název celé rˇ ady. Vnoˇrený ArrayObjectAdapter již udržuje objekty karet. Další duležitou ˚ komponentou v hierarchii knihovny je CardPresenter, kterou vývojáˇr ovlivnuje ˇ vzhled karty. Karta se skládá z nˇekolika prvku: ˚ ikona, jméno, informaˇcní text a badge image. Tyto prvky jsou zobrazeny na obrázku 2.4 vlevo. Tˇrída CardPresenter dˇedí ze tˇrídy Presenter a rozšiˇruje tak chování metod onCreateViewHolder a onBindViewHolder. První zmínˇená metoda je provedena pˇri prvním spuštˇení aplikace, tedy pˇri vytvoˇrení komponent BrowseFragmentu. V této metodˇe definujeme jednotné vlastnosti karet, jako jsou barva pozadí, velikost textu, aj. Metoda onBindViewHolder je provedena vždy, když dochází k posunu focus mezi kartami a máme definováno více objektu˚ v ArrayObjectAdapteru, které se všechny souˇcasnˇe nemohou zobrazit v kartách na obrazovce. Karty postupnˇe „odtékají“ doprava a uživatel tak pˇri posunu mezi kartami neopustí hlavní obrazovku. Vždy když se objeví nová karta, která nebyla doposud viditelná, je provedena právˇe metoda onBindViewHolder pro danou kartu, která definuje konkrétní text, ikonu a další vlastnosti karty. Leanback knihovna poskytuje celou rˇ adu dalších komponent pro prohlížení a interakci s položkami. Na Obrázku 2.9 je zobrazeno zjednodušené schéma hierarchie zmínˇených komponent knihovny. Toto rozvržení si samozˇrejmˇe muže ˚ vývojáˇr poupravit pro potˇreby vlastní aplikace. Leanback a její komponenty byly využity pro tvorbu vhodného uživatelského rozhraní platformy set-top boxu Zoomtak popsané v následující kapitole 3. 2.3.3 Odlišný hardware Hardwarové komponenty platformy Android TV jsou odlišné od tˇech v mobilních telefonech cˇ i tabletech. Platforma TV nedisponuje dotykovou obrazovkou, vestavˇeným fotoaparátem, GPS pˇrijímaˇcem, senzory6 , aj. Zaˇrízení Android TV je naopak zcela závislé na hardwarových komponentách, jako jsou televizní obrazovka a dálkové ovládání nebo herní ovládání, tzv. 6. Mezi senzory standardního Android zaˇrízení mohou patˇrit: akcelerometr, barometr, kompas, gyroskop, svˇetelný senzor, senzor vzdálenosti, krokomˇer a detektor chuze. ˚
19
2. P LATFORMA A NDROID TV gamepad 7 . Pokud tedy vyvíjíme pro platformu Android TV, Android systém nepodporuje následující hardwarové komponenty: Hardware
Android deskriptor
Dotyková obrazovka Emulátor dotykové obrazovky Telefonní modul GSM Vestavˇený fotoaparát Bluetooth NFC (Near field communications) GPS Mikrofon Senzory
android.hardware.touchscreen android.hardware.faketouch android.hardware.telephony android.hardware.camera android.hardware.bluetooth android.hardware.nfc android.hardware.location.gps android.hardware.microphone android.hardware.sensor
Pokud konvertujeme aplikaci na platformu Android TV a aplikace je funkˇcní i bez dané hardwarové komponenty, je doporuˇceno uvést v manifestu aplikace pˇríkaz android:required="false", cˇ ímž informujeme systém Android, že hardwarová komponenta není nezbytná. Pokud však pokud tento pˇríkaz neuvedeme, nemuže ˚ být aplikace nainstalována na zaˇrízení Android TV. V pˇrípadˇe uvedení zmínˇeného pˇríkazu, mužeme ˚ kontrolovat dostupnost hardwarových komponent až za bˇehu aplikace pomocí pˇríkazu hasSystemFeature(String) a vhodným zpusobem ˚ na to reagovat, viz Program 2.4. 1 2 3 4
// Test dostupnosti telefonniho modulu. if (getPackageManager().hasSystemFeature("android.hardware.telephony")) { Log.d("HardwareFeatureTest", "Zarizeni podporuje telefonni hovory"); }
Program 2.4: Kontrola dostupnosti telefonního modulu na dané platformˇe.
Dotyková obrazovka V dnešní dobˇe drtivá vˇetšina televizních obrazovek není dotykových, není to totiž v souladu s jejich primárním úˇcelem, kdy uživatel sedí pˇribližnˇe tˇri metry od obrazovky a ovládá ji dálkovým ovladaˇcem. Proto také platforma Android TV nepodporuje prvky uživatelského rozhraní s aktivním dotykovým módem. Vývojáˇr by si tohoto faktu mˇel být vˇedom a pˇrizpusobit ˚ rozhraní ovládání pomocí D-padu. 7. Gamepad je vstupní zaˇrízení k ovládání poˇcítaˇce, herní konzole nebo jiné platformy, používané pˇri hraní poˇcítaˇcových her a videoher.
20
2. P LATFORMA A NDROID TV
Obrázek 2.10: Dálkové a herní ovládání se zvýraznˇeným minimem podporovaných tlaˇcítek. [33] Fotoaparát Aˇckoliv vˇetšina televizoru˚ nedisponuje vestavˇeným fotoaparátem, stále máme možnost vyvíjet foto aplikace pro platformu Android TV, pouze uživateli znemožníme poˇrízení nového snímku, ale ponecháme možnost prohlížení a editaci existujících fotografií. GPS Android TV zaˇrízení jsou zamýšleny jako stacionární zaˇrízení k vnitˇrnímu užití, a proto neobsahují GPS modul. Stále ale mužeme ˚ uživateli ponechat možnost zjišt’ování pozice pomocí internetového pˇripojení. 2.3.4 Dálkové ovládání Pro interakci uživatele s Android TV zaˇrízením je nutné dodateˇcné hardwarové vybavení, jako je dálkové ovládání nebo gamepad. To znamená, že aplikace musí podporovat cˇ tyˇrsmˇerové tlaˇcítko D-pad. Aplikace by mˇela vhodnˇe reagovat na stav, kdy se dálkové ovládání vybije a také by mˇela být schopna reagovat na více pˇripojených dálkových ovládání souˇcasnˇe. Aplikace musí na dálkovém ovládání podporovat minimálnˇe tlaˇcítka D-padu (nahoru, dolu, ˚ doleva, doprava), tlaˇcítko OK, tlaˇcítko domu˚ a tlaˇcítko zpˇet. Pokud se jedná o herní aplikaci, mˇela by být schopna reagovat na vˇetšinu dostupných tlaˇcítek herního ovládání, viz Obrázek 2.10. Dálková ovládání jsou vˇetšinou pˇripojena k pˇrijímacímu zaˇrízení pomocí technologie Bluetooth, což umožnuje ˇ pˇrepnutí do režimu úspory 21
2. P LATFORMA A NDROID TV energie a odpojení od pˇrijímacího zaˇrízení v pˇrípadˇe, že ovládání není právˇe využíváno. To ale muže ˚ zpusobit ˚ pˇrerušení nebo restart aplikace. Pˇrerušení muže ˚ nastat v tˇechto pˇrípadech: •
sledování nˇekolik minut dlouhých videí,
•
pˇri hraní her, kdy se k zaˇrízení pˇripojí hráˇc s novým dálkovým ovládáním nebo
•
pˇri hraní her, kdy se nˇekteré dálkové ovládání odpojí.
Android TV aplikace by mˇela ve svém aplikaˇcním manifestu deklarovat, že je schopna na události pˇrerušení (odpojení nebo pˇripojení) reagovat pomocí pˇríkazu: android:configChanges="keyboard|keyboardHidden|navigation" Viz 16. rˇ ádek Programu 2.1. Aplikace bude v takovém pˇrípadˇe standardnˇe pokraˇcovat ve svém bˇehu a nebude pˇrerušena ani restartována. Pokud chceme, aby naše aplikace (hra nebo jiný typ aplikace) podporovala gamepad, uvedeme v aplikaˇcním manifestu pˇríkaz: <uses-feature android:name="android.hardware.gamepad"/> V pˇrípadˇe, že lze aplikaci ovládat nejen pomocí gamepadu, ale i dálkového ovládání pˇridáme ještˇe pˇríkaz: android:required="false", viz 6. rˇ ádek Programu 2.1. Uživatel má možnost využívat více dálkových ovládání (gamepad nebo standardní dálkové ovládání) , u kterých se mohou identifikátory jednotlivých tlaˇcítek lišit, a to i u D-padu. Proto je nutné aplikaci nakonfigurovat na pˇrijímání rozlišných signálu˚ z dálkových ovládání, více o tomto tématu naleznete v [21]. 2.3.5 Tvorba layoutu Android TV aplikace Televizní obrazovky pˇripojené k platformˇe Android TV zpravidla disponují mnohem vˇetšími rozmˇery a neposkytují tak stejnou úrovenˇ detailu˚ a barev jako menší obrazovky chytrých mobilních telefonu˚ cˇ i tabletu. ˚ Tento aspekt vyžaduje tvorbu odlišného typu layoutu rozhraní aplikace, tak aby bylo ovládání aplikace pro uživatele jasné, rychlé a zábavné. Na Obrázku 2.11 je zobrazen pˇríklad layoutu uživatelského rozhraní TV aplikace. Jak již bylo zmínˇeno v Kapitole 2.3.2 o podpurných ˚ knihovnách, je doporuˇceno využití stylu knihovny Leanback - Theme.Leanback, který nám zajistí konzistentní vizuální schéma televizní aplikace. V Programu 2.1 na rˇ ádku 17 je ukázána deklarace použití tohoto stylu. Pokud se vývojáˇr rozhodne styl knihovny Leanback nevyužít, a pˇresto vyvíjí aplikaci pro 22
2. P LATFORMA A NDROID TV
Obrázek 2.11: Pˇríklad rozložení prvku˚ v layoutu, uživatelsky pˇrívˇetivého rozhraní Android TV aplikace (podle tvurc ˚ u˚ tohoto layoutu ze spoleˇcnosti Google). Android TV, muže ˚ využít styl Theme.NoTitleBar, který zneviditelní Title 8 bar v jeho aplikaci. Následuje nˇekolik tipu˚ jak vytvoˇrit užiteˇcný a efektivní layout TV aplikace: •
vytvoˇrení layoutu v landscape módu - naležato, protože televize jsou vždy vyrábˇeny s delší spodní a vrchní hranou obrazovky,
•
v levé nebo pravé cˇ ásti layoutu by mˇely být umístˇeny ovládací prvky aplikace, pˇriˇcemž zbylá cˇ ást je urˇcena pro obsah aplikace a mˇela by tak mít dostateˇcnou šíˇrku,
•
rozˇclenˇení cˇ ásti layoutu urˇcené pro obsah aplikace na nˇekolik cˇ ástí za použití Fragment a GridView komponent, které nám umožní hladce se horizontálnˇe posouvat mezi prvky obsahu,
•
využití layout komponent RelativeLayout a LinearLayout, jež pˇrizpusobí ˚ pozice jednotlivých prvku˚ layoutu velikosti a kvalitˇe rozlišení televizní obrazovky,
•
použití vhodného margin (odsazení) mezi jednotlivými prvky layoutu a
•
využití zvukových efektu˚ pro navigaci mezi jednotlivými prvky layoutu rozhraní dané aplikace.[22]
8. TitleBar je komponenta Android aplikací od verze Android 3.0, která zastupuje roli záhlaví aplikace.
23
2. P LATFORMA A NDROID TV Texty a ovládací prvky layoutu by mˇely být dobˇre viditelné a snadno ovladatelné i z vˇetší vzdálenosti, mˇely by proto splnovat ˇ nˇekolik následujících doporuˇcení: •
rozˇclenˇení delších textu˚ do shluku˚ (skupin), které jsou pro uživatele lépe cˇ itelné než dlouhé texty,
•
použití svˇetlé barvy textu na tmavém pozadí, tím opˇet zlepšíme cˇ itelnost textu,
•
omezení fontu˚ s velmi úzkými nebo naopak širokými písmeny, doporuˇcen je standardní font sans-serif,
•
použití standardních velikostí fontu, ˚
•
jelikož mohou být obrazovky televizoru˚ ruznˇ ˚ e velké, je duraznˇ ˚ e doporuˇceno využívat relativních jednotek velikostí: dip (density-independent pixel) namísto absolutní jednotek pixelu˚ px. [22]
Dnes již bˇežnˇe rozlišení širokoúhlých plochých televizoru˚ dosahuje 1920 x 1080 pixelu˚ a více. Proto bychom obrázky, které chceme použít v layoutu aplikace, mˇeli uvádˇet v lepším rozlišení a nechat systém Android at’ s obrázky provede downscale9 [23]. Pro získání nejlepšího výsledku, po provedení úprav velikosti obrázku systémem Android, je lepší obrázky poskytovat v tzv. 9-patch formátu. Více se o formátu 9-patch doˇctete v [25]. V této kapitole již bylo zmínˇeno nˇekolik pˇrístupu˚ k návrhu layoutu uživatelského rozhraní TV aplikace, které bychom mˇeli používat. Zde je soupis tˇech, kterých bychom se mˇeli vyvarovat: •
opˇetovné použití layoutu z aplikace pro mobilní telefon cˇ i tablet bez modifikací,
•
použití komponenty ActionBar10 - nebylo by totiž možné tuto komponentu pohodlnˇe ovládat pomocí dálkového ovládání,
•
použití komponenty ViewPager11 - komponenta využívající dotyk a posun prstu po obrazovce, což zjevnˇe není u televizoru˚ možné. [24]
9. Downscale je zmenšení obrázku˚ metodou oˇrezání, která ale nedegraduje kvalitu obrázku. ˚ 10. Komponenta ActionBar vypadá podobnˇe jako TitleBar s tím rozdílem, že se jedná o mnohem sofistikovanˇejší komponentu moderních Android aplikací, která obsahuje navíc i navigaˇcní tlaˇcítka. 11. Komponenta ViewPager slouží pro pohodlné pˇrecházení mezi jednotlivými obrazovkami aplikace za pomocí pˇrejetí prstu po obrazovce tzv. swipe.
24
2. P LATFORMA A NDROID TV Návrh kvalitního uživatelského rozhraní aplikací byl jeden z duvod ˚ u, ˚ proˇc nemˇela pˇredchozí platforma Google TV úspˇech, protože pokud pro platformu neexistují kvalitní aplikace, zákazníci o ni nemají zájem. Aplikace možná nebyly až tak nekvalitní, ale nemˇely sjednocené uživatelské rozhraní a jejich ovládání, viz Pˇríloha 4. Android TV se tomu snaží pˇredcházet poskytnutím propracovaných podpurných ˚ vývojáˇrských nástroju˚ jako je Leanback knihovna. Doporuˇcený obsah V rˇ adˇe karet s doporuˇceným obsahem launcheru platformy Android TV se zobrazují systémem generované doporuˇcení, vývojáˇr však muže ˚ svou aplikaci pˇridat do výpisu systémových doporuˇcení a nechat ji tak uživatelum ˚ zobrazovat v rˇ adˇe karet. Podrobný návod naleznete v cˇ lánku [26]. Reklama V Android TV aplikacích je reklama povolená, tak jako v aplikacích pro jiné Android platformy, musí však splnovat ˇ urˇcitá pravidla. Reklama by mˇela vždy vyplnit celou obrazovku, aby nedocházelo k pˇrekrytí jen cˇ ásti obsahu obrazovky a uživateli bylo zˇrejmé, že muže ˚ reklamu zrušit. Uživatel musí mít tak možnost reklamu kdykoliv zrušit a vrátit se pomocí D-padu na pˇredchozí obrazovku. Video reklama muže ˚ trvat maximálnˇe 30 vteˇrin od jejího spuštˇení. Více informací o vývoji aplikací pro platformu Android TV cˇ tenáˇr nalezne na oficiálních webových stránkách Android Developers [27], kde se nachází vše od specifikací, tutoriálu˚ až po vzorové aplikace. Obzvláštˇe zajímavé jsou pak sekce o vývoji her nebo aplikací pro streamování video souboru. ˚ Další informace lze nalézt na oficiálním blogu platformy Android TV [28], webové diskuzní stránce StackOverflow [29] nebo komunitní Google+ stránce [30]. Aktuálnˇe dostupné hry a aplikace pro platformu Android TV cˇ tenáˇr nalezne na portále Google Play [31, 32]. V této kapitole o platformˇe Android TV byla cˇ tenáˇri pˇredstavena tato platforma a byly popsány ovládací prvky a vývojové nástroje, kterých bylo využito pro návrh uživatelského prostˇredí platformy set-top boxu Zoomtak. Následovat bude kapitola, která popíše zvolenou platformu set-top boxu z pohledu hardware i firmware a porovná ji s referenˇcním pˇrístrojem Nexus Player platformy Android TV.
25
3 Platforma set-top boxu˚ Zoomtak Cílem této práce je vytvoˇrit vlastní upravený firmware pro vybrané Android zaˇrízení, tato kapitola pojednává o hardwarovém a softwarovém vybavení platforem získaných set-top boxu˚ s operaˇcním systémem Android. Pro úˇcely této práce byly k dispozici 4 modely set-top boxu, ˚ které spoleˇcnost Zoomtak oznaˇcuje jako: •
Zoomtak M6 Dual Core Smart TV Box,
•
Zoomtak M5 Quad Core Android TV Box,
•
Zoomtak K5 Quad Core Android TV Box,
•
Zoomtak K8 Quad Core Android TV Box.
Všechny cˇ tyˇri set-top boxy jsou znázornˇeny v Pˇríloze 2. Set-top boxy Zoomtak jsou pro úˇcely této práce vhodná zaˇrízení. Set-top boxy neobsahují tuner pro pˇrijímání digitálního signálu (stejnˇe tak jako platforma Nexus Player), ale umožnují ˇ pˇripojení k internetu pomocí RJ45 Ethernet rozhraní nebo Wi-Fi modulu. Disponují firmware s operaˇcním systémem Android 4.2 - Jelly Bean v pˇrípadˇe modelu M6 a Android 4.4 - KitKat v pˇrípadˇe modelu˚ M5, K5 a K8. Jsou vyrábˇeny cˇ ínskou spoleˇcností Zoomtak se sídlem v Hongkongu. Zoomtak nabízí mnoho Android zaˇrízení, které mají jeden spoleˇcný rys - nedisponují obrazovkou. Tato zaˇrízení jsou tedy primárnˇe urcˇ ena pro pˇripojení k monitoru nebo televizní obrazovce pomocí HDMI kabelu. V nabídce spoleˇcnosti jsou zaˇrízení, která obsahují dvou nebo cˇ tyˇrjádrové procesory. Zmínˇené set-top boxy se od sebe svými hardwarovými specifikacemi pˇríliš neliší. Rozdílnosti jsou v komponentách CPU, GPU, ve velikosti RAM pamˇeti, poˇctu USB portu, ˚ Bluetooth modulu a podpoˇre výstupního video formátu. Set-top box M6 obsahuje dvoujádrový procesor, M5, K5 a K8 obsahují cˇ tyˇrjádrový procesor. Grafický procesor obsahují set-top boxy M5 a K5 stejný - Quad-core Mali-450MP, M6 obsahuje Dual-core Mali-400 a K8 Octa-core Mali-450MP. Set-top boxy M5 a M6 disponují cˇ tyˇrmi USB 2.0 porty, zatímco K5 a K8 mají tyto porty tˇri. K5 a K8 nemají oproti M5 a M6 výstupní YpbPr port a disponují namísto Coaxial audio výstupním portem optickým audio výstupním portem. Kromˇe K8 poskytují všechny set-top boxy video výstup v rozlišení až 1080P, K8 však nabízí video výstup v rozlišením až 4K. Poslední duležitou ˚ odlišností v hardware set-top boxu˚ je pˇrítomnost Bluetooth modulu, M6 je starší než ostatní tˇri set-top boxy a tento modul neobsahuje. 26
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK Podrobné specifikace všech cˇ tyˇr set-top boxu˚ jsou formou tabulek popsány v Pˇríloze 5. V následujícím textu budeme považovat set-top box M6 za referenˇcní, jelikož jsou si výše uvedené set-top boxy v mnoha ohledech velmi podobné a pocházejí od stejného výrobce. Set-top box M6 byl vybrán za zástupce ostatních tˇrí set-top boxu˚ také z toho duvodu, ˚ že byl vyroben dˇríve než zbylé tˇri (neobsahuje napˇríklad tak výkonný procesor nebo grafickou jednotku) a disponuje starším operaˇcním systémem Android 4.2. Nástroje podpurné ˚ knihovny Leanback jsou dle spoleˇcnosti Google zpˇetnˇe kompatibilní a nemˇel by tedy být problém spustit vytvoˇrený launcher na kterémkoliv set-top boxu. Testování vytvoˇreného prostˇredí launcheru ovšem probˇehne na všech cˇ tyˇrech zaˇrízeních a výsledky testování budou zmínˇeny v Kapitole 5.3. Následující Podkapitola 3.1 podrobnˇeji popisuje hardware set-top boxu M6 a porovnává jej s hardwarem zaˇrízení Nexus Player. Podkapitola 3.2 pojednává o softwarovém vybavení set-top boxu, porovnává firmware set-top boxu se standardním firmware neupraveného systému Android 4.2 a popisuje provedené úpravy ve firmware set-top boxu.
3.1
Hardwarové specifikace platformy M6
Set-top box M6 je malá hliníková 200g vážící krabiˇcka s rozmˇery 16 x 10 x ˇ 2,5cm, vzhled zaˇrízení je zobrazen v Pˇríloze 6. Rídícím prvkem této platformy je dvoujádrový procesor Amlogic s maximální frekvencí 1.5GHz. Disponuje integrovanou dvoujádrovou grafickou jednotkou Mali-400 s 3D akcelerací. K síti internetu lze M6 pˇripojit pomocí zabudovaného 802.11b/g/n Wi-Fi modulu nebo pomocí RJ45 Ethernet portu. Procesor má k dispozici 1GB RAM pamˇeti a 8GB vnitˇrního úložištˇe pro data. Vnitˇrní úložištˇe je rozšiˇritelné SD/MMC/MS kartou do velikosti až 32GB nebo pomocí externího USB zaˇrízení do velikosti až 3TB. Externí zaˇrízení lze k M6 pˇripojit pomocí nˇekolika rozhraní: •
HDMI Digital Audio & Video Output - pro pˇripojení externí obrazovky,
•
AV output - alternativní cesta pro pˇripojení starších televizoru, ˚ které nedisponují HDMI portem,
•
YPbPr - další možnost pˇripojení obrazovky, jedná se o pˇripojení ke starším PC monitorum, ˚ 27
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK •
USB 2.0 (4x) - pro pˇripojení externích pamˇetí nebo jiných USB zaˇrízení jako je myš, klávesnice nebo webová kamera,
•
SD/MMC/MS card slot - pro pˇripojení karty s uživatelskými daty. [37, 38]
Detailnˇeji jsou porty pro pˇripojení externích zaˇrízení zobrazeny na Obrázku 3.1 a také popsány v tabulce Pˇrílohy 5 s hardwarovými specifikacemi této platformy. V pˇrední cˇ ásti set-top boxu se nachází tlaˇcítko pro zapnutí/ vypnutí zaˇrízení, IR1 pˇrijímaˇc signálu dálkového ovládání a LCD display pro zobrazení stavových informací nebo aktuálního cˇ asu. Set-top box pˇrehraje mnoho video a audio formátu, ˚ viz spodní cˇ ást zmínˇené tabulky.
Obrázek 3.1: Popis portu˚ set-top boxu Zoomtak M6 pro pˇripojení externích zaˇrízení. [44] Balení kromˇe samotného set-top boxu obsahuje také IR dálkové ovládání. Dálkové ovládání využívá technologii pˇrenosu informací pomocí infraˇcerveného svˇetla. Na dálkovém ovládání je rozmístˇeno nˇekolik tlaˇcítek. Mezi ty nejduležitˇ ˚ ejší, která byla využita pˇri návrhu ovládání launcheru platformy M6, patˇrí: OK, zpˇet, domu, ˚ zapnout/vypnout, tlaˇcítka ovládání 1. IR (z angl. infrared) znaˇcí druh pˇrenosu informací pomocí infraˇcerveného záˇrení. Vˇetšina dnešních dálkových ovládání televizoru˚ nebo jiných zaˇrízení na dálkové ovládání používá technologii pˇrenosu informací pomocí IR.
28
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK
Obrázek 3.2: IR dálkové ovládání set-top boxu M6 s vyznaˇcenými tlaˇcítky, které byly použity pro ovládání vytvoˇreného launcheru platformy set-top boxu M6. zvuku, tlaˇcítka QWERTY klávesnice, barevná tlaˇcítka ve vrchní cˇ ásti ovladaˇce (ˇcervené, zelené, žluté, modré) a tlaˇcítka D-padu. Tlaˇcítka ovládání vytvoˇreného launcheru jsou zobrazena na Obrázku 3.2. 3.1.1 Srovnání platforem Android TV a M6 V této podkapitole je porovnán hardware referenˇcního pˇrístroje platformy Android TV - Nexus Player s vybraným Android zaˇrízením - set-top box Zoomtak M6. Pro srovnání byla vytvoˇrena následující Tabulka 3.1, která porovnává klíˇcové hardwarové parametry. Jak je z tabulky patrné obˇe zaˇrízení jsou velikostnˇe i váhovˇe srovnatelná. Nexus Player disponuje modernˇejším procesorem a grafickou jednotkou, jež umožní pˇrehrát video v rozlišení až 4K, což v pˇrípadˇe zaˇrízení Zoomtak 29
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK M6 není možné. Obˇe zaˇrízení mají shodnou velikost operaˇcní pamˇeti a vnitˇrního úložištˇe. Avšak set-top box K8 je vybavený výkonnˇejším procesorem než Nexus Player a disponuje RAM pamˇetí o kapacitˇe 2GB. Co se rozhraní týˇce, platforma Zoomtak M6 poskytuje mnohem více možností oproti platformˇe Nexus Playeru. Je to z toho duvodu, ˚ že Zoomtak M6 nebyl vytvoˇren pro konkrétní úˇcel tak jako Nexus Player (tj. pro úˇcely Android TV). V pˇrípadˇe konektivity se zaˇrízení zásadnˇe liší. Nexus Player obsahuje Bluetooth modul pro bezdrátové pˇripojení externích zaˇrízení jako je dálkové ovládání nebo gamepad, M6 tímto modulem nedisponuje a s dálkovým ovládáním je propojen pomocí IR technologie. Bohužel pˇrenos pomocí
Rozdíly
Android TV - Nexus Player
Zoomtak M6
CPU
Intel Atom Quad Core 1.8GHz
Amlogic Dual Core 1.5GHz
GPU
Imagination PowerVR Series 6 Graphics 2D/3D Engine
Dual Core Integrated Mali-400 GPU (3D Acceleration Engine)
RAM
1GB
1GB
ROM
8GB
8GB
802.11ac 2x2 Wi-Fi Module
802.11 b/g/n Wi-Fi Module With Antenna RJ45 Ethernet Network Connection x napájení, HDMI, 4x USB 2.0, AV output, SD/MMC/MS memory card slot, YPbPr, Coaxial
Konektivita
x Bluetooth 4.1 Rozhraní
napájení, HDMI, Micro USB 2.0
Rozmˇery a váha
12 x 12 x 2cm, 235g
16 x 10 x 2,5cm, 200g
Dálkové ovládání
40g (bez baterií - 2x AAA), 9 tlaˇcítek, technologie pˇrenosu informací - Bluetooth 4.1
50g (bez baterií - 2x AAA), 45 tlaˇcítek, technologie pˇrenosu informací - IR
Tabulka 3.1: Tabulka porovnání zaˇrízení Nexus Player se set-top boxem Zoomtak M6. [37, 43] 30
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK IR má svá omezení, infraport pˇrijímaˇce a vysílaˇce musí být na sebe namírˇ eny, jinak nemusí dojít k pˇrenosu informací, s cˇ ímž se pˇrenos pomocí technologie Bluetooth nepotýká. Dosah dálkového ovládání s IR je zhruba 15m oproti 10m v pˇrípadˇe Bluetooth. Obˇe ovládání jsou pˇribližnˇe stejnˇe velká a tˇežká. Set-top boxy M5, K5, a K8 disponují Bluetooth modulem, který ale slouží primárnˇe pro pˇrenos uživatelských dat (napˇríklad z mobilního telefonu), set-top boxy jsou tedy také ovládané pomocí IR dálkového ovladaˇce. Dálkové ovládání Nexus Playeru bylo navrženo právˇe pro úˇcely ovládání jednoduchého uživatelského rozhraní, jaké Android TV podle spoleˇcnosti Google poskytuje. Proto obsahuje pouze 9 tlaˇcítek, viz Obrázek 2.10 vlevo. Dálkové ovládání Zoomtak M6 obsahuje naopak 45 tlaˇcítek pro ruzné ˚ úkony. Ve vyvinutém launcheru této platformy bylo použito pouze 11 z nich v souladu s návrhovými doporuˇceními platformy Android TV.
3.2
Firmware platformy set-top boxu M6
Spoleˇcnost Zoomtak dodává set-top box M6 s pˇredinstalovaným operaˇcním systémem Android 4.2 Jelly Bean. Tato verze Androidu byla vydána spoleˇcností Google na sklonku podzimu 2012. Hlavní výhody oproti pˇredchozím verzím jsou: možnost tvoˇrení uživatelských úˇctu, ˚ rozdvojená notifikaˇcní lišta a nižší nároky na RAM pamˇet’ zaˇrízení. Následovaly verze 4.2.1 a 4.2.2, které opravovaly chyby pˇredchozích verzí a pˇridávaly napˇríklad zvýšení výdrže baterií nebo podporu OpenGL grafiky. Set-top box, pro který bylo v rámci této diplomové práce vyvinuto nové uživatelské prostˇredí, obsahuje verzi systému Android 4.2.2, jež je stabilní verzí tohoto systému. [45, 46] Verze systému Android Jelly Bean set-top boxu M6 stejnˇe tak jako verze Android KitKat set-top boxu˚ M5, K5 a K8 obecnˇe nebyly navrženy pro zaˇrízení s pˇripojenou širokoúhlou televizní obrazovkou ovládanou pomocí dálkového ovladaˇce bez možnosti doteku˚ obrazovky. Byly navrženy primárnˇe pro zaˇrízení jako jsou chytré mobilní telefony nebo tablety, viz Obrázek 3.3 znázornující ˇ uživatelské prostˇredí operaˇcního systému Android Jelly Bean. Proto bylo nezbytné vytvoˇrit nadstavbu uživatelského prostˇredí - launcher, který umožnuje ˇ pohodlné ovládání pomocí dálkového ovladaˇce, popsaného v pˇredchozí Kapitole 3.1 o hardwarovém vybavení platformy Zoomtak M6 a který splnuje ˇ požadavky definované v Kapitole 2.2.3 o pravidlech návrhu aplikace pro platformu Android TV. 31
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK
Obrázek 3.3: Zobrazení uživatelského prostˇredí zaˇrízení se systémem Android Jelly Bean. [47] 3.2.1 Pˇríprava vlastního firmware Samotné vytvoˇrení nového a pro televizory vhodného launcheru není dostaˇcujícím krokem pro získání operaˇcního systému (firmware), jehož ovládání bude pro uživatele srozumitelné a snadno použitelné. V našem pˇrípadˇe bylo nutné upravit systémové promˇenné firmware set-top boxu. Firmware od spoleˇcnosti Zoomtak je založený na tabletové verzi systému Android 4.2.2. V Zoomtak firmware již prošel nˇekolika úpravami, napˇríklad: má zafixovanou orientaci v landscape módu, obsahuje vlastní prostˇredí XBMC 2 (dnes Kodi), obsahuje nˇekolik (ne zcela optimalizovaných) uživatelských aplikací, umožnuje ˇ reagovat na odpojení nebo pˇripojení HDMI kabelu, aj. Abychom mohli prozkoumat upravený firmware bylo nutné se z pocˇ ítaˇce k set-top boxu pˇripojit pomocí nástroje ADB3 . Tento nástroj se vˇetšinou používá pro pˇripojení k Android zaˇrízení pomocí USB kabelu, my jsme využili možnost pˇripojení pomocí Wi-Fi sítˇe. Komunikace mezi poˇcítaˇcem 2. XBMC je uživatelské prostˇredí, jež vzniklo puvodnˇ ˚ e jako mediální pˇrehrávaˇc a postupnˇe se vyvíjelo až do dnešní podoby alternativního open-source prostˇredí. Obrazovky prostˇredí XMBC jsou zobrazeny v Pˇríloze 7. 3. ADB (Android Debug Bridge) je nástroj pˇríkazové rˇ ádky, jež umožní vývojáˇri komunikovat s Android zaˇrízením a je tak velmi užiteˇcný pˇri vývoji a ladˇení aplikací.
32
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK a zaˇrízením je postavena na modelu klient-server. ADB definuje nˇekolik pˇríkazu˚ pro vzdálenou správu Android zaˇrízení, použity byly následující: •
adb start-server - zkontroluje, jestli proces ADB serveru bˇeží a pokud ne, nastartuje ho,
•
adb kill-server - ukonˇcí proces ADB serveru,
•
adb tcpip [port] - restartuje ADB hosta v TCP módu a pˇridˇelí mu zvolený port,
•
adb devices - vypíše seznam aktuálnˇe pˇripojených zaˇrízení,
•
adb connect [ip address] - pˇripojení k zaˇrízení pomocí jeho IP adresy,
•
adb shell - spustí shell ve vzdáleném zaˇrízení. [48]
Po pˇripojení k zaˇrízení a spuštˇení programu shell (pˇríkazové rˇ ádky vzdáleného zaˇrízení) mužeme ˚ již procházet adresáˇrovou strukturu set-top boxu. Adresáˇrová struktura set-top boxu je znázornˇena v Pˇríloze 8 nahoˇre. Jelikož již byly set-top boxy v Zoomtak tzv. „rootnuty“, obsahují program su (z angl. switch user - zmˇena systémového uživatele), což zaˇrízení se standardním systémem Android neobsahují. Je vhodné spustit program su z adresáˇre /system/xbin, jež nám pˇridˇelí práva super uživatele. Pro vypsání systémových promˇenných použijeme pˇríkaz getprop, který v pˇríkazové rˇ ádce zobrazí nastavené systémové promˇenné. Tyto promˇenné slouží ke konfiguraci komponent, jež byly v Zoomtak pˇridány. Lze tedy definicí vhodných systémových promˇenných mˇenit chování pˇridaných komponent, viz Program 3.1. Pokud porovnáme systémové promˇenné standardního neupraveného operaˇcního systému Android 4.2 s poupraveným od spoleˇcnosti Zoomtak, tak vidíme, že bylo pˇridáno nˇekolik nových promˇenných jako jsou napˇríklad: #SCREEN
[pm.sleep_mode]:[4],
[const.window.h]: [720],
[tv.powermanager.nevertimeout]:[true],
[const.window.w]: [1280],
#STATUSBAR
[sys.keeplauncher.landcape]:[true],
[ro.statusbar.widget]:[false],
[ro.ui.cursor]:[osd2],
[ro.statusbar.button]:[false],
[ro.ui.cursor.autohide]:[true],
[ro.statusbar.widget.power]:[false],
[ro.ui.cursor.timeout]:[10000],
[ro.statusbar.yearmonthdayweek]:[false],
[ro.sf.hwrotation]:[0],
[ro.statusbar.volume]:[false],
33
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK [ro.statusbar.screenshot]:[false],
[hw.nophone]: [true],
#NETWORK
[hw.vfd]: [true],
[ro.ethernet.default_onwifi.interface]:
# PLAYERS
[wlan0true],
[media.amsuperplayer.enable]:[true]
[wifi.interface]:[wlan0],
[media.amplayer.enable-acodecs]:[ape,flac,...]
#PLATFORM
[media.amplayer.enable]:[true]
[ro.platform.has.touch]:[false],
[media.amplayer.support-exname]:
[ro.platform.hdmionly]:[true],
[divx,h264,avi,ts,m2ts,mkv,mp4,mpg,mpeg,...]
#HARDWARE
[media.amplayer.support-exname1]:
[ro.hardware]:[amlogic],
[mp2,mp3,ac3]
[gps.enable]: [false],
[media.amsuperplayer.defplayer]:
[has.media.poll]: [true],
[PV_PLAYER]
[hw.cameras]: [0],
[media.amplayer.startmode]:[true]
[hw.has.accelerometer]: [false],
#UBOOT
[hw.has.bluetooth]: [false],
[ubootenv.var.outputmode]:[720p50hz],
[hw.hasethernet]: [true],
[ubootenv.var.defaulttvfrequency]:[50],
[hw.hasusbcamera]: [true] ,
[ubootenv.var.hdmimode]:[720p50hz],
[hw.nobattery]: [true],
[ubootenv.var.has.accelerometer]:[false],
aj.
[hw.nogps]: [true],
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
... // zjisteni maximalni sirky pasma pro live video stream long maxBw = (long)in_get_sys_prop_float("media.httplive.max-bw"); if (maxBw > 0 && est_bps > maxBw) { LOGV("bandwidth capped to ld bps", maxBw); est_bps = maxBw; } ... // zjisteni doby vyhledavani (seek time) if(s->seekflag>0&&in_get_sys_prop_bool("libplayer.hls.lowbw_seek")>0) { LOGV("Used low bandwidth stream after seek"); index = 0; } ... // zjisteni prubezneho casu selhani int failover_time = in_get_sys_prop_float("libplayer.hls.failover_time"); failover_time = HLSMAX(failover_time,FAILOVER_TIME_MAX); do{...} ...
Program 3.1: Ukázka cˇ ásti zdrojového kódu programu pro práci se systémovými promˇennými Mediaplayeru. Struktura adresáˇru˚ upraveného firmware se od toho standardního liší hlavnˇe v adresáˇri /system (viz Obrázek 3.4), kde byly pˇridány adresáˇre preinstall, recovery a vendor a upraven obsah adresáˇru˚ app, media a xbin. 34
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK
Obrázek 3.4: Obsah adresáˇre /system upraveného firmware set-top boxu M6 nahoˇre, obsah adresáˇre /system standardní verze systému Android 4.2 dole. Adresáˇr /system/vendor obsahuje pˇridané knihovny spoleˇcnosti Zoomtak. Adresáˇr /system/recovery obsahuje soubor pro obnovu systému recovery.img. Adresáˇr /system/preinstall obsahuje instalaˇcní apk soubory aplikací, které jsou naistalovány do set-top boxu a které uživatel muže ˚ vidˇet a upravit v systémovém nastavení. Naopak adresáˇr /system/app obsahuje systémové aplikace, které uživatel nenalezne v systémovém nastavení, viz Pˇríloha 8 dole. Vytvoˇrený launcher bude zaˇrazen mezi systémové aplikace, tak aby si jej uživatel nemohl napˇríklad omylem smazat a také proto, aby mohl lanucher provádˇet zmˇenu systémových nastavení (napˇr. nastavení systémového cˇ asu set-top boxu dle serveru). Obsah adresáˇre s apk soubory uživatelských aplikací je zobrazen na Obrázku 3.5. Proto, abychom mohli firmware poupravit a vyhovoval tak našim požadavkum, ˚ bylo nutné rozbalit zavádˇecí systémový soubor (tzv. boot image file), provést úpravy a opˇetovnˇe jej zkompilovat. Firmware byl upraven následujícím zpusobem: ˚ •
v adresáˇri /system/fonts/ byly smazány puvodní ˚ Roboto fonty a byly nahrazeny aktuální sadou fontu˚ Roboto, 35
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK
Obrázek 3.5: Obsah adresáˇre /system/preinstall upraveného firmware settop boxu M6, který obsahuje spustitelné soubory uživatelských aplikací. •
v adresáˇri /system/preinstall/ se nachází spoleˇcností Zoomtak vybrané uživatelské aplikace. Nˇekteré z nich ovšem byly nefunkˇcní nebo pro toto zaˇrízení nepoužitelné. Bylo nutné aplikace otestovat a nevhodné vymazat, pˇrípadnˇe je aktualizovat na nové verze nebo verze urˇcené pro Google TV,
•
do adresáˇre /system/xbin/ byl nahrán nástroj ssh (pro vzdálený pˇrístup k zaˇrízení), jež byl užiteˇcný pˇri vývoji aplikace launcheru,
•
do adresáˇre /system/xbin/ byl dále pˇridán program pro monitoring systému, jenž je užiteˇcný pro budoucí testy vytížení systému - htop (interaktivní systémový monitor procesu˚ pro operaˇcní systémy Linux),
•
upraveno nebo pˇridáno bylo nˇekolik systémových promˇenných, jejich výbˇer je znázornˇen v Tabulka 3.2,
•
pˇri spuštˇení systému bylo tˇreba zobrazit vlastní startovací logo, soubor system/media/bootanimation.zip byl nahrazen vlastním logem a
•
po startu systému bylo nastaveno spuštˇení novˇe vytvoˇreného launcheru. 36
3. P LATFORMA SET- TOP BOX U˚ Z OOMTAK BUILD
ro.build.date.utc=1372471939 ro.build.type=user
[email protected] ro.build.host=rychnovsky.dp
PRODUCT
ro.product.model=rychnovsky.dp box ro.product.name=rychnovsky.dp ro.product.device=rychnovsky.dp ro.product.board=mx2ref ro.product.cpu.abi=armeabi-v7a ro.product.manufacturer=rychnovsky.dp
ENVIROMENT
ro.com.android.dateformat=dd-MM-yyyy ro.product.locale.language=cs ro.product.locale.region=CZ persist.sys.language=cs persist.sys.country=CZ persist.sys.timezone=Europe/Amsterdam
LAUCHER
sys.keeplauncher.landcape=true ro.defaultlauncher.package= launcher.box.sledovanitv.cz.launcher ro.defaultlauncher.class=BaseActivity dongleLauncher.enable.Animation=false
ADB UBOOT
service.adb.tcp.port=5555 ubootenv.var.defaulttvfrequency=50 ubootenv.var.hdmimode=720p50hz
Tabulka 3.2: Tabulka znázornující ˇ upravené nebo pˇridané systémové promˇenné.
37
4 Tvorba aplikace launcheru V pˇredchozí kapitole byl popsán hardware a firmware zvoleného Android zaˇrízení. Proto, aby byl firmware zaˇrízení vhodný pro ovládání pomocí dálkového ovladaˇce a aby bylo toto zaˇrízení možné pˇripojit k televizoru pro každodenní užívání, bylo vytvoˇreno nové uživatelské prostˇredí. Uživatelské prostˇredí neboli launcher je aplikace jako každá jiná s tím rozdílem, že je spuštˇena okamžitˇe po startu zaˇrízení a zastupuje tak úlohu domácí obrazovky. Launcher poskytuje odkazy na ostatní uživatelské aplikace, informace o aktuálním stavu zaˇrízení, možnost úpravy nastavení zaˇrízení, aj. Launcher tak uživateli slouží jako urˇcitý „rozcestník“ ovládáním daného zaˇrízení. Pˇri návrhu launcheru platformy M6 jsme vycházeli z nˇekolika požadavku: ˚ •
vytvoˇrení jednoduchého uživatelského rozhraní, tak jak jej definují pravidla návrhu aplikací pro platformu Android TV [49],
•
využití novinek z vývojových nástroju˚ pro Android 5 Lollipop [50],
•
uživatelské rozhraní launcheru se bude skládat z co nejmenšího pocˇ tu obrazovek,
•
launcher bude kromˇe vybraných aplikací zobrazovat také cˇ as, aktuální stav pˇripojení, IP adresu zaˇrízení a verzi firmware,
•
uživatelské aplikace budou na hlavní obrazovce seˇrazeny vedle sebe a uživatel bude mít možnost mezi nimi pˇrecházet, spouštˇet je a pˇresouvat na jinou pozici,
•
na hlavní obrazovce budou pˇrístupná tlaˇcítka pro nastavení systému, zobrazení všech nainstalovaných aplikací a tlaˇcítko zobrazující novinky.
Tyto požadavky nás pˇrivedly k možnosti využití nástroju˚ podpurné ˚ knihovny Leanback pro tvorbu aplikací platformy Android TV, popsané v Kapitole 2.3.2. V následujících podkapitolách budou popsány jednotlivé obrazovky uživatelského rozhraní navrženého launcheru a jeho ovládání.
4.1
Uživatelské rozhraní navrženého launcheru
Uživatelské rozhraní vytvoˇreného launcheru platformy M6 se skládá ze tˇrí obrazovek: hlavní obrazovka, obrazovka se všemi nainstalovanými uživa38
4. T VORBA APLIKACE LAUNCHERU telskými aplikacemi a obrazovka s nastavením. Souˇcástí uživatelského rozhraní je i obrazovka, jenž se uživateli zobrazí pouze pˇri prvním spuštˇení zaˇrízení a slouží tedy jako pruvodce ˚ nastavením launcheru pˇri prvotním spuštˇení. Rozhraní navrženého launcheru je zobrazeno v Pˇríloze 9. 4.1.1 Hlavní obrazovka Hlavní obrazovka launcheru se skládá z nˇekolika prvku. ˚ Klíˇcovým prvkem této obrazovky je rˇada karet s aplikacemi a hrami, která pro uživatele pˇredstavuje soubor oblíbených aplikací. Mezi kartami je možné se posouvat zleva doprava nebo obrácenˇe, pˇridávat nové aplikace, odebírat aplikace nebo je pˇresouvat na nové pozice. Na obrazovce se vždy zobrazí urˇcitý pocˇ et karet v závislosti na velikosti dané obrazovky. Pˇri prvním spuštˇení zarˇ ízení jsou uživateli do karet s oblíbenými aplikacemi pˇridány následující aplikace: SledovaniTv.cz Box1 , internetový prohlížeˇc Google Chrome, internetové rádio TuneIn, Youtube a obchod s aplikacemi Google Play. Pokud se všechny karty na obrazovku nevejdou, uživatel má možnost se na nˇe posunout pomocí šipky doleva na D-padu dálkového ovládání. Aplikace na zaˇcátku rˇ ady budou plynule „odtékat“ za levý okraj obrazovky a aplikace, které se na obrazovku nejprve nevešly, se budou uživateli plynule zobrazovat od pravého okraje obrazovky. Díky tomuto principu zustanou ˚ ostatní prvky nezmˇenˇeny a uživatel tak neopustí hlavní obrazovku, viz Obrázek 4.1. Pˇri návrhu rˇ ady karet s aplikacemi bylo využito komponent podpurné ˚ knihovny Leanback, konkrétnˇe komponenty BrowseFragment, jež definuje rˇ adu karet s aplikacemi a umožnuje ˇ tak použití ostatních komponent z knihovny. Komponenta ArrayObjectAdapter udržuje objekty jednotlivých aplikací a spoleˇcnˇe s komponentou HeaderItem, jež zobrazuje nadpis rˇ ady karet, je reprezentována komponentou ListRow. Jednotlivé karty jsou poté zobrazeny pomocí komponenty CardPresenter. Tento typ rˇ ady pˇredstavuje v launcheru platformy Android TV rˇ adu karet s doporuˇceným obsahem. Abychom docílili daného vzhledu karet, jak jej definuje Obrázek 4.2, bylo tˇreba upravit informaˇcní cˇ ást ikony. Byl zvˇetšen text názvu aplikace a vynechán badge image a dodateˇcný informaˇcní text, které pro zobrazení nainstalovaných aplikací platformy M6 v kartách nemˇely využití. 1. Aplikace SledovaniTv.cz pˇredstavuje službu IPTV neboli televizní vysílání pˇres internetový protokol. Principem je šíˇrení vysílání digitální televize prostˇrednictvím IP protokolu pˇres poˇcítaˇcové sítˇe. Aplikace umožnuje ˇ uživateli pozastavit obraz, nahrát si urˇcitý poˇrad nebo film, uložit na server a pozdˇeji si jej pˇrehrát. Umožnuje ˇ uživateli také napˇríklad vrátit se pˇri sledování v cˇ ase zpˇet nebo se naopak pˇri sledování záznamu posunout dopˇredu.
39
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.1: Hlavní obrazovka launcheru platformy M6 s vyznaˇcenými prvky uživatelského rozhraní.
Obrázek 4.2: Karta rˇ ady s doporuˇceným obsahem na platformˇe Android TV - vlevo, karta rˇ ady aplikací uživatelského rozhraní vyvinutého launcheru pro platformu M6 - vpravo.
40
4. T VORBA APLIKACE LAUNCHERU Dalším duležitým ˚ prvkem hlavní obrazovky je trojice tlaˇcítek v levé spodní cˇ ásti obrazovky. První tlaˇcítko zleva pˇresmˇeruje uživatele na obrazovku zobrazující všechny nainstalované uživatelské aplikace, viz následující Kapitola 4.1.2. Druhé tlaˇcítko zleva pˇresmˇeruje uživatele na obrazovku s nastavením (viz Kapitola 4.1.3), kde uživatel muže ˚ ovlivnit vzhled launcheru, jazyk launcheru, upravit šíˇrku obrazu, aj. Poslední z trojice tlaˇcítek uživateli formou dialogového okna2 zobrazí nejnovˇejší zprávu od jeho poskytovatele internetu. V pravém spodním rohu hlavní obrazovky jsou zobrazeny stavové informace. První rˇ ádek zobrazuje aktuální verzi firmware nainstalovaného v set-top boxu. Druhý rˇ ádek zobrazuje IP adresu zaˇrízení a ikonu indikující aktuální stav internetového pˇripojení. Ikona muže ˚ nabývat tˇrí barev: zelená, žlutá nebo cˇ ervená. Podrobnˇeji bude ukazatel pˇripojení k internetu popsán v Kapitole 4.2.5. V pravém horním rohu se vˇetším písmem zobrazuje aktuální cˇ as. Je použit 24-hodinový formát cˇ asu se zobrazením hodin a minut, pˇriˇcemž se cˇ as každou minutu aktualizuje na základˇe intentu vyslaného Android systémem.
4.1.2 Obrazovka s aplikacemi Další obrazovkou prostˇredí launcheru je obrazovka zobrazující seznam všech nainstalovaných uživatelských aplikací. Do tohoto seznamu nejsou zahrnuty aplikace systémové a ty, které nemá uživatel oprávnˇení spouštˇet. Prvky této obrazovky jsou znázornˇeny na Obrázku 4.3. Pˇri pˇrechodu na tuto obrazovku je vždy ikona první aplikace zvýraznˇena, tzn. má focus. Mezi aplikacemi lze tedy jednoduše pˇrecházet, spouštˇet je anebo je pˇridávat na hlavní obrazovku do rˇ ady karet s oblíbenými aplikacemi. Pokud si uživatel nainstaluje do set-top boxu novou aplikaci, automaticky se mu zobrazí právˇe na tomto místˇe. Poˇcet aplikací na jednom rˇ ádku je pevnˇe daný 7, pˇriˇcemž rˇ ádku˚ muže ˚ být neomezenˇe mnoho. V pˇrípadˇe, že je rˇ ádku˚ více než je možné na obrazovce zobrazit, je uživateli zobrazena postranní lišta (tzv. scrollbar) indikující, v jaké úrovni seznamu se uživatel momentálnˇe nachází.
2. Komponenta Dialog pˇredstavuje v Android aplikacích malé informaˇcní okno, které nevyplnuje ˇ celou obrazovku a které po uživateli požaduje rozhodnutí nebo zadání textu.
41
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.3: Obrazovka zobrazující všechny nainstalované uživatelské aplikace platformy M6. 4.1.3 Obrazovka nastavení Obrazovka s nastavením uživateli nabízí nˇekolik tlaˇcítek pro úpravu nastavení launcheru nebo celé platformy, viz Obrázek 4.4. Mezi jednotlivými tlacˇ ítky se muže ˚ uživatel viditelnˇe pohybovat. Tlaˇcítko nastavení šíˇrky obrazu odkazuje do aplikace, pomocí níž si muže ˚ uživatel upravit šíˇrku a výšku obrazu. Tato aplikace je souˇcástí firmware dodaného spoleˇcností Zoomtak. Tlaˇcítko nastavení jazyka uživateli zobrazí dialogové okno s nabídkou volby cˇ eského nebo slovenského jazyka. Tlaˇcítko pro opˇetovné spárování zaˇrízení vymaže uživatelský úˇcet (pokud existuje) a vyvolá aplikaci pro opˇetovné propojení zaˇrízení set-top boxu s uživatelským úˇctem. Tlaˇcítko pro aktualizaci firmware platformy set-top boxu je zobrazeno s cˇ erveným textem „Aktualizujte set-top box“, pokud byla vydána nová aktualizace, v opaˇcném pˇrípadˇe se zobrazí text „Aktualizace“ s bílou barvou textu. Tlacˇ ítko uživatele pˇresmˇeruje do aplikace pro aktualizaci firmware. Tlaˇcítko nastavení pozadí uživateli zobrazí dialogové okno s nabídkou pˇeti barevných schémat launcheru. Hlavní obrazovka ve všech pˇeti barevných schématech je zobrazena v Pˇríloze 11. Posledním tlaˇcítkem je nastavení sys42
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.4: Obrazovka zobrazující podporovaná nastavení platformy settop boxu M6. tému, které uživatele pˇresmˇeruje do standardního Android systémového nastavení. Obrazovky aplikací pro nastavení šíˇrky obrazu, opˇetovné spárování a aktualizace jsou ukázány v Pˇríloze 10. 4.1.4 Obrazovka pruvodce ˚ prvotním nastavením Speciální obrazovkou je obrazovka prvního spuštˇení, která je zobrazena pouze pˇri prvním zapnutí zaˇrízení a která uživateli zobrazí pruvodce ˚ prvotním nastavením set-top boxu, viz Obrázek 4.5. Obrazovka pruvodce ˚ se podobnˇe jako pˇredchozí popsaná obrazovka s nastavením skládá z nˇekolika tlaˇcítek, jež upravují: jazyk prostˇredí, nastavení šíˇrky obrazu, pˇripojení k internetu a propojení zaˇrízení set-top boxu s uživatelským úˇctem. Tyto cˇ tyˇri tlaˇcítka pˇredstavují minimum nastavení, které musí uživatel provést pˇred prvním spuštˇením launcheru. Proto, aby byla práce s pruvodcem ˚ srozumitelná, jsou vedle tlaˇcítek zobrazeny ikony indikující, zda již uživatel dané nastavení provedl. Pruvodce ˚ automaticky zobrazí nastavení jazyka jako provedené, protože výchozím jazykem prostˇredí je cˇ eština. Uživatel však jazyk muže ˚ pˇrenastavit na slovenštinu. Podobnˇe, pokud je zaˇrízení již pˇripojeno k internetu pomocí sít’ového kabelu, je nastavení pˇripojení zobrazeno jako provedené, 43
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.5: Obrazovka pruvodce ˚ prvotním nastavením platformy set-top boxu M6 a dialogové okno informující uživatele o nutnosti pˇripojení set-top boxu k internetu.
pokud není, je uživateli zobrazeno dialogové okno informující o nutnosti nastavení pˇripojení, viz Obrázek 4.5 dole. Pruvodce ˚ po stisku tlaˇcítka OK v dialogovém oknˇe opˇetovnˇe otestuje pˇripojení a opakovanˇe se zobrazí, jestli zaˇrízení stále není pˇripojeno k internetu. Dialogové okno také umožní uživateli pˇripojit set-top box pomocí Wi-Fi sítˇe. Tlaˇcítko nastavit Wi-Fi sít pˇresmˇeruje uživatele do systémového nastavení pˇripojení. Pˇripojení k internetu je nutné pˇri prvním spuštˇení launcheru, protože umožní aktualizaci databáze ikon rˇ ady oblíbených aplikací ve vyšším rozlišení a další potˇrebné úkony, které budou popsány v následujících podkapitolách. Tlaˇcítko pokraˇcovat pro ukonˇcení pruvodce ˚ se aktivuje, jakmile uživatel provede veškerá nastavení. Pokud uživatel nastaví nˇekterou položku jinak, 44
4. T VORBA APLIKACE LAUNCHERU než puvodnˇ ˚ e zamýšlel, muže ˚ ji pozdˇeji pˇrenastavit na obrazovce s nastavením popsaném v pˇredchozí kapitole.
4.2
Ovládání rozhraní launcheru
Pˇredchozí kapitoly pojednávají o uživatelském rozhraní jednotlivých obrazovek launcheru, tato kapitola se naopak zamˇerˇ í na popis ovládání jednotlivých prvku˚ obrazovek a na interakci tˇechto prvku˚ s uživatelem. 4.2.1 Zvýraznˇení ovládacích prvku˚ Focus neboli zvýraznˇení urˇcitého prvku je duležitým ˚ mechanismem všech uživatelských rozhraní, obzvláštˇe tˇech, která jsou ovládána dálkovým ovladaˇcem. Podle návrhových pravidel platformy Android TV by mˇel být vždy nˇekterý prvek zvýraznˇený, tak aby uživatel pˇresnˇe vˇedˇel, na kterém prvku se focus momentálnˇe nachází. Navržený launcher platformy M6 tuto skuteˇcnost zohlednuje ˇ a na každé obrazovce je vždy nˇekterý prvek zvýraznˇen. Na hlavní obrazovce v rˇ adˇe karet s aplikacemi se zvýraznˇená karta zvˇetší cca o 10% a pozadí karty se obarví svˇetlejší barvou. V pˇrípadˇe trojice tlaˇcítek v levém spodním rohu se zvýraznˇené tlaˇcítko ohraniˇcí a vznikne tak kolem nˇej viditelný rámeˇcek. Podobnˇe je tomu v pˇrípadˇe obrazovky se všemi uživatelskými aplikacemi, kde se ikony spoleˇcnˇe s názvy aplikací také ohraniˇcují viditelným rámeˇckem. Na obrazovce s nastavením a na obrazovce pruvodce ˚ prvotním nastavením je tlaˇcítko zvýraznˇeno zesvˇetlením jeho pozadí. Opustí-li uživatel nˇekterou z obrazovek launcheru a pozdˇeji se na ni vrátí, zvýraznˇení zustane ˚ stejné. 4.2.2 Zvuková odezva ovládacích prvku˚ Zvuky jsou další možností TV aplikací jak informovat uživatele o urˇcité akci. Každý pˇresun zvýraznˇení na jiný prvek je v launcheru doprovázen krátkým zvukovým signálem, tak aby bylo zˇrejmé, že k posunu opravdu došlo. U dálkových ovládání na principu pˇrenosu pomocí Bluetooth je pravdˇepodobnost pˇrenosu informací o provedené akci vˇetší než napˇríklad v pˇrípadˇe IR dálkového ovládání platformy M6. Zvukové upozornˇení je také využito pˇri zapnutí zaˇrízení set-top boxu, kdy je po startu zaˇrízení uživateli signalizováno spuštˇení launcheru. Dále je zvukem zvýraznˇena aktivace pˇresouvacího módu karty s aplikací, kdy uživatel muže ˚ pˇresunout kartu na novou pozici, viz následující Kapitola 4.2.4. 45
4. T VORBA APLIKACE LAUNCHERU 4.2.3 Dálkové ovládání Hardwarové specifikace IR dálkového ovládání platformy M6 byly rozebrány v Kapitole 3.1. Tato kapitola se zamˇerˇ í na popsání užití vybraných tlaˇcítek pro ovládání launcheru. Následuje výˇcet a popis jednotlivých tlaˇcítek: •
zapnutí/vypnutí zaˇrízení - vypnutí uvede zaˇrízení do tzv. stand-by režimu, tzn. je vypnuta obrazovka a zaˇrízení je odpojeno od sítˇe internetu, naopak pˇri zapnutí je obrazovka aktivována a v nˇekolika okamžicích dojde k pˇripojení k síti internetu,
•
zapnutí/vypnutí zvuku - standardní zapnutí nebo vypnutí veškerých zvuku˚ zaˇrízení,
•
barevná tlaˇcítka ovládání launcheru - cˇ ervené tlaˇcítko pˇri focusu v rˇ adˇe karet na hlavní obrazovce umožní uživateli smazat vybranou kartu s aplikací, žluté tlaˇcítko v rˇ adˇe karet aktivuje pˇresouvací mód karty a uživatel ji tak muže ˚ posunout na novou pozici v rˇ adˇe karet. Na obrazovce se všemi nainstalovanými aplikacemi žluté tlacˇ ítko plní funkci pˇridání vybrané aplikace do rˇ ady karet s oblíbenými aplikacemi a modré tlaˇcítko na hlavní obrazovce zobrazí pˇrekryvnou nápovˇedu,
•
systémové nastavení - spustí standardní systémové Android nastavení,
•
tlaˇcítko domu˚ - pˇresmˇeruje uživatele na hlavní obrazovku launcheru z jakékoliv aplikace nebo z obrazovky všech nainstalovaných aplikací a obrazovky nastavení,
•
tlaˇcítko zpˇet - funguje ve všech aplikacích (vˇcetnˇe launcheru) stejným zpusobem, ˚ pˇresmˇeruje uživatele na pˇredchozí obrazovku,
•
D-pad - tlaˇcítka nahoru/dolu/doleva/doprava ˚ umožnují ˇ uživateli navigaci mezi ovládacími prvky dané obrazovky,
•
tlaˇcítko OK - pˇri krátkém stisknutí slouží ke standardnímu potvrzení nebo spuštˇení vybrané akce (napˇr. v rˇ adˇe karet spustí aplikaci na vybrané kartˇe), pˇri dlouhém stisknutí v rˇ adˇe karet (tzn. stisknutí a podržení po dobu asponˇ 1 vteˇriny) uvede stejnˇe jako žluté tlaˇcítko kartu do pˇresouvacího módu, na obrazovce se všemi aplikacemi tlacˇ ítko OK spustí vybranou aplikaci nebo pˇri dlouhém stisknutí opˇet 46
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.6: Kurzor dálkového ovládání platformy set-top boxu M6. podobnˇe jako žluté tlaˇcítko pˇresune vybranou aplikaci mezi karty s oblíbenými aplikacemi, •
zapnutí/vypnutí kurzoru - zobrazí na kterékoliv obrazovce kurzor, jež lze ovládat pomocí D-padu a potvrdit akci pomocí tlaˇcítka OK, viz Obrázek 4.6 (kurzor muže ˚ být užiteˇcný v aplikacích, které nejsou zcela optimalizované pro ovládání pomocí dálkového ovladaˇce),
•
ovládání hlasitosti - standardní zesílení nebo zeslabení všech zvuku˚ zaˇrízení,
•
qwerty klávesnice - firmware set-top boxu poskytuje pˇri navigaci na políˇcko se zadáním uživatelského vstupu softwarovou klávesnici, pro uživatele ale muže ˚ být zadávání textu pomocí hardwarové klávesnice na dálkovém ovládání pohodlnˇejší.
ˇ 4.2.4 Rada karet s oblíbenými aplikacemi ˇ Rada karet pˇredstavuje stˇežejní prvek hlavní obrazovky. Uživatel má v této rˇ adˇe seskupeny aplikace, které jsou pro nˇej nejduležitˇ ˚ ejší. Do rˇ ady si muže ˚ aplikace pˇridávat, odebírat je nebo je pˇreskládávat dle svých preferencí. Mezi kartami s aplikacemi se uživatel pohybuje pomocí tlaˇcítek D-padu doleva nebo doprava a spouští aplikace tlaˇcítkem OK. Pˇridávání Pokud si chce uživatel pˇridat aplikaci do rˇ ady karet na hlavní obrazovce, stiskne a podrží tlaˇcítko OK nebo stiskne žluté tlaˇcítko na vybrané ikonˇe aplikace v obrazovce se všemi nainstalovanými aplikacemi. Aplikace se automaticky pˇridá do rˇ ady karet na první pozici a uživatel je pˇresmˇerován na hlavní obrazovku. Odebírání Naopak pokud chce uživatel nˇekterou aplikaci odebrat z rˇ ady karet, stiskne cˇ ervené tlaˇcítko, následnˇe je uživatel formou dialogového okna požádán o potvrzení odebrání, viz Obrázek 4.7. Pokud akci potvrdí, karta s aplikací je odebrána a rˇ ada karet se plynulou animací pˇreskupí. 47
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.7: Dialogové okno odebrání karty s aplikací z rˇ ady karet s oblíbenými aplikacemi na hlavní obrazovce.
Pˇresouvání Uživatel nemusí být spokojený s poˇradím karet (napˇríklad po pˇridání nové aplikace na hlavní obrazovku), proto je mu poskytnut mechanismus pˇresouvání karet, kdy pomocí stisknutí a podržení tlaˇcítka OK nebo stisknutím žlutého tlaˇcítka uvede kartu s aplikací do pˇresouvacího módu a muže ˚ ji tak posunout na novou pozici, viz Obrázek 4.8. V pˇrípadˇe, že je karta v pˇresouvacím módu a uživatel si to rozmyslí, stiskem tlaˇcítka zpˇet kartu vrátí na puvodní ˚ místo nebo naopak stiskem tlaˇcítkem OK potvrdí novou pozici karty. Aktivace pˇresouvacího módu je uživateli znázornˇena zbarvením pozadí karty bílou barvou a zvukovým upozornˇením. Ikony aplikací jsou souˇcástí instalací aplikací v zaˇrízeních. Tyto ikony však mají vˇetšinou bohužel nízké rozlišení (48 x 48 dip) [51]. Ikony v nízkém rozlišení jsou použity na obrazovce se všemi nainstalovanými aplikacemi, avšak v rˇ adˇe karet oblíbených aplikací na hlavní obrazovce by takové ikony pusobily ˚ rušivým dojmem. Systém Android totiž pˇri vykreslení menších obrázku˚ do vˇetších view prvku˚ layoutu provádí tzv. scale (roztažení obrázku). Byl proto pro úˇcely této práce vyvinut mechanismus, jež pˇri prvním spuštˇení launcheru zajistí získání URL odkazu˚ na ikony všech nainstalovaných aplikací ve vysokém rozlišení, které jsou dostupné v internetovém obchodˇe Google Play. Získané URL odkazy jsou následnˇe uloženy 48
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.8: Karta s aplikací Google Earth v pˇresouvacím módu. do databáze a použity komponentou Presenter tehdy, když dochází k vykreslení karty s aplikací. Získáváme tak ikony v rozlišení 512 x 512 dip, které jsou pro displeje velikosti televizních obrazovek mnohem vhodnˇejší. Tento mechanismus je podrobnˇeji popsán v následující Kapitole 5. Obrázek 4.9 srovnává ikony rˇ ady karet v puvodním ˚ rozlišení (pˇri prvním spuštˇení než došlo k aktualizaci databáze s URL odkazy na ikony v lepším rozlišení a jejich vykreslení) s ikonami již ve vyšším rozlišení. 4.2.5 Pˇripojení k internetu Platforma set-top boxu M6 je primárnˇe urˇcena pro pˇríjímání a zobrazování dat z internetu, proto je pro launcher nezbytným úkolem kontrolovat pˇripojení k internetu a vhodným zpusobem ˚ o jeho stavu informovat uživatele. Jak již bylo zmínˇeno, ikona ukazatele pˇripojení, nacházející se v pravém spodním rohu, muže ˚ nabývat tˇrí barev: zelená, žlutá nebo cˇ ervená. Pˇriˇcemž zelená reprezentuje stav, kdy je set-top box pˇripojen do místní sítˇe pomocí sít’ového kabelu nebo pomocí Wi-Fi modulu a souˇcasnˇe je daná sít’ pˇripojena k internetu, tzn. set-top box muže ˚ komunikovat se serverem. Žlutá reprezentuje stav, kdy je set-top box pˇripojen do místní sítˇe, ale není pˇripojen k internetu, to nastane v pˇrípadˇe výpadku služeb internetového poskytovaˇ tele, výpadku serveru, chybˇe pˇrípojky nebo jiné ménˇe cˇ asté chybˇe. Cervená 49
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.9: Porovnání ikon aplikací ve standardním a ve vysokém rozlišení. Pro porovnání jsou relevantní pouze prostˇrední tˇri aplikace. Aplikace Obchod Google Play je specifická v tom, že má ikonu v lepším rozlišení dodanou z lokálního úložištˇe (stejnˇe tak aplikace systémového nastavení). barva pak reprezentuje stav, kdy došlo k odpojení zaˇrízení od místní sítˇe. Klíˇcovou vlastností launcher je, že dokáže s uživatelem interagovat i v pˇrípadˇe, že není pˇripojen k internetu, tzn. veškeré funkce launcheru jsou dostupné i v off-line režimu. Napˇríklad po pˇridání aplikace do rˇ ady karet s oblíbenými aplikacemi se odloží získání ikony aplikace v lepším rozlišení do doby, než bude set-top box opˇet pˇripojen k internetu. 4.2.6 Zprávy Souˇcástí hlavní obrazovky je tlaˇcítko nových zpráv (notifikací). Launcher byl navržen tak, aby umožnil informovat uživatele formou notifikací pˇrímo na hlavní obrazovce launcheru. Pomocí systému zpráv muže ˚ zˇrizovatel služby informovat uživatele o novinkách v poskytovaných službách, aj. Informace o aktuální novince launcher získá ze serveru spoleˇcnosti, která tuto službu zˇrizuje a kde jsou novinky umíst’ovány. Ikona tlaˇcítka zpráv muže ˚ nabývat dvou podob. Pokud uživatel obdržel novou zprávu je ikona tlaˇcítka vykreslena s vykˇriˇcníkem a zustane ˚ tak, dokud si uživatel zprávu nepˇreˇcte, viz Obrázek 4.10 dole. Stiskem tlaˇcítka 50
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.10: Dialogové okno nové zprávy od poskytovatele pˇripojení (vˇcetnˇe textu zprávy a data vydání) - nahoˇre, ikona tlaˇcítka zpráv v obou variantách (nepˇreˇctená a pˇreˇctená) - dole. zpráv se uživateli zobrazí dialogové okno, které obsahuje text novinky. Soucˇ asnˇe okno zobrazí tlaˇcítko pro návrat na hlavní obrazovku nebo v pˇrípadˇe, že novinka obsahuje URL odkaz na podrobnˇejší informace o novince, také tlaˇcítko pro pˇrechod na danou webovou stránku (viz Obrázek 4.10 nahoˇre). 4.2.7 Logo Launcher umožnuje ˇ zobrazit uživateli na hlavní obrazovce vedle tlaˇcítka se zprávami logo, viz Obrázek 4.11. Logo má pˇredepsané rozmˇery - 640 x 480 dip. Logo je staženo ze serveru a zobrazeno na hlavní obrazovce pouze v pˇrípadˇe, že bylo na sever umístˇeno, v opaˇcném pˇrípadˇe se na hlavní obrazovce logo nezobrazuje. 4.2.8 Nastavení pozadí a jazyka Uživatel má možnost uzpusobit ˚ vzhled launcheru nastavením jazyka nebo barevného schéma aplikace. Jak již bylo zmínˇeno, zmˇenu tˇechto nastavení 51
4. T VORBA APLIKACE LAUNCHERU
Obrázek 4.11: Ukázka zobrazení vlastního loga na hlavní obrazovce launcheru platformy M6.
Obrázek 4.12: Dialogová okna nastavení barevného schéma launcheru nahoˇre a nastavení jazyka dole. uživatel provádí na obrazovce s nastavením launcheru pomocí patˇriˇcných tlaˇcítek. Pˇri nastavení pozadí se uživateli zobrazí upravené dialogové okno, jež jako tlaˇcítka obsahuje jednotlivá pozadí launcheru. Aktuálnˇe použité barevné schéma je zvýraznˇeno modrým rámeˇckem. Tlaˇcítkem OK na dálkovém ovladaˇci uživatel vybere jedno ze schémat a launcher je následnˇe pˇrekreslen. Pˇri výbˇeru jazyka je situace podobná, aktuálnˇe zvolený jazyk je opˇet modˇre zvýraznˇen, po potvrzení výbˇeru tlaˇcítkem OK jsou v aplikaci pˇrepsány texty všech obrazovek do vybraného jazyka. Dialogové okno s výbˇerem jazyka bylo také upraveno, tak že neobsahuje žádný informaˇcní text, ale pouze dvˇe tlaˇcítka. Obˇe dialogová okna jsou zobrazeny na Obrázku 4.12. 4.2.9 Nápovˇeda Uživatelská nápovˇeda je duležitým ˚ prvkem návrhu aplikace a umožní uživateli rychleji pochopit ovládání dané aplikace [52]. I když byly použity 52
4. T VORBA APLIKACE LAUNCHERU pˇrevážnˇe standardní komponenty (vyjma rˇ ady karet s oblíbenými aplikacemi) a uživatelské rozhraní bylo navrženo pro jednoduché ovládání, je vhodné umožnit uživateli zobrazit nápovˇedu, která struˇcnˇe popisuje jednotlivé prvky uživatelského rozhraní obrazovky a jejich ovládání. Byla tedy vytvoˇrena pˇrekryvná nápovˇeda (tzv. splash screen) hlavní obrazovky, viz Obrázek 4.13. Nápovˇeda je zobrazena a opˇet skryta stisknutím modrého tlaˇcítka na dálkovém ovládání. Obrázek nápovˇedy se zobrazí nad layoutem hlavní obrazovky, pˇriˇcemž má nápovˇeda transparentní pozadí a tudíž nám umožní vidˇet i prvky uživatelského rozhraní pod ní. Bílým textem jsou pak popsány jednotlivé prvky hlavní obrazovky.
Obrázek 4.13: Hlavní obrazovka s pˇrekryvnou nápovˇedou launcheru platformy M6.
53
5 Implementace aplikace launcheru V pˇredchozí kapitole byl popsán vzhled jednotlivých obrazovek a ovládání uživatelského rozhraní vytvoˇreného launcheru. Tato kapitola se vˇenuje implementaci nového launcheru pro upravený firmware set-top boxu. ˚ Launcher je jedním z hlavních prvku, ˚ které musely být ve firmware upraveny jednak proto, aby byl nový firmware vhodný pro zobrazení na velkých televizních obrazovkách, ale také proto, aby byl jednoduše ovladatelný pomocí dálkového ovladaˇce. Launcher byl implementován ve vývojovém prostˇredí Android Studio v0.9.9 pro zaˇrízení s SDK verzí minimálnˇe 17, jímž disponují všechny zmínˇené set-top boxy. Kromˇe standardních Android nástroju˚ byly využity následující: •
podpurná ˚ knihovna Leanback (popsaná v Kapitole 2.3.2) pro vytvorˇ ení rˇ ady karet s oblíbenými aplikacemi,
•
knihovna Picasso pro stažení a vykreslení ikony aplikace v lepším rozlišení a také pro vykreslení loga na hlavní obrazovce,
•
knihovna Jsoup pro získání url odkazu (na ikonu aplikace v lepším rozlišení) rozborem zdrojového kódu webové stránky,
•
knihovna Okhttp jako http klient pro zasílání požadavku˚ na server,
•
knihovna Gson pro serializaci a deserializaci objektu, ˚
•
knihovna Timber pro správu a konfiguraci logovací výpisu, ˚ jež nám umožní všechny výpisy v závˇereˇcné fázi projektu deaktivovat,
•
a mechanismus paralelního spouštˇení více vláken souˇcasnˇe (Parallel AsyncTask, viz cˇ lánek [54]), využití Fragmentu˚ pro reakci na získaný výsledek z požadavku˚ na server (viz cˇ lánek [53]) nebo použití upraveného vzhledu dialogových oken.
V následujících podkapitolách bude struˇcnˇe popsána struktura projektu a budou pˇredstaveny vybrané komponenty projektu.
5.1
Struktura projektu
Jednotlivé tˇrídy projektu jsou rozˇclenˇeny do balíˇcku˚ (tzv. packages) dle Obrázku 5.1 (obrázek nepokrývá celou strukturu projektu, nezobrazuje napˇríklad složku s tzv. resource soubory). 54
5. I MPLEMENTACE APLIKACE LAUNCHERU
Obrázek 5.1: Struktura balíˇcku˚ a tˇríd projektu launcheru. Projekt se skládá ze sedmi balíˇcku. ˚ Balíˇcek Activity obsahuje tˇrídy aktivit, jež jsou základem každého Android projektu. BaseActivity je spuštˇena jako první vždy po startu launcheru a rozhoduje, zdali je launcher spuštˇen poprvé (v tom pˇrípadˇe spustí aktivitu FirstLaunchGuideActivity) nebo se jedná o další spuštˇení launcheru a spustí aktivitu MainActivity, které pˇredstavují obrazovku pruvodce ˚ prvotním spuštˇením launcheru a hlavní obrazovku. AllAppGridViewActivity a GroupSettingsActivity pˇredstavují obrazovky se všemi uživatelskými aplikacemi a s uživatelským nastavením, které jsou popsané v pˇredchozí kapitole. Balíˇcek Adapter obsahuje tˇrídu AppAdapter, jež udržuje objekty všech aplikací a poskytuje je pˇri vykreslení v obrazovce s uživatelskými aplikacemi. Balíˇcek Database obsahuje 55
5. I MPLEMENTACE APLIKACE LAUNCHERU tˇrídy, které definují tˇri tabulky implementované SQLite relaˇcní databáze a tˇrídy pro práci s nimi. Launcher tedy obsahuje následující tˇri databáze: •
databázi oblíbených aplikací z rˇ ady karet,
•
databázi url odkazu˚ na ikony aplikací v lepším rozlišení a
•
databázi zpráv ze serveru.
Balíˇcek Fragments obsahuje další velmi duležité ˚ prvky Android aplikací - tzv. fragmenty. MainFragment definuje chování nˇekterých prvku˚ hlavní obrazovky, jako je napˇríklad rˇ ada karet. DeviceLoginFragment a GetLauncherDataFragment zastupují práci se serverem a CustomDialogFragment umožnuje ˇ vytvoˇrit speciální upravené dialogové okno pro výbˇer jazyka. V balíˇcku POJO 1 jsou definovány tˇrídy standardních java objektu: ˚ •
App - objekt aplikace z rˇ ady karet nebo obrazovky s uživatelskými aplikacemi (atributy: name, pkg, app_index, icon),
•
Icon - objekt ikony aplikace (atributy: appPackage, urlToHdIcon),
•
UserDevice - objekt pˇredstavující informace o zaˇrízení set-top boxu, informace jsou získány z uživatelského úˇctu uloženého do systému po prvním spárování zaˇrízení (viz prostˇrední obrázek v Pˇríloze 10). Informace zahrnují položky deviceId a password a slouží komponentˇe DeviceLoginFragment pro autentizaci zaˇrízení na serveru a získání sessionId pro následnou komunikaci se serverem,
•
Data - objekt pˇredstavující informace o uživateli získané ze serveru pomocí komponenty GetLauncherDataFragment. Zahrnuje NetworkInfo a PartnerMessage, tyto informace jsou v pamˇeti zaˇrízení uchovány maximálnˇe 5 hodin, poté jsou aktualizovány,
•
PartnerMessage - je souˇcástí informací o uživateli získaných ze serveru, pˇredstavuje zprávu urˇcenou pro uživatele. Souˇcástí je text zprávy, cˇ as vydání zprávy a nˇekdy také url odkaz na podrobnˇejší informace o novince,
•
NetworkInfo - je druhou souˇcástí informací získaných ze serveru a obsahuje informace o zˇrizovateli služby.
1. POJO zkratka (z angl. plain old java object) zastupuje obyˇcejný java objekt, zkratka se používá ke zduraznˇ ˚ ení, že se jedná o jednoduchý objekt pouze s atributy a metodami k získání a nastavení tˇechto atributu. ˚
56
5. I MPLEMENTACE APLIKACE LAUNCHERU Balíˇcek Presenter obsahuje jedinou tˇrídu - CardPresenter, jež pˇredstavuje komponentu presenteru popsanou v Kapitole 2.3.2 o knihovnˇe Leanback. Obsahuje tedy metody pro práci s kartami hlavní obrazovky, jako jsou onCreateViewHolder nebo onBindViewHolder. Posledním balíˇckem struktury projektu je Util. Tento balíˇcek obsahuje pomocné tˇrídy projektu. Komponenta OnBootBroadcastReceiver zajišt’uje odchycení systémové zprávy (intent ) o spuštˇení set-top boxu. Po startu settop boxu spouštíme akce pˇrihlášení zaˇrízení k uživatelskému úˇctu na serveru a nastavení systémového cˇ asu set-top boxu dle serveru. Komponenta OnUpdateBroadcastReceiver odchytává systémovou zprávu o dostupnosti aktualizace firmware set-top boxu a komponenta OnTimeSetBroadcastReceiver zajišt’uje akce spojené s nastavením systémového cˇ asu set-top boxu. InternetConnectionObservable je souˇcástí mechanismu pro zjišt’ování aktuálního stavu pˇripojení launcheru k síti internetu, blíže bude tento mechanismus pˇredstaven v Podkapitole 5.2.3. GetUrlToHRIconsAsyncTask, stejnˇe jako další AsyncTask komponenty, využívá principu paralelního spouštˇení více vláken souˇcasnˇe (komponenta ParallelAsyncTask ). Slouží pro získání ikony aplikace v lepším rozlišení. Princip získávání ikon bude popsán v Podkapitole 5.2.2. GetSystemTimeAsyncTask slouží ke zjišt’ování aktuálního cˇ asu ze serveru a pˇrenastavení systémového cˇ asu set-top boxu. AccountHelper zajišt’uje získání uživatelského úˇctu a vrací jej jako výsledek v návratové hodnotˇe. CustomArrayObjectAdapter nahrazuje komponentu ArrayObjectAdapter, jež je souˇcástí knihovny Leanback a jejímž úˇcelem je udržovat objekty rˇ ady karet s oblíbenými aplikacemi a poskytovat nad nimi patˇriˇcné operace (pˇridávání, mazání, aj.). Protože ArrayObjectAdapter nepodporuje operaci pˇresouvání karet v rˇ adˇe, byla vytvoˇrena vlastní komponenta jež rozšiˇruje vlastnosti ArrayObjectAdapteru o operaci pˇresouvání (v naší implementaci nazvanou swap). Více o této komponentˇe bude zmínˇeno v Podkapitole 5.2.1. Komponenta SystemProperties nám umožnuje ˇ získat verzi firmware ze systémových promˇenných pro zobrazení na hlavní obrazovce. A Utils pˇredstavuje komponentu, která nám poskytuje metody pro získání seznamu nainstalovaných aplikací, test nutnosti aktualizace databáze ikon, test prvního spuštˇení launcheru, získání IP adresy zaˇrízení a kontrolu dostupnosti aktualizace firmware.
5.2
Popis vybraných komponent
V této kapitole bude cˇ tenáˇri pˇredstavena implementace tˇrí duležitých ˚ komponent launcheru: rˇ ada karet s oblíbenými aplikacemi, mechanismus zís57
5. I MPLEMENTACE APLIKACE LAUNCHERU kávání ikon aplikací v lepším rozlišení a mechanismus kontroly pˇripojení k síti internetu. ˇ 5.2.1 Rada karet Grafický návrh a ovládání rˇ ady karet s oblíbenými uživatelskými aplikacemi hlavní obrazovky byly již popsané v Kapitole 4.2.4. Zde bude popsána implementace rˇ ady karet a její další možnosti. Mechanismus rˇ ady karet nám poskytuje knihovna Leanback, jejíž integrace do projektu byla popsána v Kapitole 2.3 o tvorbˇe aplikací pro platformu Android TV. Princip rˇ ady karet je postaven na modelu Model-Presenter-View. Model je v naší implementaci zastoupen komponentou CustomArrayAdapter, jež udržuje objekty aplikací získané z databáze. Presenter je zastoupen komponentou CardPresenter, která nám umožní definovat vzhled a chování jednotlivých karet rˇ ady a View již slouží pro samotné vykreslení rˇ ady karet. Pro využití komponenty BrowseFragment z knihovny Leanback pro definici rˇ ady je nutné vytvoˇrit vlastní fragment, který dˇedí ze tˇrídy BrowseFragment, v aplikaci launcheru tuto roli zastupuje MainFragment, viz Program 5.1. V programu je nutné definovat presenter a adapter všech rˇ ad, jež jsou znázornˇeny na rˇ ádcích 7 a 12. Vzhled a chování rˇ ad lze upravovat pomocí nˇekolika pˇríkazu, ˚ kompletní seznam tˇechto pˇríkazu˚ cˇ tenáˇr nalezne v on-line dokumentaci knihovny Leanback na webové stránce [55, 56]. Na rˇ ádku 14 je definován presenter jednotlivých karet, díky kterému mužeme ˚ kompletnˇe ovlivnit vzhled a chování karet. CardPresenter bude popsán v následujícím textu. CustomArrayObjectAdapter na rˇ ádku 16 pˇredstavuje, jak už bylo zmínˇeno, rozšíˇrenou verzi standardního ArrayObjectAdapteru o metodu swap. Na rˇ ádku 22 naplníme adapter rˇ ady objekty jednotlivých aplikací, na rˇ ádku 25 pˇridáme rˇ adˇe hlaviˇcku a na rˇ ádku 27 rˇ adu pˇridáme do adapteru všech rˇ ad. Na rˇ ádku 30 pˇriˇradíme vytvoˇrený adapter všech rˇ ad (v našem pˇrípadˇe pouze jedné rˇ ady - rˇ ada karet s oblíbenými aplikacemi) komponentˇe BrowseFragment a upravíme jej tak, aby nezobrazoval levé navigaˇcní menu (ˇrádek 33), protože v naší implementaci launcheru nemáme více rˇ ad nebo nástroj vyhledávání hlasem. Posledním duležitým ˚ nastavením komponenty BrowseFragment je nastavení cˇ asu launcheru, jež je zobrazen v pravém horním rohu hlavní obrazovky. To provedeme pomocí pˇríkazu setTitle() na rˇ ádku 40.
58
5. I MPLEMENTACE APLIKACE LAUNCHERU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
public class MainFragment extends BrowseFragment { ... @Override public void onActivityCreated(Bundle savedInstanceState) { ... // presenter vsech rad a~nastaveni parametru rad ListRowPresenter listPresenter = new ListRowPresenter(FocusHighlight.ZOOM_FACTOR_SMALL); listPresenter.setExpandedRowHeight(256); listPresenter.enableChildRoundedCorners(true); // adapter vsech rad ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(listPresenter); // presenter karty v~rade CardPresenter cardPresenter = new CardPresenter(); // adapter konkretni rady objektu aplikaci CustomArrayObjectAdapter listRowAdapter = new CustomArrayObjectAdapter(cardPresenter); ... // ziskani nainstalovanych aplikaci ArrayList<App> list = utils.getUsersApps(mContext); // a~pridani do objektu rady aplikaci listRowAdapter.addAll(0, list); // pridani hlavicky rade a~pridani mezi ostatni rady if( listRowAdapter.size() > 0 ) { HeaderItem header = new HeaderItem(rowsAdapter.size() - 1, getString(R.string.row_name), null); rowsAdapter.add(new ListRow(header, listRowAdapter)); } // nastaveni adapteru vsech rad komponente BrowseFragment setAdapter(rowsAdapter); ... // deaktivace leveho navigacniho menu setHeadersState(HEADERS_DISABLED); // deaktivace specialniho chovani tlacitka zpet setHeadersTransitionOnBackEnabled(true); // umozni menit velikost karet enableRowScaling(true); ... // nastaveni casu setTitle(currentTime); } }
Program 5.1: Ukázka cˇ ásti zdrojového kódu komponenty MainFragment.
59
5. I MPLEMENTACE APLIKACE LAUNCHERU Operace komponenty CustomArrayObjectAdapter pracují se strukturou ArrayList. Pˇridaná operace swap(originPlaced, newPlaced) provede smazání objektu aplikace na pozici, kde chceme vybraný objekt pˇresunout a pˇridá jej na pozici odkud jsme pˇresunuli nový objekt. Principem metody swap je tedy prohození pozic vedlejších dvou objektu˚ a zavolání metody pro oznámení nového poˇradí objektu˚ v adapteru komponentˇe presenteru. Zdrojový kód operace swap je znázornˇen v Programu 5.2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// metoda pro prohozeni poradi dvou objektu v~seznamu public void swap(Object originPlaced, Object newPlaced) { int indexOrigin = indexOf(originPlaced); int indexNew = indexOf(newPlaced); removeSwap(originPlaced); addSwap(indexNew, originPlaced); notifyArrayItemRangeChanged(0, size()); } ... // metoda smazeni prvku seznamu public boolean removeSwap(Object item) { int index = mItems.indexOf(item); if (index >= 0) { mItems.remove(index); } return index >= 0; } ... // metoda pridani prvku na danou pozici v~seznamu public void addSwap(int index, Object item) { mItems.add(index, item); } ...
Program 5.2: Ukázka cˇ ásti zdrojového kódu komponenty CustomArrayObjectAdapter. Komponenta CardPresenter dˇedí ze tˇrídy Presenter. Její souˇcástí je i vnorˇ ená tˇrída ViewHolder, která slouží pro ukládání všech potˇrebných informací o view prvcích (v tomto pˇrípadˇe o jednotlivých kartách) proto, abychom se vyhnuli opakovanému spouštˇení výpoˇcetnˇe nároˇcné operace findViewById(int) pro nalezení view karty vždy, kdy je to tˇreba. Tento princip nám umožní ukládat a „recyklovat“ tak karty ve ViewHolderu. V implementaci launcheru tˇrída CardPresenter dále rozšiˇruje chování metod: •
onCreateViewHolder - je provedena pˇri prvním spuštˇení aplikace, tedy pˇri vytvoˇrení komponent BrowseFragmentu. V této metodˇe definujeme jednotné vlastnosti karet, jako jsou barva pozadí, velikost textu, velikost ikony a velikosti ohraniˇcení, 60
5. I MPLEMENTACE APLIKACE LAUNCHERU •
onBindViewHolder - je provedena pro každou kartu vždy, když se daná karta objeví na obrazovce (tzn. uživatel posunul focus na kartu, která ještˇe nebyla zobrazena na obrazovce). V této metodˇe vkládáme parametry objektu aplikace do view karty (ikona aplikace a název aplikace). Souˇcasnˇe rozlišujeme mezi aplikacemi, které mají v databázi url odkaz na ikonu v lepším rozlišení nebo nemají (tzn. nejsou dostupné z obchodu Google Play).
•
onUnbindViewHolder - metoda se provede vždy, když daná karta opustí obrazovku, mužeme ˚ zde zrušit objekty ikon aplikací uložené v pamˇeti pro uvolnˇení pamˇeti,
•
onViewAttachedToWindow - tzv. okno se skládá z tolika karet, kolik se jich vejde na danou obrazovku (vˇetšinou 4-6). Tato metoda je spuštˇena vždy, když dojde k naˇctení nové skupiny karet s aplikacemi,
•
onViewDetachedFromWindow - metoda je spuštˇena, když zobrazená skupina karet (okno) opustí obrazovku.
5.2.2 Získávání ikon aplikací v lepším rozlišení Tento mechanismus v launcheru slouží pro nalezení, získání a uložení url odkazu˚ na ikony nainstalovaných aplikací set-top boxu v lepším rozlišení. Jak již bylo zmínˇeno standardní ikony aplikací, jež jsou souˇcástí instalace v zaˇrízení mají velmi nízké rozlišení (48 x 48 dip) pro zobrazení na obrazovkách dnešních televizoru. ˚ Tento mechanismus nám získá odkazy na ikony v rozlišení 512 x 512 dip, což je pˇribližnˇe 10x více. Odkazy na ikony vedou na oficiální webové stránky aplikací v on-line obchodˇe s Android aplikacemi - Google Play, což nám zajistí vždy nejaktuálnˇejší ikonu dané aplikace. Odkazy jsou ukládány do databáze. Databáze vznikne pˇri prvním spuštˇení launcheru a je vždy jednou týdnˇe aktualizovaná. Mechanismus získání ikon funguje následovnˇe: 1.
Získaní všech nainstalovaných aplikací pomocí metody getAllInstalledApps() ze tˇrídy Utils.
2.
Extrahování jmen balíˇcku˚ všech aplikací (tzv. package names), jež jsou jednoznaˇcnou identifikací aplikace a jsou také souˇcástí url odkazu na webovou stránku aplikace na portále Google Play (viz rˇ ádek 2 Programu 5.3).
3.
Sestavení url odkazu na webovou stránku aplikace na portále Google Play (ˇrádek 10). 61
5. I MPLEMENTACE APLIKACE LAUNCHERU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
4.
Zaslání požadavku na server pro získání zdrojového kódu stránky dané aplikace (ˇrádek 12).
5.
Získání hodnoty elementu cover-image (ˇrádek 27).
6.
Získání url odkazu pomocí atributu src z elementu (ˇrádek 28).
7.
Uložení url odkazu na ikonu aplikace do databáze (ˇrádek 33).
... for(int i=0; i<listOfAllInstalledApps.size(); i++) { // pole retezcu s~package names pkgNames[i] = listOfAllInstalledApps.get(i).getPkg(); } ... // iterovani pres pole packege names for (String pkg : iconPackages) { // sestaveni url na aplikaci a~ziskani obsahu stranky String url = "https://play.google.com/store/apps/details?id=" + pkg; try { d = Jsoup.connect(url) .timeout(1000*5) // 5 vterin ... .get(); } catch(IOException e) { // aplikace v~google play neexistuje // vlozime do db ikonu s~priznakem -1 Icon icon = new Icon(); icon.setAppPackage(pkg); icon.setUrlToHdIcon("-1"); iconManager.createIcon(icon); continue; } // aplikace v~google play existuje // ziskame odkaz na ikonu ze zdrojoveho kodu webove stranky Elements v=d.getElementsByAttributeValueContaining("class","cover-image") String path = v.get(0).attr("src"); // a~vlozime do db ikonu s~odkazem Icon icon = new Icon(); icon.setAppPackage(pkg); icon.setUrlToHdIcon(path); iconManager.createIcon(icon); } ...
Program 5.3: Ukázka zdrojového kódu mechanismu pro získání url odkazu. ˚ Komponenta CardPresenter v metodˇe onBindViewHolder pomocí nástroje Picasso vykreslí ikonu aplikace v kartˇe. Pokud položka databáze ikon obsahuje v parametru urlToHdIcon odkaz na na ikonu v lepším rozlišení, je tato ikona stažena a vykreslena v kartˇe, v pˇrípadˇe, že položka obsahuje v parametru hodnotu -1, je použita ikona z lokální instalace aplikace v zarˇ ízení. Speciálním pˇrípadem jsou aplikace Obchod Google Play a aplikace 62
5. I MPLEMENTACE APLIKACE LAUNCHERU systémového nastavení, jež mají ikonu v lepším rozlišení uloženou pˇrímo v lokálním úložišti set-top boxu, protože tyto aplikace jsou implicitnˇe soucˇ ástí každého systému Android a nejsou tedy v obchodˇe Google Play dostupné.
5.2.3 Zjišt’ování aktuálního stavu pˇripojení Dalším duležitým ˚ mechanismem launcheru je testování pˇripojení k síti internetu. Funkˇcnost tohoto mechanismu byla popsána v Kapitole 4.2.5. Principem jsou 2 úrovnˇe kontroly pˇripojení.
Kontrola pˇripojení k místní síti Kontrolu pˇripojení k místní síti (pomocí Wi-Fi nebo Ethernet modulu) zajišt’uje komponenta connectionBroadcastReceiver, jež je souˇcástí tˇrídy MainActivity. Tato komponenta pˇribližnˇe 2 vterˇ iny od zmˇeny stavu pˇripojení k místní síti odchytne systémovou zprávu (intent ) o zmˇenˇe a upozorní další komponenty (napˇr. pˇrekreslení barvy ikony pˇripojení na hlavní obrazovce). Pokud je launcher pˇripojen k místní síti, spustí se druhá cˇ ást kontroly - pˇripojení k síti internetu. Implementace connectionBroadcastReceiveru je znázornˇena v Programu 5.4.
Kontrola pˇripojení k internetu Kontrolu pˇripojení k síti internetu zajišt’uje komponenta InternetConnectionObservable, jež spoleˇcnˇe se tˇrídou MainActivity tvoˇrí model Observer-Observable 2 . Principem kontroly pˇripojení je zaslání požadavku na DNS server spoleˇcnosti Google (pomocí pˇríkazu runtime.exec("/system/bin/ping -c 1 8.8.8.8") ). V pˇrípadˇe získání odpovˇedi ze serveru je launcher pˇripojen k internetu, pokud odpovˇed’ serveru nezískáme, pokusíme se v následujících 5 vteˇrinách o druhý pokus a nedostaneme-li odpovˇed’ ani v tomto pˇrípadˇe, launcher není pˇripojen k internetu (je pˇripojen pouze k místní síti). Implementace komponenty InternetConnectionObservable je znázornˇena v Programu 5.5.
2. Tento model pˇredstavuje návrhový vzor Pozorovatel (z angl. Observer): mezi pozorovateli a pozorovaným objektem je vztah N:1. V pˇrípadˇe že na stranˇe pozorovaného objektu dojde ke zmˇenˇe vztahu, cˇ i výskytu nˇejaké události, upozorní na to automaticky všechny své pozorovatele. Pozorovaný objekt zná své pozorovatele, muže ˚ jich mít neomezené množství a poskytuje veˇrejné rozhraní - funkce setChanged(), notifyObservers() na stranˇe pozorovaného objektu a update() na stranˇe pozorovatelu. ˚
63
5. I MPLEMENTACE APLIKACE LAUNCHERU 1 2 3 4 5 6
BroadcastReceiver connectionBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); NetworkInfo net = connectivityManager.getActiveNetworkInfo();
7 8 9 10 11 12 13 14
if (net!=null && net.isAvailable() && net.isConnected()){ // pripojen k~mistni siti InternetConnectionObservable.InternetConnectionTask task = internetConn.new InternetConnectionTask(); task.parallelExecute(); } else { // nepripojen } ...
Program 5.4: Ukázka zdrojového kódu mechanismu pro kontrolu pˇripojení k místní síti. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
public class InternetConnectionObservable extends Observable { public class InternetConnectionTask extends ParallelAsyncTask<...> { ... @Override protected Boolean doInBackground(Void ... params) { try { // prvni pokus Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8"); int exitValue = ipProcess.waitFor(); return (exitValue == 0); } catch (InterruptedException|IOException e) { return false; } } ... @Override protected void onPostExecute(Boolean result) { // druhy pokus if ((!result) && (!secondTry)) { ... InternetConnectionTask secondTry = new InternetConnectionTask(); new Timer().schedule(new TimerTask() { @Override public void run() { secondTry.parallelExecute(); }, 5000); } else { // ani druhy pokus nevysel - informuje observer setChanged(); notifyObservers(); } } }
Program 5.5: Ukázka zdrojového kódu mechanismu pro kontrolu pˇripojení k internetu.
64
5. I MPLEMENTACE APLIKACE LAUNCHERU
5.3
Analýza výsledného launcheru
Výsledná funkcionalita launcheru (respektive celého firmware) byla testována na dvou set-top boxech Zoomtak M6 a K5 po dobu pˇribližnˇe 30 dní nepˇretržitého pˇripojení k obrazovce. Souˇcástí testování však bylo i nainstalování a ovˇerˇ ení všech implementovaných funkcionalit i na zbylých dvou set-top boxech M5 a K8. Dlouhodobé testování probíhalo v pˇrípadˇe set-top boxu M6 s pˇripojenou LED televizní obrazovkou Samsung model UE32D5500 SMART s úhlopˇríˇckou 32" (81cm) a v pˇrípadˇe set-top boxu K5 s pˇripojeným LED monitorem BenQ GL2460HM o úhlopˇríˇcce 24" (61cm). Dále bylo zobrazení uživatelského rozhraní launcheru otestováno na obrazovkách Philips 40PFH5509 s úhlopˇríˇckou 41" (102cm) a na starším klasickém televizoru Philips s analogovým tunerem vyrobeným v roce 2001 o úhlopˇríˇcce 21" (52cm), set-top box byl v tomto pˇrípadˇe pˇripojen k televizoru pomocí AV kabelu. Ve všech zmínˇených pˇrípadech se layout uživatelského rozhraní vytvoˇreného launcheru korektnˇe zobrazil dle oˇcekávání. Testováno bylo pˇripojení pomocí sít’ového kabelu i pomocí Wi-Fi modulu. Launcher korektnˇe reagoval na odpojení a pˇripojení sít’ového kabelu zmˇenou barvy ikony indikace pˇripojení do místní sítˇe. Testováno bylo i odpojení routeru od sítˇe internetu odpojením vstupního sít’ového kabelu do routeru, kdy launcher rozpozná, že je pˇripojen do místní sítˇe, ale není pˇripojen k síti internetu a zmˇení barvu ikony na žlutou. S pozitivním výsledkem byly také ovˇerˇ eny funkce pˇridávání, odebírání a pˇresouvání karet s aplikacemi na hlavní obrazovce, a to i v pˇrípadˇe, že launcher není pˇripojen k internetu. Funkce pˇridání aplikace na hlavní obrazovku mezi karty bez pˇripojení k internetu ikonu aplikace vykreslí doˇcasnˇe v nízkém rozlišení a jakmile je launcher opˇet pˇripojen dojde ke stažení a vykreslení ikony aplikace v lepším rozlišení. Ostatní uživatelské funkce launcheru jako: spuštˇení aplikací, zmˇena jazyka, zmˇena pozadí, kontrola aktualizací, zmˇena šíˇrky obrazu, spárování zaˇrízení s úˇctem, pˇríjímání zpráv a také systémové funkce launcheru, jež probíhají na pozadí, tj. získávání ikon v lepším rozlišení, aktualizace databáze ikon, pˇríjímání zpráv, nastavení cˇ asu dle serveru, získání informací o uživateli a poskytovateli služby ze serveru, aj. byly také ovˇerˇ eny s pozitivním výsledkem. Zkontrolovány byly také funkce hardwarových komponent pro pˇripojení a odpojení periferních zaˇrízení: klávesnice, myš, externí USB úložištˇe nebo pamˇet’ová karta. Testem prošly taktéž komponenty pˇripojení Wi-Fi, Bluetooth a Ethernet. Uživatelské testování ovládání rozhraní launcheru probˇehlo na vzorku 65
5. I MPLEMENTACE APLIKACE LAUNCHERU dvanácti osob ruzných ˚ vˇekových kategorií. Zkoumáno bylo jak si uživatelé poradí s navigací mezi jednotlivými prvky rozhraní. Vždy byly data launcheru resetována proto, aby každý z testujících prošel i obrazovkou s prvotním nastavením set-top boxu. Všichni testující rozumˇeli ovládání launcheru bez vˇetších obtíží, jelikož jsou pro ovládání duležité ˚ pouze tlaˇcítka D-padu, OK, domu˚ a zpˇet. Bylo vhodné, aby testující dopˇredu znali funkci modrého tlaˇcítka pro zobrazení nápovˇedy, která uživateli vysvˇetlí funkci zbylých tlaˇcítek a mechanismus ovládání karet hlavní obrazovky. Dvˇema testujícím cˇ inil drobný problém pochopení pruvodce ˚ prvotním nastavením set-top boxu, který zobrazí u provedeného nastavení ikonu „fajfky“ nebo ikonu „kˇrížku“ podle stavu provedení nastavení. Tito testující jsou starší 50 let, mladší testující (ve vˇeku 15-40 let) s ovládáním obrazovky prvotního nastavení launcheru problém nemˇeli. Dále drobný problém nˇekterým uživatelum ˚ zpusobila ˚ dialogová okna nastavení jazyka a nastavení barevného schématu launcheru, kde opˇet dvˇema testujícím nebylo zcela zˇrejmé, na kterém prvku se aktuálnˇe nachází focus. Tento problém mužeme ˚ v pˇrípadˇe dialogového okna s nastavením jazyka pˇriˇcíst tomu, že nastavení nabízí dvˇe volby a uživatel tak jednoznaˇcnˇe nerozezná, který jazyk je aktuálnˇe vybraný. U dialogového okna s nastavením barevného schématu bychom mohli zvýraznˇení vylepšit prohozením barev, tzn. aktuálnˇe zvýraznˇený prvek by byl orámován bílou a ostatní modrou barvou. Za nedostatek nˇekteˇrí testující oznaˇcili ovládání aplikace pro úpravu šíˇrky obrazu. Prostˇredí aplikace je totiž dostupné pouze v anglickém jazyce a po ukonˇcení nastavení a uložení šíˇrky, aplikace uživatele pˇresmˇeruje do systémového Android nastavení, což v pˇrípadˇe prvotního pruvodce ˚ pusobilo ˚ nˇekterým testujícím problémy. Tato aplikace byla vytvoˇrena spoleˇcností Zoomtak a je souˇcástí jejich dodávaného firmware, aplikace bude pˇredmˇetem budoucího vylepšení vytvoˇreného firmware. Výsledek testování ale mužeme ˚ považovat za úspˇech, 10 z 12 testujících bylo s navrženým ovládáním uživatelského rozhraní launcheru spokojeno a oznaˇcili ovládání za snadné.
66
6 Závˇer Cílem této diplomové práce bylo prozkoumat možnosti, zdokumentovat a vytvoˇrit vlastní upravený firmware pro vybrané Android zaˇrízení. Dnes již existuje mnoho alternativních operaˇcních systému˚ postavených na OS Android pro mobilní telefony cˇ i tablety, proto jsem se v mé diplomové práci rozhodl pro vytvoˇrení operaˇcního systému pro zaˇrízení, jejichž obrazovky disponují velkou úhlopˇríˇckou a jsou ovládané ze vzdálenosti nˇekolika metru˚ pomocí dálkového ovladaˇce. Takové operaˇcní systémy totiž pˇredstavují smˇer, kterým se v posledních letech vydali nejvˇetší technologické firmy jako Google, Apple, Amazon, Samsung cˇ i LG. Na základˇe tˇechto požadavku˚ byl vytvoˇren firmware, který je použitelný pro prakticky kterékoliv zaˇrízení, jenž disponuje Wi-Fi nebo Ethernet modulem pro pˇripojení k internetu, HDMI portem pro pˇripojení zobrazovacího zaˇrízení, dálkovým ovladaˇcem a procesorem, který vyhovuje hardwarovým nárokum ˚ systému Android 4.2 Jelly Bean. Souˇcástí zadání také bylo zamˇerˇ it se na celkový branding vytvoˇreného firmware, cˇ ehož jsem docílil zavedením vlastního startovacího loga, upravením systémových promˇenných (napˇríklad ro.product.model, ro.product.name, ro.product.manufacturer, aj.), pˇredevším ale vytvoˇrením vlastního uživatelského prostˇredí tzv. launcheru s podporou zmˇeny barevného schématu. Vytvoˇrený firmware byl testován na všech cˇ tyˇrech zapujˇ ˚ cených Android set-top boxech, jejichž specifikace byly prozkoumány a podrobnˇe popsány v textu této práce. Uživatelské rozhraní vytvoˇreného launcheru bylo navrženo tak, aby odpovídalo požadavkum ˚ na uživatelská rozhraní aplikací pro platformu Android TV, jejíž studium a podrobný popis je souˇcástí kapitoly 2. Vzniklo tak uživatelské prostˇredí, které je vhodné pro zobrazení na obrazovkách s vysokým rozlišením a vˇetšími úhlopˇríˇckami a které je jednoduše ovladatelné ze vzdálenosti nˇekolika metru˚ pomocí dálkového ovladaˇce bez nutnosti doteku˚ obrazovky. Cílem bylo navrhnout launcher tak, aby i ménˇe technicky zdatní uživatelé byli schopni rychle ovládání launcheru pochopit, což se dle výsledku˚ testu˚ podaˇrilo. Pro jednoduchost ovládání uživatelského rozhraní byl launcher navržen tak, že se skládá pouze ze tˇrí obrazovek, které byly podrobnˇe popsány v kapitole 4 a jsou zobrazeny v Pˇríloze 9. Uživatel má možnost upravit vzhled launcheru zmˇenou jazyka cˇ i zmˇenou barevného schématu prostˇredí. Jednotlivá barevná schémata jsou zobrazena v Pˇríloze 11. Pˇri návrhu launcheru jsem využil nejnovˇejší nástroje pro podporu vývoje aplikací platformy Android TV jako je podpurná ˚ knihovna Support 67
ˇ 6. Z ÁV ER
Leanback Library verze 17.21, jež byla spoleˇcností Google vydána v prosinci lonského ˇ roku. Tato knihovna poskytla komponenty pro vytvoˇrení rˇ ady karet oblíbených aplikací na hlavní obrazovce. Množina operací nad rˇ adou karet byla pro úˇcely této práce rozšíˇrena o možnost uvedení karty do editovatelného stavu a posunutí na jinou pozici tak, jak to uživateli více vyhovuje. Souˇcástí poslední vydané aktualizace knihovny Leanback verze 17.22 je mimo jiné komponenta GuidedStepFragment, jež má sloužit pro vytvoˇrení pruvodce ˚ uživatelským nastavením za pomoci série rozhodovacích obrazovek. Tato komponenta by mohla být souˇcástí budoucího vylepšení obrazovky launcheru s pruvodcem ˚ prvotním nastavením set-top boxu. Souˇcástí implementace launcheru je vytvoˇrený mechanismus získávání ikon aplikací v lepším rozlišení (512 x 512 dpi), jelikož ikony aplikací, které jsou souˇcástí instalace v set-top boxu mají velmi nízké rozlišení (pouze 48 x 48 dip) a nejsou tak vhodné pro velké obrazovky televizoru. ˚ Protože je settop box primárnˇe urˇcen pro zobrazování dat z internetu, bylo také nutné vytvoˇrit vhodný mechanismus pro kontrolu pˇripojení set-top boxu k internetu. Vytvoˇrený mechanismus formou zmˇeny barvy ikony ve stavových informacích hlavní obrazovky launcheru informuje uživatele o aktuálním stavu pˇripojení. Veškeré funkce launcheru jsou ale dostupné i v off-line režimu. Zmínˇené vytvoˇrené mechanismy jsem podrobnˇe popsal v kapitole 5 jak z pohledu funkˇcnosti, tak z pohledu implementace. Pˇri vývoji launcheru byla využita také webová služba Bitbucket pro verzování a zálohu zdrojového kódu projektu1 . Souˇcástí zadání bylo vytvoˇrit práci, která bude sloužit jako referenˇcní výukový materiál pro kurz PV256 Projekt z programování pro Android. Také proto byla v druhé kapitole této práce popsána nová platforma Android TV pro moderní televizory. Velké technologické spoleˇcnosti již od zaˇcátku tohoto roku integrují tuto platformu pˇrímo do svých televizoru˚ nebo vytváˇrejí zaˇrízení, jež se budou pˇripojovat k televizoru pomocí HDMI kabelu (viz Pˇríloha 1). Platforma Android TV bude brzy souˇcástí mnoha zaˇrízení, a i proto jsem v této práci vˇenoval druhou kapitolu popisu platformy Android TV a návrhu aplikací pro tuto platformu. V textu práce jsem také ve tˇretí kapitole popsal hardwarové specifikace vybraných set-top boxu˚ od spoleˇcnosti Zoomtak a nastínil jsem zpusob, ˚ jak upravit jejich firmware, aby vyhovoval našim potˇrebám. Ve cˇ tvrté kapitole jsem popsal grafický návrh a ovládání uživatelského rozhraní vytvoˇreného launcheru a v kapitole páté jsem cˇ tenáˇri pˇredstavil zpusob ˚ implementace launcheru a podrobnˇeji 1. Projekt launcheru je dostupný na webové adrese https://bitbucket.org/ HonzaR/launcher
68
ˇ 6. Z ÁV ER
popsal implementaci jeho vybraných komponent. Budoucím rozšíˇrením launcheru by mohlo být zmínˇené využití nové komponenty knihovny Leanback - GuidedStepFragment pro vytvoˇrení nového pruvodce ˚ nastavením. V pˇrípadˇe rozšíˇrení platformy Android TV a vzniku více aplikací, optimalizovaných pro ovládání dálkovým ovladaˇcem, by mohlo rozšíˇrením také být využití plné funkcionality použité komponenty BrowseFragment ve formˇe zavedení levého navigaˇcního menu (viz Pˇríloha 12). Tímto zpusobem ˚ bychom mohli nainstalované aplikace na hlavní obrazovce launcheru roztˇrídit do kategorií (napˇríklad aplikace, hry a systémové nástroje). Nebo bychom mohli také zavést rˇ adu karet s doporuˇcením nového obsahu pro uživatele, jež je principem první rˇ ady karet v launcheru platformy Android TV. Úpravy nebo kompletnˇe novou verzi by si urˇcitˇe zasloužila aplikace pro nastavení šíˇrky obrazu, která se ukázala jako nejvˇetší slabina vytvoˇreného firmware. Jinou formou budoucího rozšíˇrení by také mohlo být vytvoˇrení jednoduché aplikace pro mobilní telefony cˇ i tablety, jejíž uživatelské rozhraní by se skládalo pouze z jedné obrazovky s tlaˇcítky domu, ˚ zpˇet a cˇ tyˇrsmˇerovým tlaˇcítkem D-pad a která by se pˇripojila pomocí Wi-Fi do stejné sítˇe jako settop box a sloužila by pro vzdálené ovládání launcheru namísto nebo jako alternativa dálkového ovladaˇce. Tímto zpusobem ˚ by si uživatelé mohli napˇríklad zahrát k tomuto úˇcelu uzpusobenou ˚ hru v režimu multiplayer.
69
Literatura [1] OPEN HANDSET ALLIANCE. Alliance Announcements [online]. 2015 [cit. 2015-02-01]. Dostupné z: http://www. openhandsetalliance.com/press_releases.html [2] OPEN HANDSET ALLIANCE. Industry Leaders Announce Open Platform for Mobile Devices: Open Software, Open Device, Open Ecosystem [online]. Californie: Open Handset Alliance, 2007 [cit. 201502-01]. Dostupné z: http://www.openhandsetalliance.com/ press_110507.html [3] IDC ANALYZE FUTURE. Press Release: Android and iOS Squeeze the Competition, Swelling to 96.3% of the Smartphone Operating System Market for Both 4Q14 and CY14, According to IDC [online]. 2015 [cit. 2015-02-01]. Dostupné z: http://www.idc.com/getdoc.jsp? containerId=prUS25450615 [4] GOOGLE. Google+: Google Developers [online]. 2012 [cit. 2015-02-05]. Dostupné z: https://plus.google.com/+GoogleDevelopers/ posts [5] MARTONIK, Andrew. AndroidCentral: Google TV [online]. 2015 [cit. 2015-02-05]. Dostupné z: http://www.androidcentral.com/ google-tv [6] SADEWO, Bams. AndroidAuthority: Google’s Nexus Q now listed as “no longer available” on Google Play [online]. 2013 [cit. 2015-02-05]. Dost. z: http://www.androidauthority.com/ googles-nexus-q-no-longer-available-on-google-play/ 148486/ ˇ ˚ Stanislav. MLADÁ FRONTA. Android TV: Ctvrtý [7] JANU, pokus Googlu ovládnout obýváky [online]. 2015 [cit. 201502-10]. Dostupné z: http://www.zive.cz/clanky/ android-tv-ctvrty-pokus-googlu-ovladnout-obyvaky/ sc-3-a-174302/default.aspx [8] SAID, Nabil Ben. Android TV: A platform for the living room [online]. 2014 [cit. 2015-02-10]. Dostupné z: http://www.slideshare.net/ nbensaid/androidtv-gdgdevfest2014 70
ˇ 6. Z ÁV ER
[9] GOOGLE. Support: Android TV Help [online]. Mountain View (Californie), 2015 [cit. 2015-02-10]. Dostupné z: https://support. google.com/androidtv# [10] NICKINSON, Phil. The Nexus Player works with external storage and USB ethernet [online]. 2014 [cit. 2015-0215]. Dostupné z: http://www.androidcentral.com/ about-nexus-player-and-usb-support [11] GOOGLE. Introducing a smarter TV: Your remote stays with you [online]. Mountain View (Californie), 2015 [cit. 2015-02-15]. Dostupné z: http://www.android.com/tv/ [12] KOTWAL, Ankur. YOUTUBE. Android TV: Using the Leanback library [video]. 2014 [cit. 2015-03-05]. Dostupné z: https://youtu. be/72K1VhjoL98 [13] GOOGLE. Design: Designing for Android TV [online]. Mountain View (Californie): Google, 2015 [cit. 2015-03-08]. Dostupné z: https: //developer.android.com/design/tv/index.html [14] GOOGLE. Designing for Android TV: Home Screen [online]. Mountain View (Californie): Google, 2015 [cit. 2015-03-08]. Dostupné z: https://developer.android.com/design/tv/index.html [15] GOOGLE. Designing for Android TV: Apps and Games [online]. Mountain View (Californie): Google, 2015 [cit. 2015-0308]. Dostupné z: https://developer.android.com/design/ tv/index.html [16] GOOGLE. UI Patterns for TV: Navigation, Focus and Selection [online]. Mountain View (Californie): Google, 2015 [cit. 2015-0312]. Dostupné z: https://developer.android.com/design/ tv/patterns.html [17] GOOGLE. UI Patterns for TV: Recommendations [online]. Mountain View (Californie): Google, 2015 [cit. 2015-03-12]. Dostupné z: https: //developer.android.com/design/tv/patterns.html [18] GLINT, Michael. Android TV: An Easy Guide to Over 50 of the Best Features. South Carolina: CreateSpace Independent Publishing Platform, 2014. 1. ISBN 978-1503046498. 71
ˇ 6. Z ÁV ER
[19] MURPHY, Mark L. The Busy Coder’s Guide to Android Development. Californie: CreateSpace Independent Publishing Platform, 2014. 6,5. ISBN 978-0981678009. [20] GOOGLE. Android Developers: Tools - Android Studio [online]. Mountain View (Californie): Google, 2015 [cit. 2015-03-20]. Dostupné z: http://developer.android.com/sdk/index.html [21] GOOGLE. Android Developers: Handling Controller Actions [online]. Mountain View (Californie): Google, 2015 [cit. 2015-0320]. Dostupné z: http://developer.android.com/training/ game-controllers/controller-input.html [22] GOOGLE. Android Developers: Style for TV [online]. 2015 [cit. 201503-24]. Dostupné z: https://developer.android.com/design/ tv/style.html [23] GOOGLE. Android Developers: Building Layouts for TV [online]. 2015 [cit. 2015-03-24]. Dostupné z: ps://developer. android.com/training/tv/start/layouts.html# density-resources [24] GOOGLE. Android Developers: Building Layouts for TV [online]. 2015 [cit. 2015-03-24]. Dostupné z: https://developer.android. com/training/tv/start/layouts.html [25] GOOGLE. Android Developers: Draw 9-patch [online]. Mountain View (Californie): Google, 2015 [cit. 2015-04-01]. Dostupné z: http: //developer.android.com/tools/help/draw9patch.html [26] GOOGLE. Android Developers: Recommending TV Content [online]. Mountain View (Californie): Google, 2015 [cit. 2015-04-14]. Dostupné z: https://developer.android.com/training/tv/ discovery/recommendations.html [27] GOOGLE. Design: Designing for Android TV [online]. Mountain View (Californie): Google, 2015 [cit. 2015-04-01]. Dostupné z: https: //developer.android.com/training/tv/index.html [28] GOOGLE. Android Developers Blog [online]. Mountain View (Californie): Google, 2015 [cit. 2015-04-14]. Dostupné z: http:// android-developers.blogspot.cz/ 72
ˇ 6. Z ÁV ER
[29] STACK EXCHANGE INC. StackOverflow: Android TV [online]. 2015 [cit. 2015-04-14]. Dostupné z: http://stackoverflow.com/ questions/tagged/android-tv [30] GOOGLE. Google+: Android TV Developers [online]. Mountain View (Californie): Google, 2015 [cit. 2015-04-14]. Dostupné z: https:// plus.google.com/communities/112881895888889393129 [31] GOOGLE. Google Play: Games for Android TV [online]. 2015 [cit. 2015-04-14]. Dostupné z: https://play.google.com/store/ apps/collection/promotion_3000e24_androidtv_games_ all?hl=cs [32] GOOGLE. Google Play: Apps for Android TV [online]. 2015 [cit. 2015-04-14]. Dostupné z: https://play.google.com/store/ apps/collection/promotion_3000e26_androidtv_apps_ all?hl=cs [33] GOOGLE. Nexus Player: Built to play [online]. 2015 [cit. 2015-04-015]. Dostupné z: http://www.google.com/nexus/player/ [34] RAZER. Forge TV: Android Gaming In Your Living Room [online]. San Diega (Californie), 2015 [cit. 2015-04-15]. Dostupné z: http:// www.razerzone.com/gaming-systems/razer-forge-tv [35] NVIDIA. Shield: Android TV [online]. Santa Clara (Californie), 2015 [cit. 2015-04-15]. Dostupné z: http://shield.nvidia.com/ [36] SONY. Bravia: Android TV [online]. Tokio (Japonsko), 2015 [cit. 2015-04-15]. Dostupné z: http://www.sony.net/Products/tv/ androidtv/en-us/?j-short=androidtv [37] ZOOMTAK. Zoomtak M6 Smart TV Box [online]. 2015 [cit. 201504-18]. Dostupné z: http://www.zoomtak.net/en/pro_detail. asp?bid=34&tid=34&sid=34&id=43 [38] DEMBOWSKI, Klaus. Mistrovství v HARDWARE. Praha: Computer press, 2009. ISBN 9788025123102. [39] ZOOMTAK. M5 Quad Core Android TV Box [online]. 2015 [cit. 201504-18]. Dostupné z: http://www.zoomtak.net/en/pro_detail. asp?bid=35&tid=35&sid=35&id=50 73
ˇ 6. Z ÁV ER
[40] ZOOMTAK. K5 Quad Core Android TV Box [online]. 2015 [cit. 201504-18]. Dostupné z: http://www.zoomtak.net/en/pro_detail. asp?bid=35&tid=35&sid=35&id=51 [41] ZOOMTAK. K8 Quad Core Android TV Box [online]. 2015 [cit. 201504-18]. Dostupné z: http://www.zoomtak.net/en/pro_detail. asp?bid=35&tid=35&sid=35&id=52 [42] ZOOMTAK. Products [online]. 2015 [cit. 2015-04-18]. Dostupné z: hhttp://www.zoomtak.net/en/pro.asp [43] GOOGLE. Support - Android TV Help: Nexus Player tech specs [online]. 2015 [cit. 2015-04-20]. Dostupné z: https://support. google.com/androidtv/answer/6123321?hl=en [44] SLEDOVANITV.CZ. Manuál - STB [online]. Brno, 2014 [cit. 201504-20]. Dostupné z: https://sledovanitv.cz/cache/upload/ Manual-STB-1.2-1.pdf [45] GOOGLE. Android Developers: Android 4.2 APIs [online]. Mountain View (Californie), 2015 [cit. 2015-04-22]. Dostupné z: https://developer.android.com/about/versions/ android-4.2.html [46] GANSSLE, Jack. The Firmware Handbook: Embedded Technology. London: Newnes, 2004. ISBN 978-0750676069. [47] T3N. Android 4.1 Update: Welche Geräte Jelly Bean erhalten [online]. 2015 [cit. 2015-04-23]. Dostupné z: http://t3n.de/news/ android-41-update-welche-gerate-403769/ [48] GOOGLE. Android Developers: Android Debug Bridge [online]. Mountain View (Californie), 2015 [cit. 2015-04-25]. Dostupné z: http: //developer.android.com/tools/help/adb.html [49] GOOGLE. Android Developers: Creative Vision for TV [online]. Mountain View (Californie), 2015 [cit. 2015-04-25]. Dostupné z: https://developer.android.com/design/tv/principles. html [50] GOOGLE. Android Developers: Android Lollipop [online]. Mountain View (Californie), 2015 [cit. 2015-04-25]. Dostupné z: https:// developer.android.com/about/versions/lollipop.html 74
ˇ 6. Z ÁV ER
[51] GOOGLE. Android Developers: Design - Iconography [online]. Mountain View (Californie), 2015 [cit. 2015-04-27]. Dostupné z: http://developer.android.com/design/style/ iconography.html#launcher [52] GOOGLE. Android Developers: Design - Help [online]. Mountain View (Californie), 2015 [cit. 2015-04-27]. Dostupné z: http:// developer.android.com/design/patterns/help.html [53] LOCKWOOD, Alex. Android Design Patterns: Handling Configuration Changes with Fragments [online]. 2015 [cit. 2015-04-30]. Dostupné z: http://www.androiddesignpatterns.com/2013/ 04/retaining-objects-across-config-changes.html ˇ [54] ŠEVCÍK, Jonáš. Droidboy: Parallel AsyncTask [online]. 2015 [cit. 2015-04-30]. Dostupné z: http://www.droidboy.cz/2015/03/ parallel-asynctask.html [55] GOOGLE. Android Developers: ListRowPresenter [online]. Mountain View (Californie), 2015 [cit. 2015-05-01]. Dostupné z: https://developer.android.com/reference/android/ support/v17/leanback/widget/ListRowPresenter.html [56] GOOGLE. Android Developers: ArrayObjectAdapter [online]. Mountain View (Californie), 2015 [cit. 2015-05-01]. Dostupné z: https://developer.android.com/reference/android/ support/v17/leanback/widget/ArrayObjectAdapter.html
75
1 Zaˇrízení se systémem Android TV
Obrázek 1.1: Referenˇcní zaˇrízení Nexus Player se systémem Android TV. [33]
Obrázek 1.2: Forge TV od spoleˇcnosti Razer. [34]
76
ˇ 1. Z A RÍZENÍ SE SYSTÉMEM A NDROID TV
Obrázek 1.3: Shield Console od spoleˇcnosti Nvidia. [35]
Obrázek 1.4: Android TV platforma zabudovaná v televizoru Sony Bravia s ovládáním od spoleˇcnosti Logitech. [36]
77
2 Set-top boxy spoleˇcnosti Zoomtak
ˇ ri zvolené platformy set-top boxu˚ od spoleˇcnosti Zoomtak: Obrázek 2.1: Ctyˇ K5, K8, M6 a M5. [42] 78
3 Jednotlivé obrazovky launcheru Android TV
ˇ ri obrazovky uživatelského rozhraní launcheru platformy Obrázek 3.1: Ctyˇ Android TV, I. hlavní obrazovka, II. detailní informace o daném obsahu, III. aplikace Youtube IV. uživatelské nastavení, V. pˇripojení k Wi-Fi síti. 79
4 Uživatelská rozhraní Google TV aplikací
Obrázek 4.1: I: Hlavní obrazovka launcheru platformy Google TV, II: aplikace Netflix pro platformu Google TV, III: aplikace DoggCatcher Podcast Player pro platformu Google TV. 80
5 Hardwarové specifikace set-top boxu˚ Zoomtak
Model Verze Android CPU GPU Pamˇet’ Vnitˇrní úložištˇe Podpora pamˇetí Sít’ Souborové systémy
Rozhraní
Video formáty Audio formáty Image formáty Rozmˇery a váha set-top boxu Dálkové ovládání
Zoomtak M6 Smart TV Box 4.2 - Jelly Bean Amlogic-8726 MX Cortex A9 CPU Dual Core Max.1.5GHz Dual Core Integrated Mali-400 GPU (3D Acceleration Engine) DDR3-1GB NAND Flash 8GB SD/MMC/MS Card Reader up to 32GB USB2.0 Host(4x) Built-in Wi-Fi Module 802.11 b/g/n With Antenna RJ45 Ethernet network connection interface NTFS, FAT32, YAFFS2, EXT2, EXT3 4 x USB 2.0 HS 1 x AV output 1 x SD/MMC/MS memory card slot 1 x Rj45 wire Ethernet connection 1 x HDMI output 1.4 1 x YPbPr 1x Coaxial 1080PDIVX/H264/H263/AVI/FLV/m2ts/mkv/ mp4/MJPEG/MPEG/rm/rmvb/MOV/BDAV/ HTML5/vc1 MP3, WMA, OGG, WAVE.DTS,AC3,... BMP/JPG/PNG/GIF/JPEG/TIFF 16 x 10 x 2,5cm, 200g 50g (bez baterií - 2x AAA), 45 tlaˇcítek, technologie pˇrenosu informací - IR
Tabulka 5.1: Podrobná hardwarová specifikace platformy set-top boxu Zoomtak M6. [37] 81
5. H ARDWAROVÉ SPECIFIKACE SET- TOP BOX U˚ Z OOMTAK Model Verze Android CPU GPU Pamˇet’ Vnitˇrní úložištˇe Podpora pamˇetí
Sít’
Souborové systémy
Rozhraní
Video formáty Audio formáty Image formáty Rozmˇery a váha set-top boxu Dálkové ovládání
Zoomtak M5 Android TV Box 4.4 - KitKat Amlogic S805 Quad core Cortex A5 1.5GHz Quad-core Mali-450MP GPU (Hardward 3D graphics acceleration) DDR3-1GB NAND Flash 8GB SD/SDHC/MMC Card Reader up to 32GB USB2.0 Host(4x), support USB DISK and USB HDD Built-in Wi-Fi Module 802.11 b/g/n With Antenna, 2.4G/5.0G Dual WIFI RJ45 Ethernet 10/100M network connection interface NTFS, FAT16, FAT32 4 x USB 2.0 HS 1 x AV output 1 x SD/SDHC/MMC memory card slot 1 x RJ45 standard wire Ethernet connection 1 x HDMI output 1.4 up to 1080P 1 x YPbPr 1x Coaxial Bluetooth V4.0 1080PDIVX/H264/Avi/Rm/Rmvb/Ts/Vob/Mkv/ Mov/ISO/wmv/asf/flv/dat/mpg/mpeg MP3/WMA/AAC/WAV/OGG/AC3/DDP/ TrueHD/DTS/DTS/HD/FLAC/APE HD JPEG/BMP/GIF/PNG/TIFF 16 x 10 x 2,5cm, 200g 50g (bez baterií - 2x AAA), 45 tlaˇcítek, technologie pˇrenosu informací - IR
Tabulka 5.2: Podrobná hardwarová specifikace platformy set-top boxu Zoomtak M5. [39]
82
5. H ARDWAROVÉ SPECIFIKACE SET- TOP BOX U˚ Z OOMTAK Model Verze Android CPU GPU Pamˇet’ Vnitˇrní úložištˇe Podpora pamˇetí
Sít’
Souborové systémy
Rozhraní
Video formáty Audio formáty Image formáty Rozmˇery a váha set-top boxu Dálkové ovládání
Zoomtak K5 Android TV Box 4.4 - KitKat Amlogic S805 Quad core Cortex A5 1.5GHz Quad-core Mali-450MP GPU (Hardward 3D graphics acceleration) DDR3-1GB NAND Flash 8GB SD/SDHC/MMC Card Reader up to 32GB USB2.0 Host(3x), support USB DISK and USB HDD Built-in Wi-Fi Module 802.11 b/g/n, 2.4G/5.0G Dual WIFI RJ45 Ethernet 10/100M network connection interface NTFS, FAT16, FAT32 3 x USB 2.0 HS 1 x AV output 1 x SD/SDHC/MMC memory card slot 1 x RJ45 wire Ethernet connection 1 x HDMI output 1.4 up to 1080P 1 x Optical port Bluetooth V4.0 1080PDIVX/H264/Avi/Rm/Rmvb/Ts/Vob/Mkv/ Mov/ISO/wmv/asf/flv/dat/mpg/mpeg MP3/WMA/AAC/WAV/OGG/AC3/DDP/ TrueHD/DTS/DTS/HD/FLAC/APE HD JPEG/BMP/GIF/PNG/TIFF 10 x 10 x 2cm, 140g 50g (bez baterií - 2x AAA), 45 tlaˇcítek, technologie pˇrenosu informací - IR
Tabulka 5.3: Podrobná hardwarová specifikace platformy set-top boxu Zoomtak K5. [40]
83
5. H ARDWAROVÉ SPECIFIKACE SET- TOP BOX U˚ Z OOMTAK Model Verze Android CPU GPU Pamˇet’ Vnitˇrní úložištˇe Podpora pamˇetí
Sít’
Souborové systémy
Rozhraní
Video formáty Audio formáty Image formáty Rozmˇery a váha set-top boxu Dálkové ovládání
Zoomtak K8 Android TV Box 4.4 - KitKat Amlogic S802 Quad core Cortex A9r4 2.0GHz Octa-core Mali-450MP GPU @ 600MHz (Hardward 3D graphics acceleration) DDR3-2GB NAND Flash 8GB SD/SDHC/MMC Card Reader up to 32GB USB2.0 Host(3x), support USB DISK and USB HDD Built-in Wi-Fi Module 802.11 b/g/n, 2.4G/5.0G Dual WIFI RJ45 Ethernet 10/100M network connection interface NTFS, FAT16, FAT32 3 x USB 2.0 HS 1 x AV output 1 x SD/SDHC/MMC memory card slot 1 x RJ45 wire Ethernet connection 1 x HDMI output 1.4 up to 4K2K 1 x Optical port Bluetooth V4.0 1080PDIVX/H264/Avi/Rm/Rmvb/Ts/Vob/Mkv/ Mov/ISO/wmv/asf/flv/dat/mpg/mpeg MP3/WMA/AAC/WAV/OGG/AC3/DDP/ TrueHD/DTS/DTS/HD/FLAC/APE HD JPEG/BMP/GIF/PNG/TIFF 10 x 10 x 2cm, 140g 50g (bez baterií - 2x AAA), 45 tlaˇcítek, technologie pˇrenosu informací - IR
Tabulka 5.4: Podrobná hardwarová specifikace platformy set-top boxu Zoomtak K8. [41]
84
6 Set-top box Zoomtak M6
Obrázek 6.1: Pohled na platformu set-top boxu Zoomtak M6 zepˇredu, zezadu, zprava, zleva a seshora vˇcetnˇe ovladaˇce. [37] 85
7 Uživatelské prostˇredí XMBC (Kodi)
Obrázek 7.1: Hlavní obrazovka uživatelského prostˇredí XMBC nahoˇre, obrazovka s uživatelskými aplikacemi dole.
86
8 Adresáˇrová struktura firmware set-top boxu M6
Obrázek 8.1: Obsah koˇrenového adresáˇre upraveného firmware set-top boxu M6 nahoˇre, systémové aplikace v adresáˇri /system/app dole. 87
9 Jednotlivé obrazovky launcheru platformy M6
Obrázek 9.1: Tˇri obrazovky uživatelského rozhraní vytvoˇreného launcheru platformy M6: hlavní obrazovka, obrazovka se všemi nainstalovanými aplikacemi a obrazovka s nastavením. 88
10 Aplikace z nastavení
Obrázek 10.1: Obrazovky aplikací pro nastavení launcheru: aplikace pro úpravu šíˇrky a výšky obrazu, aplikace pro spárování zaˇrízení set-top boxu s uživatelským úˇctem na serveru a aplikace pro aktualizaci firmware settop boxu M6. 89
11 Pozadí launcheru platformy M6
Obrázek 11.1: Výbˇer z pˇeti dostupných barevných schémat vyvinutého launcheru set-top boxu M6. 90
12 Levé navigaˇcní menu
Obrázek 12.1: Ukázka funkcionality levého navigaˇcního menu komponenty BrowseFragment knihovny Leanback.
91
13 Seznam elektronických pˇríloh Archív odevzdaný v informaˇcním systému Masarykovy univerzity obsahuje adresáˇr se zdrojovými kódy vytvoˇreného launcheru (dostupné také z https://bitbucket.org/HonzaR/launcher) a adresáˇr se zdrojovým kódem textové cˇ ásti této diplomové práce (vˇcetnˇe obrázkových pˇríloh a vygenerovaného pdf souboru). Struktura pˇríloh - koˇrenový adresáˇr: - source: - app - text:
- source - pdf
92
rdfdrgfdtgtdh
„When your butt hits the sofa, you lose 20 IQ points.“ - MATIAS DUARTE, AndroidTV / GDG Düsseldorf DevFest 2014