Android za hranicemi Hello World Pavel Petřek CTO Praha, 18. října 2009
Kdo je kdo Pavel Petřek Vývojář, entusiasta přes chytré telefony, přednášející Spoluzakladatel Inmite Inmite 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
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
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
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
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
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
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
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
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
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
Neobtěžujte uživatele dialogy Pro jednoduché sdělení používejte Toasty http://demo.inmite.eu/webexpo2009/webexpo-android-toast.avi 14 z 31
Služba na pozadí? Interagujte z rozmyslem Notifikace z rozmyslem 15 z 31
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
Ukládejte maximum UI do XML 18 z 31
Myslete na Landscape 19 z 31
Animace layoutu - coolness za hubičku http://demo.inmite.eu/webexpo2009/webexpo-android-layout-animation.avi 22 z 31
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
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
Život na baterie ceny za běh 1 25 z 31
Ž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
Ž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
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
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
Otázky? 30 z 31