1. díl - Android programování - Úvod do Android programování

Java Android Android programování - Úvod do Android programování

V této sérii se naučíme vyvíjet aplikace pro platformu Android. Začneme na úplných základech a postupně se propracujeme k vytváření aplikací a jejich nasazování na Google Play. Jednotlivé díly na sebe navazují a proto doporučuji prostudovat si je postupně. Je předpokládána alespoň základní znalost programování v jakémkoliv jazyce.

V tomto díle se podíváme na základy Androidu a na principy a zásady vývoje aplikací. Bude se jednat spíše o nudnou, avšak potřebnou teorii.

1 Android

Android

Android je všude. V srpnu 2014 obsahoval trh s chytrými telefony neuvěřitelných 84,7 % zařízení, na kterých běží Android. Toto číslo neustále stoupá na úkor ostatních operačních systémů pro mobilní zařízení (iOS, Windows Phone, BlackBerry OS a další). Android je tedy jeden z nejrychleji rostoucích OS, což dokazuje i rychlost, s jakou vychází nové verze tohoto systému:

1.5 (Cupcake) - Linuxové jádro 2.6.27 30. dubna 2009
1.6 (Donut) - Linuxové jádro 2.6.29 15. září 2009
2.0/2.1 (Eclair) - Linuxové jádro 2.6.29 26. října 2009
2.2 (Froyo)-Linuxové jádro 2.6.32 20. května 2010
2.3/2.4 (Gingerbread) - Linuxové Jádro 2.6.35 6. prosince 2010
3.0/3.1/3.2 (Honeycomb) 22. února 2011
4.0–4.0.4 (Ice Cream Sandwich) 19. října 2011
4.1/4.2/4.3 (Jelly Bean) 9. července 2012
4.4 (KitKat) 3. září 2013
5.0 (Lollipop) 15.10. 2014

Pokud se ale bavíme o Android zařízeních, nemusí se vždy jednat o chytrý telefon. Android najdeme i na tabletech, televizích, set-top boxech, Google TV a hodinkách. Dokonce se za nějaký čas stane standardem i automobil se systémem "Android auto", viz tento článek: http://www.svetandroida.cz/…uto-2-201409

My se ovšem budeme zaměřovat na programování aplikací zejména pro chytré telefony.

2 Principy a zásady vývoje aplikací

Než se budeme moci pustit do samotného programování, musíme si ujasnit několik základních principů a zásad pro vývoj aplikací, aneb z čeho mít radost a na co si dát pozor.

2.1 Obrazovka

Pokud vytváříme aplikaci určenou primárně pro chytré telefony, musíme brát v potaz to, že mají malé obrazovky. I když současné zařízení mají mnohdy krásné HD a full HD rozlišení, na které jsme zvyklí z našich klasických počítačů, jejich fyzická velikost je od 3" "prcků" po ty největší 6" "plácačky". Obecně však platí, že nejpoužívanější velikosti jsou 4", 4,5", 4,7" a 5".

Vstupy a výstupy

Fyzická velikost obrazovek přináší několik problémů, jak v uživatelském vstupu, tak v zobrazování výstupů.

Tlačítko s pevným rozlišením v px bude krásně použitelné na 4,5" zařízení ale na 10" tabletu bude takřka nemožné ho použít. Nemluvě o tom, že někteří uživatelé mají větší prsty než jiní a proto by ovládání příliš malých tlačítek nebylo pro tyto uživatele zrovna pohodlné.

Dalším problémem je text. Většina telefonů používá virtuální klávesnice, na kterých se sice píše velmi pohodlně, ale zakrývají část obrazovky, v některých případech dokonce celou obrazovku, například při vertikálním přetočení zařízení. Proto bychom se měli co nejvíce vyhnout této události.

Musíme přemýšlet o alternativách. Můžeme použít například tlačítka, které si naprogramujeme podle potřeb tak, abychom co nejvíce usnadnili a zjednodušili uživateli zadávání informací. Pokud budeme například chtít vložit datum, použijeme kalendář, nikoliv "ruční" psaní. Nebo můžeme chtít zadat číslo, pokud to bude v přijatelných jednotkách, sáhneme raději na 2 tlačítka. Jedním budeme hodnotu o 1 zvedat a druhým o 1 snižovat.

Uživatelské rozhraní

Také je potřeba brát v potaz to, jak mobil v rukou držíme, od toho můžeme odvodit nejpohodlnější polohu tlačítek a celkově přizpůsobit uživatelské rozhraní tak, aby bylo co nejpříjemnější nejen vizuálně, ale i tak, aby se příjemně ovládalo. Vykreslenou část aplikace tedy nemůžeme brát jako formulářové okno, které známe z klasického programování pro PC, ale jako interaktivní rozhraní, se kterým je třeba komunikovat fyzickým kontaktem s obrazovkou. Například pokud vytváříme jednoduché menu nějaké aplikace, snažíme se centrovat tlačítka tak, aby první bylo ve středu obrazovky a další pod ním. Tím zabereme plochu od středu dolů, pokud uživatel bude držet mobilní telefon v ruce, nejsnadnější přístup má právě v těchto místech.

Orientace obrazovky

Jak jistě všichni víte, mobilní zařízení obvykle mění orientaci obrazovky buď na výšku, nebo na šířku, podle natočení zařízení. Automatické natáčení můžeme vypnout, pokud tak neučiníme, musíme si pohlídat, aby aplikace vypadala tak jak má i po změně orientace. Nenechme se ale zmást. Ne vždy je dobré používat změny orientace. Například když budeme vytvářet kalkulačku, je zcela zbytečné se zabývat funkcí pro změnu orientace.

2.2 HW

Výkon

V dnešních dobách není nic neobvyklého mít v kapse dělo s čtyřmi nebo dokonce osmi jádry o taktu klidně 2,4 GHz s výkonným grafickým čipem, který ocení jistě všichni náruživý hráči her s velmi pěknou grafikou a s dokonalými detaily. Navzdory tomu si stále musíme uvědomovat, že aplikaci vytváříme právě pro chytré telefony. Ne všechny jsou tak výkonné, většina zařízení s Androidem je z cenové relace od 2 do 4 tisíc Kč a tím pádem mají mnohem nižší výkon. Uživatelé od obyčejné aplikace vyžadují zejména to, aby po jejím spuštění telefon i nadále fungoval jako telefon.

Může se totiž stát, že aplikace vytěžuje procesor telefonu natolik, že uživatel není schopen přijímat hovory, aplikace nejde minimalizovat na pozadí nebo dokonce zamrzává.

Pokud aplikace špatně uvolňuje alokovanou paměť, může dokonce dojít k vážným problémům. Na toto si musíme dát pozor zejména při používání animací, je dost častou chybou u nového Android programátora, že se snaží používat animace v příliš velké míře. Více si o tom prozradíme až v následujících dílech.

V jednoduchých aplikacích, které v těchto textech budeme vytvářet, můžeme narazit na několik problémů. Například na zbytečné používání tzv. old school AnimationDrawable animací, konkrétně jde o snahu nahrát několik snímků do paměti a následně je promítat jako animaci. Tento způsob řešení hodně vytěžuje paměť. Další častou chybou je používání textur se zbytečně obrovským rozlišením. Všeho moc škodí a v jednoduchosti je síla, v našem případě výkon.

Úložiště

V době kdy píši tyto texty, vlastní zhruba 60% majitelů chytrých telefonů zařízení v hodnotě kolem 4 000 Kč. V současné době je u takového zařízení normální mít k instalaci aplikací interní úložný prostor od 2 do 4 GB.

Android je totiž primárně nastaven tak, aby instaloval aplikace pouze do interní paměti. Podívejme se například na hru The Bard's Tale, ta ve své "dokonalejší" verzi má bezmála 4 GB. Takovou aplikaci si do svého telefonu stáhne jen málo uživatelů a ještě méně uživatelů ji rozchodí bez problémů, týkajících se nedostatečného výkonu.

Pro instalovaní aplikací na SD kartu, tedy externí paměť, sice postupy existují, ale většinou vyžadují zvýšené práva, k tomu je potřeba tzv. "rootnutí" telefonu a tím uživatel v drtivé většině případů ztrácí záruku anebo se jedná o složitější postupy, které nezvládne obyčejný uživatel a ne vždy fungují na všech zařízeních.

Ve výsledku ale stále platí, že čím je aplikace menší, tím je pro uživatele pohodlnější.

2.3 Další vybavení chytrých telefonů

Připojení k internetu

Chytré telefony jsou vybaveny k přístupu do sítě pomocí Wi-Fi a 3G sítě. Stále více a více lidí používá svůj mobilní telefon jako přístupový bod k internetu. To nám přináší obrovské možnosti využití internetu.

V aplikaci můžeme použít například vestavěný widget webového prohlížeče nebo ukládání či načítání dat z různých serverů. Můžeme tedy využívat připojení k internetu dle libosti.

Kamera a mikrofon

Chytrý telefon nám umožňuje přehrávat a pořizovat videa, fotografie či hudební soubory. Do aplikace můžeme zahrnout například nahrávání zvukových záznamů nebo fotoaparát. Můžeme pořizovat videa popř. fotografie a dále s nimi pracovat.

Gyroskopy a GPS

V současné době je standardem, že chytrý telefon obsahuje gyroskopy popř. akcelerometry a GPS. Za pomocí GPS nebo triangulace pomocí sítě můžeme zjistit informace o zeměpisné poloze a načítat různé mapy nebo sledovat trasu zařízení. K využití triangulace pomocí sítě je třeba znát polohu vysílačů mobilní sítě anebo sítě Wi-Fi. Databázi, ve které takové informace jsou, vytváří například společnost Google.

Využít by se daly i gyroskopy, pomocí kterých zjistíme informace o náklonu telefonu.

Funkce mobilního telefonu

Pokud vytváříme aplikace pro chytré telefony, je jasné, že máme přístup k provádění hovorů a posílání a přijímání SMS. V jednom z následujících dílů si vytvoříme aplikaci pro provádění hovorů.

2.4 Výhody

Jak už jsem se zmínil, nespornou výhodou je kombinace "Mobilní přenosné zařízení + internet".

Aplikace běžící na telefonu podléhají pevně daným pravidlům, které zajišťují například to, aby nedocházelo ke konfliktům se samotným systémem.

Aplikace jsou psané v poměrně rozšířeném jazyku Java. Jedná se o jazyk, který je multiplatformní. O Javě obecně platí, že programy napsané v tomto jazyce tedy běží na různých zařízeních, ke svému správnému fungování potřebují, aby byl nainstalován balík Java Runtime Environment (JRE), jedná se o balík určený pro koncové uživatele. Další balíček je Java Development Kit (JDK), ten je určený pro vývojáře.

Pokud někdo má strach z přechodu na jazyk Java, není k tomu vůbec důvod. Před tím, než jsem se začal věnovat vývoji pro Android jsem měl tu čest pouze s C++ a C#. Přechod na Javu je tak nenápadný, že si ani nevšimnete, že píšete v jiném jazyce.

Zdroje


 

  Aktivity (1)

Článek pro vás napsal Jiří Hlavík
Avatar
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS

Jak se ti líbí článek?
Celkem (23 hlasů) :
4.869564.869564.869564.869564.86956


 



 

 

Komentáře
Zobrazit starší komentáře (1)

Avatar
iqbigbang
Člen
Avatar
iqbigbang:

a

Editováno 23.8.2015 20:07
Odpovědět 23.8.2015 20:06
Say me, why not?
Avatar
Patrik
Člen
Avatar
Patrik:

Ahoj :)
Čo znamená "základní znalost programování" ??
Stačí ak som prešiel základy oop tu na itnetwork, celé oop alebo programovanie v java swingu ???

Odpovědět 12. května 18:50
Nikdy nedovolím aby mi škola bránila v ceste za vzdelaním (Mark Twain).
Avatar
Jiří Hlavík
Redaktor
Avatar
Odpovídá na Patrik
Jiří Hlavík:

Řekl bych, že stačí vědět co je to cyklus a proměnná a jak fungují základní programátorské konstrukce :D Co se týká OOP tak na něj není kladen důraz... Jde hlavně o to si vyzkoušet co a jak bude fungovat.

 
Odpovědět 24. května 13:49
Avatar
Patrik
Člen
Avatar
Odpovídá na Jiří Hlavík
Patrik:

Aha dík :) myslel som že to bude zložitejšie :D

Odpovědět 26. května 15:35
Nikdy nedovolím aby mi škola bránila v ceste za vzdelaním (Mark Twain).
Avatar
hricov.martin:

Chcel by som sa spytat v akom programovaciom jazyku musim vediet programovat ak chcem programovat aplikacie pre Android poprípade hry pre Android?

 
Odpovědět 24. července 19:15
Avatar
Odpovídá na hricov.martin
Michal Haňáček:

Java, C#, C++, object pascal ...

Odpovědět 24. července 19:30
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovědět 24. července 19:31
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
John Sníh
Člen
Avatar
John Sníh:

Zdravíčko. Nejprve bych chtěl poděkovat za skvělé tutoriály o programování. Máte všichni mé velké díky. Naučil jsem se základy konstrukce Java a teď přecházím na OOP. Chtěl bych primárně vytvářet hry v Android studiu, ale nikde jsem zde nenašel nějaký tutoriál ohledně toho. Nemyslím Šibenici, ale jednoduché 2D hry apod.

 
Odpovědět 6. srpna 12:28
Avatar
Odpovídá na Jiří Hlavík
Pavel Habžanský:

Chápu dobře, že programování Javy pro desktop je prakticky stejný jako pro Android? Myslím z hlediska kodu. Dělal jsem Javu pro PC, ale budu teď přecházet na Android, tak jen abych měl představu

Odpovědět 17. srpna 17:33
Čím větší výzva, tím větší zkušenost
Avatar
Jiří Hlavík
Redaktor
Avatar
Jiří Hlavík:

John Sníh:
Ahoj,
úplné basic základy týkající se animací, pohybů a deformací objektů jako takových (myslím různé obrázky v imageView atd.) jsou obsaženy v některém z dílů týkající se šibenice ;)
Od toho se dá slušně odrazit. Jestli ti stačí nějaká taková hra..

Pokud chceš složitější hry, tak doporučuji kouknout se třeba na unity. V tom se dá udělat hodně moc věcí.

O žádném návodu tady na itnetwork týkající se výroby nějaké gamesy v javě pro android nevím.
Sám jsem zkoušel v tomhle okruhu jen lehce oťukat objekty, různé přetahovací hry atd.. (2048 atd)

Jinak v Javě jsem dělal gamesu jen na desktop.. Pomocí klasické game loop a hrubého vykreslování :D
Nezkoušel jsem v androidu, tam bude určitě třeba dát pozor na optimalizaci a moc si nezahrávat s výkonem :D

Pavel Habžanský:
No.. logika programování je mimochodem stejná téměř všude.. Když budeš psát pro android tak tam jsou samozřejmě rozdíly ovšem nic zásadního..
Jestli jsi zvyklý psát pro desktop apky za použití OOP, určitě nebudeš mít žádný problém..

 
Odpovědět 18. srpna 18:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 11. Zobrazit vše