Začínáme s vývojem pro Android



Podobné dokumenty
Android za hranicemi Hello World

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

Android 100% Java telefon. Petr Musil

ANDROID. Ing. Ladislav Pešička

JAVA Android Java, letní semestr

Příklad zobrazení toastu s vlastním designem

4. UŽIVATELSKÉ ROZHRANÍ

Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování.

Obsah. Menu. ListView ListActivity Adapter. Ikonkové Rozšířené Submenu Kontextové. BaseAdapter ArrayAdapter CursorAdapter SimpleCursorAdapter 11/29/11

Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText

3. ŽIVOTNÍ CYKLUS ACTIVITY

První kapitola úvod do problematiky

Klient Stagu pro Android

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 11. Přednáška. Broadcast receiver Timer Alarmy Widgety

JAVA. Real-Time Java

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

JAVA. Real-Time Java

KAPITOLA 7. Widgety nabídek. V této kapitole:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Diplomová práce. Rozvrh hodin pro

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Práce na pozadí. Služby. Notifikace

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ KATEDRA TECHNOLOGIÍ A MĚŘENÍ BAKALÁŘSKÁ PRÁCE

KMI / TMA Tvorba mobilních aplikací

20. Projekt Domácí mediotéka

5. přednáška. Stylování a themování Themování Android Interface Definition Language Data Sdílení dat 11/29/11

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Algoritmizace a programování

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA. Tvorba mobilních aplikací. 3. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Programování v Javě I. Únor 2009

1. Téma 12 - Textové soubory a výjimky

Mobilní malware na platformě Android Přednáška 1. Ing. Milan Oulehla

Java a XML. 10/26/09 1/7 Java a XML

Programování v Javě I. Leden 2008

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ Přednáška. PreferenceActivity. Intenty (pokročilé) Vývojářské nástroje

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Vytváření a použití knihoven tříd

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Úvod do programovacích jazyků (Java)

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ

5. LISTVIEW BI-AND. Programování pro operační systém Android (BI-AND) (c) Autor a garant: M. Havryluk, Spolupráce: M. Balík, O. Kroupa, M.

KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Typický prvek kolekce pro české řazení

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE. Parametry okolních buněk

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Michal Podzimek

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

UJO Framework. revoluční architektura beans. verze

GUI v Javě a událostmi řízené programování

GUI. Systémová integrace pro desktopové aplikace

Mobilní aplikace pro podporu učení

Android. Programujeme pro. Jiří Vávrů, Miroslav Ujbányai. DRUHÉ, rozší řené v ydání

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

GUI v Javě a událostmi řízené programování

GUI v Javě a událostmi řízené programování

Pedagogická fakulta. Katedra informatiky. Tvorba responzivních mobilních aplikací v Android Studiu

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Dědičnost (inheritance)

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA. Katedra elektrotechniky a informatiky. Tvorba uživatelského rozhraní a komunikace pro Android tablet

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA EKONOMICKÁ

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Vývoj SW pro mobilní zařízení s Androidem. Ing. Jan Kaláb, IPEX a.s.,

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

České vysoké učení technické v Praze. Fakulta Elektrotechniky XD39NUR. Semestrální práce. Ovládání videokonferencí pomocí mobilního telefonu

Zpřístupnění mobilních telefonů se systémem Android pro nevidomé uživatele

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Mobilní aplikace pro vyhledání nejbližší recyklační stanice Roman Holomek

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

typová konverze typová inference

ios Cvičení RSS čtečka

Středoškolská odborná činnost. Baby-friendly Map

Využití ArcGIS Runtime SDK for Android při vývoji mapových aplikací

Michal Augustýn Microsoft Most Valuable Professional

Enterprise Java Beans 3.0

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Použití inteligentních značek s informačními službami

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Teoretické minimum z PJV

Změna vlastností kódem

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Chain of responsibility

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

MOBILNÍ OVLÁDAČ PC (MOBIL JAKO VZDÁLENÉ OVLÁDÁNÍ) MOBILE CONTROLLER FOR PC (MOBILE PHONE AS REMOTE CONTROLLER)

Sem vložte zadání Vaší práce.

Transkript:

Pavel Petřek CTO Praha, 14. dubna 2010

Kdo je kdo Pavel Petřek Vývojář, přednášející, entusiasta světa chytrých telefonů (a velký jedlík) Spoluzakladatel Inmite Inmite Vývoj pro chytré telefony (Android: PošliMěDál, WinStrom, OnTheRoad, Lokola, SMS jízdenka a další) Chytré webové aplikace na Google APIs 2 z 25

Agenda Trocha omáčky před praktickou prací (15 minut) Cvičení 1 HelloWorld (15 minut) Cvičení 2 Pošli si SMS (25 minut) Cvičení 3 Jak vypadat dobře na G1 i na Nexusu (10 minut) Poznámka: v průběhu cvičení se nebojte hlásit 3 z 25

Android vespod i nahoře 4 z 25

Komponenty pro vývoj Android aplikací APK jar s pevnou podstrukturou s AndroidManifest.xml Komponenty v rámci aplikace sdílejí zdroje, databáze, procesy,... Z čeho stavíme Activities - komponenty UI odpovídající jednomu formuláři / obrazovce Services - služba bez UI běžící dlouhodobě 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 25

Design uživatelských aplikací MVC pattern nehledejte, ale inspirujte se jím Aktivity se vzájemně volají Aktivita má své View strom UI komponent (layout, ovládácí prvky) Aktivita na prvky View věší Listenery Aktivita se registruje k systémovým službám 6 z 25

Ž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 } 7 z 25

Reklamní vsuvka jsi šikovný studentík a rád bys zaprogramoval pro Androida? chtěl bys za to i nějaký peníz? tak neváhej a napiš na jobs@m-atelier.cz 8 z 25

Cvičení 1 Hello world Nový projekt New Android Project Název Eclipse projektu Build Target, na kterém vyvíjíte ( Android 1.6 ) Název aplikace pro uživatele Unikátní java package Název třídy Vašeho prvního potomka Activity deklarovaný minimální level SDK ideálně odpovídající Build Targetu 9 z 25

Cvičení 1 Hello world Přidej živé tlačítko, které mění obsah generovaného TextView 10 z 25

Cvičení 1 Hello world Dodej deklaraci tlačítka a přiřadíme ID textovému poli <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:id="@+id/textview1" /> <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button1"></button> </LinearLayout> 11 z 25

Cvičení 1 Hello world Pověs click handler na tlačítko public class TestActivity extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } } Button b1 = (Button) findviewbyid(r.id.button01); b1.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { TextView v1 = (TextView)findViewById(R.id.TextView1); v1.settext(v1.gettext() + "\noh hi! You here?"); } }); Dodej popisek mezi resource texty <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World, TestActivity!</string> <string name="app_name">test1</string> <string name="button1">reply</string> </resources> 12 z 25

Cvičení 2 Pošli si SMS Import Existing projects into Workspace cesta k PosliSiSms v adresáři cviceni2 spusť FAIL (a proč?) 13 z 25

Cvičení 2 Pošli si SMS Nastav správná oprávnění Odešli sms Zobraz Toast k log message Obsluž delivery report Kromě jména zobrazuj v seznamu i číslo Nechej aplikaci i přijímat SMS 14 z 25

Cvičení 2 Pošli si SMS Nastav správná oprávnění <uses-permission android:name="android.permission.send_sms"> </uses-permission> <uses-permission android:name="android.permission.read_contacts"> </uses-permission> Odešli SMS SmsManager.getDefault().sendTextMessage(nr, null, body, null, null); Zobraz Toast k log message private void logtext(string s) { tvlog.settext(s + "\n" + tvlog.gettext()); Toast.makeText(this, s, Toast.LENGTH_SHORT).show(); } 15 z 25

Cvičení 2 Pošli si SMS Obsluž sent a delivery report PendingIntent sentintent = PendingIntent.getBroadcast(PosliSMS.this, 0, new Intent("BC_SENT"), 0); PendingIntent deliveryintent = PendingIntent.getBroadcast(PosliSMS.this, 0, new Intent("BC_DELIVERED"), 0); SmsManager.getDefault().sendTextMessage(nr, null, body, sentintent, deliveryintent); Kromě jména zobrazuj v seznamu i číslo @Override public void bindview(view view, Context ctx, Cursor curs) { if (view instanceof RelativeLayout) { RelativeLayout t = (RelativeLayout) view; ((TextView) (t.findviewbyid(r.id.tvname))).settext(curs.getstring(1)); ((TextView) (t.findviewbyid(r.id.tvnumber))).settext(curs.getstring(0)); } else if (view instanceof TextView) { ((TextView) view).settext(curs.getstring(1)); } } @Override public View getdropdownview(int position, View convertview, ViewGroup parent) { RelativeLayout t = (RelativeLayout) inflater.inflate( R.layout.li, parent, false); Cursor c = getcursor(); c.movetoposition(position); ((TextView) (t.findviewbyid(r.id.tvname))).settext(c.getstring(1)); ((TextView) (t.findviewbyid(r.id.tvnumber))).settext(c.getstring(0)); return t; } 16 z 25

Cvičení 2 Pošli si SMS Nechej aplikaci také přijímat SMS <receiver android:name="smsreceiver"> <intent-filter> <action android:name="android.provider.telephony.sms_received"></action> </intent-filter> </receiver>... <uses-permission android:name="android.permission.receive_sms"></uses-permission> 17 z 25

Cvičení 3 Jak vypadat dobře na G1 i na Nexusu Vyjdeme z produktu cvičení 3 pokud jsme nestihli, smažeme a v adresáři cviceni3 nalezneme dotažené (znovu importujeme) 18 z 25

Cvičení 3 Jak vypadat dobře na G1 i na Nexusu Připrav přispůsobený pohled pro landscape Připrav detailnější grafiku pro vyšší rozlišení telefonů Lokalizuj 19 z 25

Cvičení 3 Jak vypadat dobře na G1 i na Nexusu Připrav přizpůsobený pohled pro landscape...... <ImageView android:layout_height="wrap_content" android:id="@+id/logol" android:src="@drawable/czjug_logo" android:layout_margin="4dip" android:layout_width="wrap_content" android:layout_alignparentleft="true" android:layout_centervertical="true"/> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_toleftof="@id/logor" android:layout_torightof="@id/logol"> 20 z 25

Cvičení 3 Jak vypadat dobře na G1 i na Nexusu Připrav detailnější grafiku pro vyšší rozlišení telefonů 21 z 25

Cvičení 3 Jak vypadat dobře na G1 i na Nexusu Lokalizuj <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">posli sms</string> <string name="send">odeslat</string> </resources> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">send sms</string> <string name="send">send</string> </resources> 22 z 25

Zdroje http://www.android.com/ http://groups.google.com/ http://www.svetandroida.cz/ http://www.google.com/ 23 z 25

Otázky? 24 z 25

Budíček! a děkuji za pozornost Pavel Petřek pavel@inmite.eu http://www.inmite.eu/ http://twitter.com/pavelpetrek 25 z 25