AKA MONITOR  - www.akamonitor.cz - doc.A. Katolický


Monitoring

 časopisů
weblog

 

Recenze knihy
"Android 2"
Průvodce programováním mobilních aplikací
Mark L. Murphy  

Odborný weblog
NOVÉ KNIHY


Nový weblog
EXPRESSION
STUDIO 4


Digitální
FOTO

weblog


Fotogalerie
AKA MONITORU


AKA MONITOR
ISSN 1804-042X


Computer Press, a. s., 2011. Vydání první.
Překlad: Jakub Mužík
Original edition copyright © 2010 by Mark L. Murphy. All rights reserved.

Otevřete-li knihu L.M. Murphyho, první, čeho si všimnete, je velmice podrobný obsah, zabírající desítku stránek. Podrobné členění odpovídá zvolenému přístupu. Rozdělení látky do 39-ti kapitol umožňuje snadnou orientaci a jednoduché přiřazení četných praktických příkladů. Kniha je psána srozumitelným jazykem, třídění látky je logické a přehledné. Není to sice čtení ke kávě, ale čtenář, který tuto knihu zvolil, jistě tuší o co půjde a bude připraven na notnou dávku konkrétních informací.

Na webu CPress je k volnému stažení soubor s podrobným obsahem a se stručným úvodem knihy. Pro ilustraci přístupu autora k tématu dobře poslouží ukázková kapitola. Na ukázku byla vybrána 7 kapitola „Widgety nabídek“. Výběr byl vhodný, jelikož kapitola obsahuje všechny prvky, které se v knize vyskytují. K on-line prolistování na obrazovce byly vybrány 4 stránky ze 4 kapitol. Stručná anotace knihy je dostatečně výmluvná:
Publikace nás - mimo jiné - naučí, jak:
- Využívat dostupné widgety a kontejnery
- Implementovat tlačítka a nabídky
- Pracovat s vlákny, aktivitami a soubory
- Ošetřovat chyby a výjimky
- Ukládat uživatelská data a nastavení
- Přistupovat ke službám pracujícím se zeměpisnou polohou
- Vyladit aplikaci pro různá rozlišení

Z 39-ti kapitol knihy vybárám pro představu o její struktuře alespoň názvy následujících stěžejních kapitol:     
- Projekty a jejich cíle
- Vytvoření kostry aplikace
- Využití základních widget
- Práce s kontejnery
- Hrátky s výčty
- Prostředí pro zpracování vstupu
- Zabudování prohlížeče založeného na jádře WebKit
- Práce s vlákny
- Ošetřování událostí týkajících se životního cyklu aktivity
- Filtry záměrů
- Spouštění aktivit a podaktivit
- Práce s prostředky
- Přístup k souborům
- Využití knihoven jazyka Jáva
- Komunikace prostřednictvím Internetu
- Vytvoření služby
- Vyvolání služby
- Obsluha telefonních hovorů
- Vývojové nástroje
- Obsluha různých vel i kostí obrazovky
- Obsluha různých typů zařízení
- Ošetření změn platformy
Poznámka: v recenzi je použita terminologie českého překladu ( služby, dodavatele obsahu, návrhy, záměry, atd.)

Zkušený autor nás postupně seznámí se zakladními stavebními prvky systému, naučí nás je skládat do funkčního celku a vytvářet a připojit programovou logiku, běžící na pozadí aplikace. Výklad je demonstrován na jednoduchých, snadno pochopitelných příkladech, které po menších úpravách můžeme dále použít u vlastního projektu. Kód příkladů je k volnému stažení na webu knihy na portálu CPOressu: www.cpress.cz.

V budoucnosti budou lidé přistupovát ke službám založeným na připojení k Internetu prostřednictvím „netradičních“ prostředků, jako jsou mobilní zařízení, stále častěji.
Autor knihy Mark Murphy je zakladatelem společnosti CommonsWare a autorem knihy Busy Coder’s Guide to Android Development. Živí se jako vývojář softwaru již více než 25 let a vyvíjel software pro nerůznější zařízení.

Čemu nás M.L. Murphy ve své knize naučí?
Pozn.: při odpovědi na tuto otázku využívám volné citáty z knihy, kombinované s vlastném hodnocení.

Chcete-li psát aplikace pro Android, musíte ovládat alespoň základy programování v jazyce Jáva. Při psaní programů pro Android se používá syntaxe tohoto jazyka a knihovna tříd, která připomína podmnožinu knihovny Jáva SE (a navíc obsahuje také rozšíření specifická pro systém Android).

Předtím než se začnete experimentovat s některým z příkladů uvedených v této knize, měli byste si z webových stránek systému vývojové nástroje stáhnout, nainstalovat a otestovat. Chcete-li uvedené příklady zkompilovat, stáhněte si jejich zdrojové kódy z webu nakladatelství Computer Press (www.cpress.cz).

Operační systém Android využívají především mobilní telefony. I když se mluví o tom, že by se technologie Android mohla používat i v jiných zařízeních (například „počítačích“ na palubních deskách automobilů), v současné době se hlavní důraz klade na vývoj aplikací pro telefony. Pro vývojáře to pak má své výhody i nevýhody.

Problém nastává ve chvíli, kdy dojde na samotné programování.
- Telefony ve všech možných ohledech malé
- Telefony mají velmi malou obrazovku.
- Polohovací zařízení, pokud existují, jsou strašná (jak vám potvrdí každý, kdo ztratil elektronické pero) nebo nepřesná (velké prsty a displeje schopné reagovat na více dotyků najednou icjsou dobrá kombinace).
- Rychlost CPU a velikost paměti jsou v porovnání se stolními počítači a servery velmi omezené.
- Používat můžete sice jakýkoliv programovací jazyk a vývojové prostředí, avšak pouze s tou podmínkou, že se jej výrobce telefonu rozhodl do zařízení integrovat.

Většina této knihy je věnovaná aplikačnímu rámci a způsobu psaní programů, které fungují v jeho mezích a využívají jeho možností.

Aplikace pro systém Android sestávají z následujících hlavních komponentů:
- Aktivity
- Dodavatele obsahu
- Služby
- Záměry

Kniha obsahuje stručný popis struktury projektu, který by vám měl poskytnout potřebný nadhled a pomoci porozumět příkladům zdrojového kódu uvedeným v knize.

Murphy věnuje velkou pozornost koncepci cílů, protože jsou důležité při dlouhodobém vývoji aplikací, zejména pokud své aplikace testujete prostřednictvím emulátoru.

Murphy uvádí následující pravidla pro výběr cílů:
- Vyžadujte pouze to, co doopravdy potřebujete.
- Otestuje aplikaci na tolika cílech, na kolika můžete. -
- Překontrolujte úrovně cílů při uvolnění každé nové verze systému Android.

Abyste mohli Android nějak využívat, potřebujete nejprve vytvořit projekt. V knize najdete úvodní příklad jednoduchého projektu, ve kterém se používá technologie Advanced Push-Button Technology (pokročilá technologie pro implementaci tlačítka) a aktuální čas, díky čemuž je projekt o něco zajímavější než typický program „Ahoj, světe!“.

Každá sada nástrojů pro tvorbu grafického uživatelského rozhraní (GUI) nabízí nějaké základní widgety: textová pole, popisky, tlačítka atd. Sada nástrojů pro tvorbu grafického uživatelského rozhraní systému Android se pak v tomto ohledu ničím neliší a dodávané základní widgety představují dobrý úvod do funkce widgetů v aktivitách.

Většina nástrojů pro tvorbu uživatelského grafického rozhraní disponuje nějakou koncepcí správy návrhu rozhraní a velmi často se jedná o kontejnery. Některé nástroje pro tvorbu grafického uživatelského rozhraní, využívají pouze koncepci boxů a vycházejí z myšlenky, že jakéhokoliv rozvrhu uživatelského rozhraní lze dosáhnout správným vnořováním jednotlivých boxů. Tuto koncepci lze použil prostřednictvím třídy LinearLayout i v systému Android.

Na začátku páté kapitoly se nejprve autor věnuje adaptérům systému Android a poté pojednává o widgetech nabídek.

Widgety a kontejnery nacházíme nejenom ve většině sad nástrojů pro tvorbu uživatelského rozhraní (v různých podobách), ale zároveň se velmi často používají v aplikacích s grafickým uživatelským rozhraním, ať už webových, pro stolní počítače nebo pro mobilní zařízení.

Ve verzi systému Android 1.5 bylo poprvé představeno prostředí pro zpracováni vstupu (input method framework – IMF), kterému se také často říká virtuální klávesnice. Pojem virtuální klávesnice nemusí být úplně přesný, protože IMF lze použít také k rozeznání psaného písma a dalších způsobů zadávání textu prostřednictvím dotykové obrazovky. V samostatné kapitole se dočteme, jak prostřednictvím IMF vytvářet softwarové klávesnice ušité na míru požadavkům vašich aplikací.

Android podporuje aktivity obsahující menu aplikace. V systému Android se jim říká menu voleb. Stejné jako ve většině jiných nástrojů pro tvorbu grafického uživatelského rozhraní můžete i v sadě nástrojů systému Android vytvářet pro vaše aplikace kontextová menu. Naučíte se pracovat s nabídkami a kontextovými menu systému Android.

Android umožňuje do našich aktivit vložit zabudovaný webový prohlížeč jako widget. Tento prohlížeč umí zobrazovat HTML a můžete jej používat k plnohodnotnému procházení obsahem Internetu. Prohlížeč systému Android je založený na jádře WebKit

Ne každou interakci s uživatelem systému je možné zahrnout do aktivit tvořených náhledů. Někdy dojde k výskytu chyby. V těchto a jiných případech potřebujete s uživatelem komunikovat nějak jinak, než vám umožňuje tradiční uživatelské rozhraní.

Android disponuje poměrně velkým množstvím mechanizmů, prostřednictvím nichž můžete upozornit uživatele na výskyt nějaké události, aniž byste museli použít UI aktivity.

Koncepci „bezpečné interakce“ považuje Murphy za  zcela zásadní. Z vlákna běžícího na pozadí nemůžete upravit nějakou součást uživatelského rozhraní; to lze udělat pouze v jeho vlákně. To obecně vzato známěna, že mezi vlákny, která provádí nějakou práci na pozadí, a uživatelským rozhraním, které zobrazuje výsledky této práce, musí existovat nějaká koordinace. V 15-té kapitole se dozvíte, jak pracovat ve vašich aplikacích s vlákny na pozadí a s vlákny uživatelského rozhraní.

Operační systém Android využívají především mobilní telefony. Z tohoto důvodu jsou některé aktivity důležitější než jiné – přijmutí příchozího hovoru je pro uživatele důležitější než hraní sudoku. A protože se jedná o telefony, je pravděpodobné, že mají méně operační paměti než váš notebook nebo desktop. V 16-té kapitole najdete popis nejrůznějších stavů a zpětných volání, které tvoří životní cyklus vaší aktivity, a způsob jejich správného propojení.

Až do 16-té kapitoly se kniha věnuje hlavně aktivitám spuštěným přímo uživatelem ze spouštěče aplikací. To je také nejobvyklejší způsob spuštění vaší aktivity a jejího zobrazení uživateli. Systém Android je však založený na množství volně spojených komponentů, výsledky, kterých můžete dosáhnout v grafickém uživatelském rozhraní desktopu prostřednictvím dialogových oken, oken potomků apod., se obvykle považují za nezávislé aktivity.

Teoreticky vzato stojí celý Android na záměrech a jejich příjemcích. 17-tá kapitole se zaměřuje podrobně na záměry, abychom mohli vytvářet složitější aplikace a zároveň se chovali k systému ohleduplně.

Hlavní aktivita aplikace se spouští ze spouštěče aplikací. Jedna z aktivit musí disponovat prostředky pro spuštění jiné aktivity. Musíte disponovat nějakými prostředky k tomu, abyste mohli aktivitu zobrazující informace o události spustit a zobrazit jejím prostřednictvím konkrétní záznam (vybraný uživatelem). Jak se to dělá, se dozvíte v 18-té kapitole. V 20-té kapitole se autor věnuje prác is prostředky. Prostředky jsou statické informace uchovávané mimo zdrojový kód jazyka Jáva. Kromě návrhu existuje ještě mnoho dalších druhů prostředků, které můžete ve vašich aplikacích pro Android využívat.

Kapitola 22 se věnuje správě lokálních databází a přístupu k jejich datům.  V této kapitole najdete rozbor základů práce s SQLite v rámci systému Android. Nejedná se však o kompletní popis SQLite jako celku.

Ačkoliv Android nabízí strukturovaný způsob ukládání dat prostřednictvím preferencí a databází, někdy si vystačíte s jednoduchým souborem. V systému Android lze přistupovat k souborům dvěma způsoby: jeden se používá při přístupu k souborům přibaleným k vaší aplikaci a jeden při přístupu k souborům, které v zařízení vaše aplikace vytvoří. Oběma z nich se věnuje 23-tá kapitola.

V 24-té kapitole se dozvíte, co obnáší používání knihoven třetích stran a jaká jsou omezení aplikace arbitrárního zdrojového kódu třetích stran v systému Android.

Očekává se, že většina (pokud ne všechna) zatížení využívajících systém Android bude mít zabudováné nějaké prostředky pro připojení k Internetu. Ať se však bude připojení k Internetu realizovat jakýmkoliv způsobem, většina lidí – nebo alespoň ti, kteří budou mít paušál zahrnující datové služby nebo přístup k Wi-Fi síti – se bude moci připojit k Internetu ze svého Android telefonu. Není proto nijak překvapující, že platforma Android poskytuje vývojářům široké možnosti využití připojení k Internetu. Některé z nich nabízí vysokoúrovňový přístup – například zabudované jádro WebKit. Avšak chcete-li, můžete sestoupit až do nejnižších úrovní a používat surové sockety. V této knize je kladen důraz především na formy přístupu vyšší úrovně: WebKit jádro a API pro přístup k Internetu.

Pokud aplikace potřebuje, aby byla její data dostupná i pro jiné aplikace, je velmi důležité správné vybudování dodavatele obsahu. Chcete-li, aby vaše data mohly používat i jiné aplikace, je vhodné použít dodavatele obsahu.

Služby se v systému Android používají pro dlouho běžící procesy, které mají být nadále spuštěné, dokonce i když již nejsou spojené s žádnou aktivitou. Jako příklad lze uvést přehrávání hudby, které pokračuje i po uvolnění aktivity přehrávače automatickým správcem paměti, stahování aktualizací Atom/RSS zdroje a udržování připojení k online chatu dokonce i po deaktivaci klientu, například kvůli příchozímu hovoru. Služby se vytvářejí, když je manuálně spustíte (prostřednictvím API volání) nebo když se nějaká aktivita pokusí ke službě připojit prostřednictvím meziprocesové komunikace. V 29-té kapitole se dozvíte, jak vytvářet své vlastní služby. Následující kapitola se pak věnuje způsobu jejich využití z aktivit a jiných kontextů.

Programy se pokouší upoutat vaši pozornost, a někdy dokonce z dobrého důvodu. Pop-up zprávy, ikony na hlavním panelu s „bublinami“, skákající ikony na hlavním panelu atd. Jsme zvyklí na to, že náš telefon nás upozorňuje i na jiné věci než pouze na příchozí hovor: na vybíjející se baterii, alarmem na to, že máte ráno vstávat, prostřednictvím upozornění na nadcházející schůzku, na příchozí textové zprávy atd. Není proto nijak překvapující, že Android má celé prostředí určené k obsluze těchto varování, kterým se obecně říká upozornění a která jsou také tématem této kapitoly.

Mnoho zařízení, která využívají systém Android, ne-li většina, jsou telefony. Proto je samozřejmé nejenom to, že uživatelé očekávají, že v systému Android budou moci volat a přijímat hovory, ale také to, že jim s tím můžete pomoci – pokud budete chtít. Ať už je důvod jakýkoliv, Android disponuje prostředky, které vám umožní manipulovat s funkcí telefonu stejné jako s ostatními komponenty zařízení.

Kapitola 35 se věnuje vývojovým nástrojům. Android SDK je více než pouhá knihovna tříd jazyka Jáva a API volání. Největší důraz se v tomto ohledu kladl na vývoj zásuvného modulu pro prostředí Eclipse, aby bylo možné integrovat vývoj aplikací pro Android do tohoto IDE. V druhém sledu se pak kladl důraz na ekvivalenty tohoto modulu, které je možné používat s dalšími IDE, nebo dokonce bez jejich asistence.

Kapitola 36 se věnuje obsluze různých velikostí obrazovky. Na podzim roku 2009 se začala objevovat na trhu zařízení s velmi odlišnými parametry rozlišení a velikosti obrazovky, maličkými QVGA (240x320 pixelů) displeji počínaje a mnohem většími WVGA (480x800 pixelů) displeji konče. Do verze systému Android 1.6 a výše, přidány nové schopnosti pro lepší podporu různých velikostí a rozlišení obrazovky.

Android se bude po několik následujících let velmi rychle vyvíjet
. V současné době je systém zaměřený především na telefony, brzy se budete moci setkat s netbooky, tablety, přehrávači médií apod., které budou také založené na platformě Android. 38-má kapitola je věnovaná množství různých oblastí, v nichž byste se mohli v budoucnosti při aktualizacích systému setkat s nějakými problémy, a najdete v ní několik doporučení, jak se s nimi vyrovnat.

Je jasné, že v rámci jedné knihy nelze pokrýt všechna témata týkající se vývoje aplikací pro systém Android. Čtenýři se budou hodit i jiné informace než pouze ty, které najdete v hlavním zdroji informací – v dokumentaci prostředí Android SDK. Dobrý způsob hledání tutoriálů využití tříd systému představuje zadání názvu systému společně s názvem příslušné třídy do internetového vyhledávače.

Systém Android je nový fenomén – zařízení využívající tuto platformu se poprvé objevila na scéně koncem roku 2008 – ale je pravděpodobné, že v budoucnosti bude díky velikosti a poli působnosti aliance Open Handset Aliance rychle nabývat na významu.

Jste-li fanouškem mobilních technologií, je-li vám blízké programování v Jávě a chcete tyto dvě oblasti spojit a využít, můžete s knihou začít vyvíjet aplikace pro dynamicky se rozvíjející mobilní operační systém Android od Googlu.

doc. Arnošt Katolický,
9. května 2011.
 

 

doc.aka(@)akamonitor.cz