1. Android Nálevna – začínáme s Androidem
Praha, 8. listopadu 2010
Pavel Petřek
CTO
2. Android Nálevna
2 z 34
Kdo je kdo
Pavel Petřek
Vývojář, entusiasta přes chytré
telefony, přednášející
Inmite
Vývoj pro chytré telefony
(Android: Corkbin, OnTheRoad, SMS
jízdenka, DMS a další)
Chytré webové aplikace na Google APIs
Android
Full-stack
3. Android Nálevna
3 z 34
aDevCamp
Co: Android konference
Kdy: Jaro 2011
Kde: v Praze
sledujte: twitter.com/aDevCamp
4. Android Nálevna
4 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k Integraci
DEMO
Otázky
5. Android Nálevna
5 z 34
Jak na vývoj
JDK 5 / 6
Eclipse 3.4+
ADT plugin
http://developer.android.com/
→ →SDK Installing
Stáhnout„Android SDK“ z
http://developer.android.com/ →
→SDK Download
PATH=%PATH%;C:ASDKtools
'SDK Manager.exe' (stáhnout
balíčky)
Vytvořit virtual device
7. Android Nálevna
7 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
10. Android Nálevna
10 z 34
Stavební kameny vývoje Android aplikací
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ř)
Každá komponenta má systémem řízený životní cyklus (managed lifecycle)
Slovní spojení„ukončení aplikace“ vývojáře v základu nezajímá
11. Android Nálevna
11 z 34
Stavební kameny vývoje Android aplikací 2
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
12. Android Nálevna
12 z 34
API – co a jak
Android API nepokrývá zcela Java SE 5.0 API
Volitelné fičury
Location-Based Services
Media APIs
3D Graphics s OpenGL ES
a další
Manažery pro přístup k fičurám
activity, window, content, resource,
location, notification, telephone, ...
LocationManager lm = (LocationManager)
Context.getSystemService(Context.LOCATION_SERVICE);
13. Android Nálevna
13 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
14. Android Nálevna
14 z 34
Životní cyklus aktivity
public class MyTestActivity extends Activity
{
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onResume() {
super.onStart();
// Napr. pust naslouchani GPS
}
@Override
protected void onPause() {
super.onPause();
// Napr. zastav GPS
}
}
15. Android Nálevna
15 z 34
Uživatelské menu
Klávesa MENU na každém zařízení s Androidem
public class MyTestActivity extends Activity {
public static final int MENU_BROWSER = 1;
// ... more stuff ...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_BROWSER, 0, "Browser");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (item.getItemId() == MENU_BROWSER) {
// Do something....
}
return super.onMenuItemSelected(featureId, item);
}
}
16. Android Nálevna
16 z 34
Dlouhý dotyk
Pro vyvolání extra menu na položkách použijete dlouhý dotyk
public class MyTestActivity extends Activity {
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
// init view
Button button =
(Button) findViewById(
R.id.btn_button1);
button.setLongClickable(true);
button.setOnLongClickListener(new
View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// Do something
return true;
}
});
}
}
17. Android Nálevna
17 z 34
Neobtěžujte uživatele dialogy
Pro jednoduché sdělení používejte Toasty
public class ContactActivity extends Activity {
// a lot of stuff here
public void saveDone() {
Toast.makeText(this,
"Contact created",
Toast.LENGTH_SHORT).show();
}
}
18. Android Nálevna
18 z 34
Neobtěžujte uživatele dialogy
Pro jednoduché sdělení používejte Toasty
public class ContactActivity extends Activity {
// a lot of stuff here
public void saveDone() {
Toast.makeText(this,
"Contact created",
Toast.LENGTH_SHORT).show();
}
}
19. Android Nálevna
19 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
20. Android Nálevna
20 z 34
Views – co máme v základu?
Layouty
RelativeLayout, LinearLayout, ...
UI komponenty
TextView, CheckBox, Spinner, Date/Time
picker, Button, RadioButton, ListView, ...
Themes
styles-set pro aplikaci
9-patch image resource
26. Android Nálevna
26 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
27. Android Nálevna
27 z 34
Jeden balíček pro všechny telefony
Konfigurace podoby, chování, jazyka, adres serverů,
defaultních míst na mapě, aj. v aplikaci ?
Odpověď je suffix v názvu adresáře konfigurace
Skládá se layout-vlastnost1-vlastnost2 (např. layout-lang-cs-
320x480)
28. Android Nálevna
28 z 34
Dobrá rada na závěr - používejte již hotové aplikace
Intenty + hotové dostupné aplikace = mocná zbraň
Dvě oblasti využití
Interní aplikace – vždy dostupné
Externí aplikace – nutno testovat dostupnost, případně
nabídnout 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);
}
}
// more stuff
public static boolean isIntentAvailable(String action) {
List list = context.getPackageManager()
.queryIntentActivities(new Intent(action),
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
29. Android Nálevna
29 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
31. Android Nálevna
31 z 34
Zdroje
http://www.android.com/
http://groups.google.com/
http://www.androidsnippets.org/
http://www.stackoverflow.com/
http://www.svetandroida.cz/
http://www.google.com/
32. Android Nálevna
32 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
33. Android Nálevna
33 z 34
Otázky?
Inzerce: Jste nadšený(-á) programátor(-ka) s nohama na zemi? Vyvíjíte pro
chytré telefony (Android, iPhone, ...) a chce se naučit ještě více? Ozvěte
se nám na chci.job@inmite.eu, hledáme schopné mozky!
34. Android Nálevna
34 z 34
Děkuji za Váš čas
Pavel Petřek
pavel@inmite.eu http://www.inmite.eu/ http://twitter.com/pavelpetrek
a nezapomeňte: aDevCamp
v Praze již na jaře 2011
twitter.com/aDevCamp