25
Programuj rýchlejšie, meraj presnejšie Košice, 8. november 2012 Matúš Jančík Užitočné Android knižnice www.matj.sk/androidcode

Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Embed Size (px)

Citation preview

Page 1: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Programuj rýchlejšie,meraj presnejšie

Košice, 8. november 2012 Matúš Jančík

Užitočné Android knižnice www.matj.sk/androidcode

Page 2: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

web & facebook & android programátor

Android aplikácie programujem od jesene 2011

Matúš Jančík Originals, s.r.o.

Page 3: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Vtipko - najlepšie vtipy● zbierka vtipov v rôznych

kategóriách● hodnotenie, obľubené ● synchornizácia + offline

Publikované 2. novembra 2011● 20000 stiahnutí● 7500 aktívnych použ.● 300 UV denne

+ Symbian, Facebook, iPhone

Súťaž Android Code 2011Grafika: Peter Bartoš

@hrochodyl

Page 4: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Max do vrecka

Aplikácia pre všetkých návštevníkov Zábavno obchodných centier MAX.

400 prevádzok v ZOC MAX Nitra, ZOC MAX Poprad, ZOC MAX Trenčín a ZOC MAX Trnava

Komplexný informačný systém: mobilná aplikácia, mobilný web, Facebook aplikácie

Page 5: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android knižnice - pridanie do projektu

Knižnica ako projektvytvorenie:

použitie:

Knižnice pre webové služby (Facebook, Google, ...), reklamné systémy, grafy, ...

*.jar súbor

Page 6: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - framework

Open-source - Apache 2.0 licencia - 80kB http://code.google.com/p/android-query/

Knižnica pre prácu s UI prvkami Asynchrónne požiadavky pre HTTPSťahovanie obrázkov a súborovAutentifikácia Facebook, Twitter, ...

Page 7: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - inštalácia

- stiahnutie .jar súboru a skopírovanie do /libs

private AQuery aq; @Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test);

aq = new AQuery(this);

......... }

Page 8: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - práca s UIbez AQueryTextView text = (TextView) view.findViewById(R.id.text); if(text != null){ text.setText(vtip.getText()); text.setVisibility(View.VISIBLE);}

s AQueryaq.id(R.id.text).text(vtip.getText()).visible();

aq.id(R.id.image1).image("http://www.vtipko.eu/test.jpg");

aq.id(R.id.text).hidden().gone().visible();

aq.id(R.id.text).background(R.color.red).textColor(R.color.black);

Page 9: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - udalostiPred AndroidQueryImageView button = (ImageView) view.findViewById(R.id.button); if(button != null){ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //stlacene tlacidlo } });}

S AndroidQueryprotected void onCreate(Bundle savedInstanceState){ //setContentView ... AQuery aq = new AQuery(this); aq.id(R.id.button).clicked(this, "buttonClicked"); aq.id(R.id.list).itemClicked(this, "itemClicked")}

public void buttonClicked(View view){ //stlacene tlacidlo}

public void itemClicked(AdapterView<?> parent, View v, int pos, long id) { //stlacena polozka v zozname}

Page 10: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - asyncMetóda:ajax(java.lang.String url, java.lang.Class<K> type, AjaxCallback<K> callback)

AndroidManifest.xml<uses-permission android:name="android.permission.INTERNET" />

ActivityString url = "http://api.vtipko.eu/vtipy"; aq.ajax(url, JSONObject.class, this, "jsonCallback");

public void jsonCallback(String url, JSONObject json, AjaxStatus status){ if(json != null){ //uspesny request }else{ //chyba //status.getCode(); //status.getMessage(); }}

Page 11: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Android Query - záver

Download, Wiki, Docs, Sourcecode.google.com/p/android-querygithub.com/androidquery/androidquery

Android aplikáciaAndroidQuery demo snippetshttp://bit.ly/aquery

Page 12: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm - ORM vrstva pre databázu

Open-source - MIT licencia - 50kB http://androrm.the-pixelpla.net

Na základe definovaných modelov vytvorí pri prvom spustení sqlite databázu.

Jednoduché čítanie a zapisovanie údajov.

Page 13: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm - inštalácia

1. stiahnúť *.jar knižnicu zo stránky http://androrm.the-

pixelpla.net/downloads/ a vložiť do libs adresára

2. vytvorenie modelov

3. registrácia modelov v aplikácii

Page 14: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm príklad - vytvárame modelysrc/sk.matj.vtipy/Vtip.java

public class Vtip extends com.orm.androrm.Model { // premenná bude stĺpec v databáze protected CharField text; // konštruktor public Vtip() { super(); // definovanie textovej premennej text = new CharField(); } // setter public void setText(String text) { text.set(text); } //getter public String getText() { return text.get(); }}

1 DB tabuľka = 1 model = 1 súbornázov triedy = názov DB tabuľky_id = autoincrement - automaticky

Data fieldsBooleanField ()

CharField (int)

DateField ()

DoubleField ()

IntegerField (int)

LocationField ()

Relational FieldsForeignKeyField

ManyToManyField

OneToManyField

Page 15: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm - registrujeme modelyKdekoľvek v aplikácii stačí jeden krát zaregistrovať modely (napríklad v spúšťacej aktivite). Pri prvom spustení sa vytvorí databáza.

src/sk.matj.vtipy/MainActivity.java

//nazov databazyDatabaseAdapter.setDatabaseName("DatabazaVtipov");

//registracia modelovList<Class<? extends Model>> models = new ArrayList<Class<? extends Model>>();models.add(Vtip.class); DatabaseAdapter adapter = new DatabaseAdapter(getApplicationContext());adapter.setModels(models);

Page 16: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm - vytvárame záznamsrc/sk.matj.vtipy/PridajvtipActivity.java

//po kliknutí na tlačidlo uložiťEditText textInput = (EditText) findViewById(R.id.text);String value = textInput.getText().toString();

Vtip vtip = new Vtip();vtip.setText(value);vtip.save(getApplicationContext());

Page 17: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Androrm - čítame záznamy

Výber jedného záznamu DetailActivity.java// výber vtipu s id = 1Vtip vtip = Vtip.objects(getApplicationContext()).get(1);//vtip.getText();

Výber viacerých záznamov ZoznamActivity.java//filter - iba vtipy so slovom blond Filter filter = new Filter();filter.contains("text", "blond");

QuerySet<Vtip> vtipy = Vtip.objects(getApplicationContext()).filter(filter); for(Vtip vtip : vtipy) { //vtip.getText();}

http://androrm.the-pixelpla.net/documentation

Page 18: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Google Analytics - meranie

webová aplikáciahttp://www.google.com/analytics

Google Analytics SDK for Android v2 (Beta)- október / 2012

- počet aktívnych používateľov- lokalita návštevníkov- používanie jednotlivých funkcií- počet a typ pádov aplikácie- realtime počet a pohyb v aplikácii

Page 19: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Google Analytics - inštalácia 1/2

1. stiahnúť *.jar knižnicu a nahrať do /libshttps://developers.google.com/analytics/

2. práva aplikácie v AndroidManifest.xml<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3. vytvoriť profil v GA a získať ID http://www.google.com/analyticsAdmin=>Account list=>New Account => Vyber možnosť "App" a vyplň všetky údaje. Nakoniec získaš ID kód v tvare UA-XXXX-YY

Page 20: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Google Analytics - inštalácia 2/2

4. vytvoriť súbor /res/values/analytics.xml<?xml version="1.0" encoding="utf-8" ?><resources> <string name="ga_trackingId">UA-XXXX-YY</string> <bool name="ga_autoActivityTracking">true</bool> <bool name="ga_reportUncaughtExceptions">true</bool></resources>

5. upraviť jednotlivé Activity@Overridepublic void onStart(){ super.onStart(); EasyTracker.getInstance().activityStart(this);}

@Overridepublic void onStop() { super.onStop(); EasyTracker.getInstance().activityStop(this); //}

Page 21: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Google Analytics - inštalácia 2/2

4. vytvoriť súbor /res/values/analytics.xml<?xml version="1.0" encoding="utf-8" ?><resources> <string name="ga_trackingId">UA-XXXX-YY</string> <bool name="ga_autoActivityTracking">true</bool> <bool name="ga_reportUncaughtExceptions">true</bool></resources>

5. upraviť jednotlivé Activity@Overridepublic void onStart(){ super.onStart(); EasyTracker.getInstance().activityStart(this);}

@Overridepublic void onStop() { super.onStop(); EasyTracker.getInstance().activityStop(this); //}

Page 22: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

- ktoré obrazovky sú najviac zobrazované (pohyb po aplikácii)- lokalita a jazyk používateľov- mobilné zariadenia, rozlíšenia, operátori (chýba Android verzia)- verzie aplikácie (v2)- sledovanie cieľov a sledovanie ecommerce (In-App payment)

- vlastné udalosti - sledovanie časov (v2)

Google Analytics - štatistiky

Page 23: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

- počet aktívnych používateľov, pomer noví / starí- aktuálne zobrazené obrazovky- verzie - lokalita

Google Analytics - realtime

Page 24: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Google Analytics - sledovanie udalostí

Použitie@Overridepublic void onClick(View v) { Tracker myExistingTracker = EasyTracker.getInstance().getTracker(); myTracker.trackEvent("kategoria", "akcia", "menovka", [hodnota]); ... }

Štatistika (Obsah/Udalosti)

Page 25: Matúš Jančík: Programuj rýchlejšie, meraj presnejšie

Priestor pre otázky

www.matj.sk/androidcode

Matúš Jančík@matusjancik fb.com/matj.sk

Ďakujem za pozornosť