ݺߣ

ݺߣShare a Scribd company logo
Programuj rýchlejšie,
meraj presnejšie
Užitočné Android knižnice   www.matj.sk/androidcode


Košice, 8. november 2012                  Matúš Jančík
Matúš Jančík            Originals, s.r.o.
   web & facebook & android programátor




Android aplikácie programujem od jesene 2011
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 2011
  Grafika: Peter Bartoš
           @hrochodyl
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
Android knižnice - pridanie do projektu
Knižnice pre webové služby (Facebook, Google, ...), reklamné systémy, grafy, ...

Knižnica ako projekt                        *.jar súbor
vytvorenie:




použitie:
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 HTTP
Sťahovanie obrázkov a súborov
Autentifikácia Facebook, Twitter, ...
Android Query - inštalácia
- stiahnutie .jar súboru a skopírovanie do /libs
private AQuery aq;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);

    aq = new AQuery(this);

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


s AQuery
aq.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);
Android Query - udalosti
Pred AndroidQuery
ImageView button = (ImageView) view.findViewById(R.id.button);
if(button != null){
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
           //stlacene tlacidlo
        }
    });
}


S AndroidQuery
protected 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
}
Android Query - async
Metóda:
ajax(java.lang.String url, java.lang.Class<K> type, AjaxCallback<K> callback)


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


Activity
String 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();
     }
}
Android Query - záver
Download, Wiki, Docs, Source
code.google.com/p/android-query
github.com/androidquery/androidquery

Android aplikácia
AndroidQuery demo snippets
http://bit.ly/aquery
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.
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
Androrm príklad - vytvárame modely
                                                    1 DB tabuľka = 1 model = 1 súbor
src/sk.matj.vtipy/Vtip.java
                                                    názov triedy = názov DB tabuľky
                                                    _id = autoincrement - automaticky
public class Vtip extends com.orm.androrm.Model {
  // premenná bude stĺpec v databáze
  protected CharField text;                         Data fields
  // konštruktor                                    BooleanField ()
  public Vtip() {
      super();                                      CharField (int)
      // definovanie textovej premennej             DateField ()
      text = new CharField();
  }                                                 DoubleField ()
  // setter                                         IntegerField (int)
  public void setText(String text) {
      text.set(text);                               LocationField ()
  }
  //getter
  public String getText() {                         Relational Fields
      return text.get();                            ForeignKeyField
  }
}                                                   ManyToManyField
                                                    OneToManyField
Androrm - registrujeme modely
Kdekoľ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 databazy
DatabaseAdapter.setDatabaseName("DatabazaVtipov");

//registracia modelov
List<Class<? extends Model>> models = new ArrayList<Class<? extends Model>>();
models.add(Vtip.class);

DatabaseAdapter adapter = new DatabaseAdapter(getApplicationContext());
adapter.setModels(models);
Androrm - vytvárame záznam
src/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());
Androrm - čítame záznamy
Výber jedného záznamu                          DetailActivity.java
// výber vtipu s id = 1
Vtip 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
Google Analytics - meranie
webová aplikácia                             - počet aktívnych používateľov
http://www.google.com/analytics              - lokalita návštevníkov
                                             - používanie jednotlivých funkcií
Google Analytics SDK for Android v2 (Beta)   - počet a typ pádov aplikácie
- október / 2012                             - realtime počet a pohyb v aplikácii
Google Analytics - inštalácia 1/2

1. stiahnúť *.jar knižnicu a nahrať do /libs
https://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/analytics
Admin=>Account list=>New Account => Vyber možnosť "App" a vyplň všetky
údaje. Nakoniec získaš ID kód v tvare UA-XXXX-YY
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
@Override
public void onStart(){
  super.onStart();
  EasyTracker.getInstance().activityStart(this);
}

@Override
public void onStop() {
  super.onStop();
  EasyTracker.getInstance().activityStop(this); //
}
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
@Override
public void onStart(){
  super.onStart();
  EasyTracker.getInstance().activityStart(this);
}

@Override
public void onStop() {
  super.onStop();
  EasyTracker.getInstance().activityStop(this); //
}
Google Analytics - štatistiky
- 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 - realtime

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

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



Štatistika (Obsah/Udalosti)
Ďakujem za pozornosť
    Priestor pre otázky


 www.matj.sk/androidcode


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

More Related Content

Android libraries

  • 1. Programuj rýchlejšie, meraj presnejšie Užitočné Android knižnice www.matj.sk/androidcode Košice, 8. november 2012 Matúš Jančík
  • 2. Matúš Jančík Originals, s.r.o. web & facebook & android programátor Android aplikácie programujem od jesene 2011
  • 3. 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 2011 Grafika: Peter Bartoš @hrochodyl
  • 4. 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
  • 5. Android knižnice - pridanie do projektu Knižnice pre webové služby (Facebook, Google, ...), reklamné systémy, grafy, ... Knižnica ako projekt *.jar súbor vytvorenie: použitie:
  • 6. 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 HTTP Sťahovanie obrázkov a súborov Autentifikácia Facebook, Twitter, ...
  • 7. Android Query - inštalácia - stiahnutie .jar súboru a skopírovanie do /libs private AQuery aq; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); aq = new AQuery(this); ......... }
  • 8. Android Query - práca s UI bez AQuery TextView text = (TextView) view.findViewById(R.id.text); if(text != null){ text.setText(vtip.getText()); text.setVisibility(View.VISIBLE); } s AQuery aq.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);
  • 9. Android Query - udalosti Pred AndroidQuery ImageView button = (ImageView) view.findViewById(R.id.button); if(button != null){ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //stlacene tlacidlo } }); } S AndroidQuery protected 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 }
  • 10. Android Query - async Metóda: ajax(java.lang.String url, java.lang.Class<K> type, AjaxCallback<K> callback) AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" /> Activity String 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(); } }
  • 11. Android Query - záver Download, Wiki, Docs, Source code.google.com/p/android-query github.com/androidquery/androidquery Android aplikácia AndroidQuery demo snippets http://bit.ly/aquery
  • 12. 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.
  • 13. 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
  • 14. Androrm príklad - vytvárame modely 1 DB tabuľka = 1 model = 1 súbor src/sk.matj.vtipy/Vtip.java názov triedy = názov DB tabuľky _id = autoincrement - automaticky public class Vtip extends com.orm.androrm.Model { // premenná bude stĺpec v databáze protected CharField text; Data fields // konštruktor BooleanField () public Vtip() { super(); CharField (int) // definovanie textovej premennej DateField () text = new CharField(); } DoubleField () // setter IntegerField (int) public void setText(String text) { text.set(text); LocationField () } //getter public String getText() { Relational Fields return text.get(); ForeignKeyField } } ManyToManyField OneToManyField
  • 15. Androrm - registrujeme modely Kdekoľ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 databazy DatabaseAdapter.setDatabaseName("DatabazaVtipov"); //registracia modelov List<Class<? extends Model>> models = new ArrayList<Class<? extends Model>>(); models.add(Vtip.class); DatabaseAdapter adapter = new DatabaseAdapter(getApplicationContext()); adapter.setModels(models);
  • 16. Androrm - vytvárame záznam src/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());
  • 17. Androrm - čítame záznamy Výber jedného záznamu DetailActivity.java // výber vtipu s id = 1 Vtip 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
  • 18. Google Analytics - meranie webová aplikácia - počet aktívnych používateľov http://www.google.com/analytics - lokalita návštevníkov - používanie jednotlivých funkcií Google Analytics SDK for Android v2 (Beta) - počet a typ pádov aplikácie - október / 2012 - realtime počet a pohyb v aplikácii
  • 19. Google Analytics - inštalácia 1/2 1. stiahnúť *.jar knižnicu a nahrať do /libs https://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/analytics Admin=>Account list=>New Account => Vyber možnosť "App" a vyplň všetky údaje. Nakoniec získaš ID kód v tvare UA-XXXX-YY
  • 20. 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 @Override public void onStart(){ super.onStart(); EasyTracker.getInstance().activityStart(this); } @Override public void onStop() { super.onStop(); EasyTracker.getInstance().activityStop(this); // }
  • 21. 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 @Override public void onStart(){ super.onStart(); EasyTracker.getInstance().activityStart(this); } @Override public void onStop() { super.onStop(); EasyTracker.getInstance().activityStop(this); // }
  • 22. Google Analytics - štatistiky - 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)
  • 23. Google Analytics - realtime - počet aktívnych používateľov, pomer noví / starí - aktuálne zobrazené obrazovky - verzie - lokalita
  • 24. Google Analytics - sledovanie udalostí Použitie @Override public void onClick(View v) { Tracker myExistingTracker = EasyTracker.getInstance().getTracker(); myTracker.trackEvent("kategoria", "akcia", "menovka", [hodnota]); ... } Štatistika (Obsah/Udalosti)
  • 25. Ďakujem za pozornosť Priestor pre otázky www.matj.sk/androidcode Matúš Jančík @matusjancik fb.com/matj.sk