Android – za hranicemi „Hello World“ Pavel Petřek CTO Praha, 18. října 2009
Android - za hranicemi "Hello world"
Kdo je kdo
Pavel Petřek
Spoluzakladatel Inmite
Inmite
Vývojář, entusiasta přes chytré telefony, přednášející
Vývoj pro chytré telefony (Android: OnTheRoad, Lokola, SMS jízdenka a další) Chytré webové aplikace na Google APIs
Android
Full-stack
2 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
3 z 31
Android - za hranicemi "Hello world"
Stavební kameny vývoje Android aplikací 1
APK – jar s pevnou podstrukturou s AndroidManifest.xml
Komponenty – sdílejí zdroje, databáze, procesy, ...
Activities - komponenty UI odpovídající jednomu formuláři / obrazovce
Services - služba bez interakce (UI) běžící na pozadí
Content providers - cesta jak sdílet data ven z aplikace
Broadcast Intent Receivers - naslouchadlo vzkazů z vnějšku (i zevnitř)
5 z 31
Android - za hranicemi "Hello world"
Stavební kameny vývoje Android aplikací 2
Každá komponenta má systémem řízený životní cyklus (managed lifecycle)
Slovní spojení „ukončení aplikace“ vývojáře v základu nezajímá
Intent (komunikační balíček) + Intent filtry Intent intent = new Intent(Intent.ACTION_VIEW, "http://www.youtube.com/"); startActivity(intent);
Přehrát
Sdílet
6 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
7 z 31
Android - za hranicemi "Hello world"
Linky jako Intenty
Každý webový link je Intent s akcí Intent.ACTION_VIEW
Mapování na různá schémata, servery, cesty
Dobrý doplněk již hotové webové aplikace
Příklady:
market://search?q=pname:eu.inmite.apps.smsjizdenka
http://zxing.appspot.com/scan
8 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
9 z 31
Android - za hranicemi "Hello world"
Používejte již hotové aplikace
Intenty + hotové dostupné aplikace = mocná zbraň
Nemáte potřebnou aplikaci? Nabídněte její instalaci if (isIntentAvailable("com.google.SCAN")) { Intent intent = new Intent("com.google.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); } else { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.scan")); startActivity(intent); } ... public static boolean isIntentAvailable(String action) { List list = context.getPackageManager() .queryIntentActivities(new Intent(action), PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } pseudo-package pro zjednodušení
11 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny vývoje na Androidu
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky 12 z 31
Android - za hranicemi "Hello world"
Pozor na dvojí druh focusu
Android rozlišuje dva druhy focusu – touch / trackball
http://demo.inmite.eu/webexpo2009/webexpo-android-focus.avi
13 z 31
Android - za hranicemi "Hello world"
Neobtěžujte uživatele dialogy
Pro jednoduché sdělení používejte Toasty
http://demo.inmite.eu/webexpo2009/webexpo-android-toast.avi
14 z 31
Android - za hranicemi "Hello world"
Služba na pozadí? Interagujte z rozmyslem
Notifikace z rozmyslem
15 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
17 z 31
Android - za hranicemi "Hello world"
Ukládejte maximum UI do XML
18 z 31
Android - za hranicemi "Hello world"
Myslete na Landscape
19 z 31
Android - za hranicemi "Hello world"
Animace layoutu - coolness za hubičku
http://demo.inmite.eu/webexpo2009/webexpo-android-layout-animation.avi
22 z 31
Android - za hranicemi "Hello world"
Jeden balíček pro všechny telefony
Konfigurace podoby, chování, jazyka, adres serverů, defaultních míst na mapě, aj. v jedné aplikaci? Odpověď je suffix v názvu adresáře konfigurace Skládá se layout-vlastnost1-vlastnost2 (např. layout-langcs-320x480)
23 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
24 z 31
Android - za hranicemi "Hello world"
Život na baterie – ceny za běh 1
25 z 31
Android - za hranicemi "Hello world"
Život na baterie – ceny za běh 2
Činnost Vaší aplikace znamená zatížení několika prvků
Nejdražší, co můžete dělat?
Neuvážené operace na pozadí
Přenášet velká data na pomalém připojení
Zapínat GPS, když ji nepotřebujete
26 z 31
Android - za hranicemi "Hello world"
Život na baterie – co dělat lépe
Sdružujte periodické operace na pozadí
Dbejte na to, jak přenášíte data (technologie, komprese)
Promyslete nakládání se zámky
Stačí Vám hrubá pozice z CELL ID? Neaktivujte GPS
Kódujte s rozmyslem, VM není zadarmo
27 z 31
Android - za hranicemi "Hello world"
Zdroje
http://www.android.com/
http://groups.google.com/
http://code.google.com/events/io/
http://www.mujandroid.cz/
http://www.google.com/
28 z 31
Android - za hranicemi "Hello world"
Agenda
Úvod
Nástroje a stavební kameny aplikací na Androidu
Browser a jeho interakce se systémem
Integrujte, opakovaně využívejte, ale s rozmyslem
Jak na ovládání aplikace
Dostaňte maximum UI do XML konfigurace
Život na baterie
Otázky
29 z 31
Android - za hranicemi "Hello world"
Otázky?
30 z 31