SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

SensesClub - Platinum booklet
SensesClub - Platinum bookletSensesClub - Platinum booklet
SensesClub - Platinum bookletAlexi Dasté
 
201211 future dev-gittoolingzawindowsdevelopere
201211 future dev-gittoolingzawindowsdevelopere201211 future dev-gittoolingzawindowsdevelopere
201211 future dev-gittoolingzawindowsdevelopereTomislav Capan
 
Plano Nacional de Banda Larga 2010
Plano Nacional de Banda Larga 2010Plano Nacional de Banda Larga 2010
Plano Nacional de Banda Larga 2010Palácio do Planalto
 
Zoho CRM - Visão Geral
Zoho CRM - Visão GeralZoho CRM - Visão Geral
Zoho CRM - Visão GeralAlmir Rivas
 
Catalogue of water dispenser 2012
Catalogue of water dispenser 2012Catalogue of water dispenser 2012
Catalogue of water dispenser 2012Lau John
 
Antena 2.3cm De Maya X Laminas.
Antena 2.3cm  De Maya X Laminas.Antena 2.3cm  De Maya X Laminas.
Antena 2.3cm De Maya X Laminas.wilfredomix
 
【日本中の大学生へ】アドバイザ募集!
【日本中の大学生へ】アドバイザ募集!【日本中の大学生へ】アドバイザ募集!
【日本中の大学生へ】アドバイザ募集!Takumi Goto
 

En vedette (19)

PNAD 2014
PNAD 2014PNAD 2014
PNAD 2014
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Pp
PpPp
Pp
 
SensesClub - Platinum booklet
SensesClub - Platinum bookletSensesClub - Platinum booklet
SensesClub - Platinum booklet
 
201211 future dev-gittoolingzawindowsdevelopere
201211 future dev-gittoolingzawindowsdevelopere201211 future dev-gittoolingzawindowsdevelopere
201211 future dev-gittoolingzawindowsdevelopere
 
Plano Nacional de Banda Larga 2010
Plano Nacional de Banda Larga 2010Plano Nacional de Banda Larga 2010
Plano Nacional de Banda Larga 2010
 
Jose buchaar blog
Jose buchaar  blogJose buchaar  blog
Jose buchaar blog
 
Gestion de pymes
Gestion de pymesGestion de pymes
Gestion de pymes
 
Zoho CRM - Visão Geral
Zoho CRM - Visão GeralZoho CRM - Visão Geral
Zoho CRM - Visão Geral
 
Extra cs1
Extra cs1Extra cs1
Extra cs1
 
Catalogue of water dispenser 2012
Catalogue of water dispenser 2012Catalogue of water dispenser 2012
Catalogue of water dispenser 2012
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
A Biblioteca no teu computador - sessão 3
A Biblioteca no teu computador  - sessão 3A Biblioteca no teu computador  - sessão 3
A Biblioteca no teu computador - sessão 3
 
Il peso del fumo
Il peso del fumoIl peso del fumo
Il peso del fumo
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Antena 2.3cm De Maya X Laminas.
Antena 2.3cm  De Maya X Laminas.Antena 2.3cm  De Maya X Laminas.
Antena 2.3cm De Maya X Laminas.
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
【日本中の大学生へ】アドバイザ募集!
【日本中の大学生へ】アドバイザ募集!【日本中の大学生へ】アドバイザ募集!
【日本中の大学生へ】アドバイザ募集!
 

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

MongoDB: Repository for Web-scale metadata
MongoDB: Repository for Web-scale metadataMongoDB: Repository for Web-scale metadata
MongoDB: Repository for Web-scale metadatatkramar
 
Vývoj pre Google Android
Vývoj pre Google AndroidVývoj pre Google Android
Vývoj pre Google AndroidJuraj Michálek
 
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++Juraj Michálek
 
Ať se z kódu nepráší!
Ať se z kódu nepráší!Ať se z kódu nepráší!
Ať se z kódu nepráší!Juraj Michálek
 
Úvod do vývoja pre Windows Phone 7 II
Úvod do vývoja pre Windows Phone 7 IIÚvod do vývoja pre Windows Phone 7 II
Úvod do vývoja pre Windows Phone 7 IIIgor Kulman
 
Bezpečnosť v kontexte RIA technológií
Bezpečnosť v kontexte RIA technológiíBezpečnosť v kontexte RIA technológií
Bezpečnosť v kontexte RIA technológiíJuraj Michálek
 
MTM - Flow3
MTM - Flow3MTM - Flow3
MTM - Flow3tetak
 
Mobile first! Plynulý workflow - AIR
Mobile first! Plynulý workflow - AIRMobile first! Plynulý workflow - AIR
Mobile first! Plynulý workflow - AIRJuraj Michálek
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JSsrigi
 
SecureCam Program Guide
SecureCam Program GuideSecureCam Program Guide
SecureCam Program Guideguest146c167
 
Cucumber - Testovanie webových aplikácií
Cucumber - Testovanie webových aplikáciíCucumber - Testovanie webových aplikácií
Cucumber - Testovanie webových aplikáciíPeter Študent
 

Similaire à Matúš Jančík: Programuj rýchlejšie, meraj presnejšie (13)

There is much more to C
There is much more to CThere is much more to C
There is much more to C
 
Programovanie v C++
Programovanie v C++Programovanie v C++
Programovanie v C++
 
MongoDB: Repository for Web-scale metadata
MongoDB: Repository for Web-scale metadataMongoDB: Repository for Web-scale metadata
MongoDB: Repository for Web-scale metadata
 
Vývoj pre Google Android
Vývoj pre Google AndroidVývoj pre Google Android
Vývoj pre Google Android
 
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++
 
Ať se z kódu nepráší!
Ať se z kódu nepráší!Ať se z kódu nepráší!
Ať se z kódu nepráší!
 
Úvod do vývoja pre Windows Phone 7 II
Úvod do vývoja pre Windows Phone 7 IIÚvod do vývoja pre Windows Phone 7 II
Úvod do vývoja pre Windows Phone 7 II
 
Bezpečnosť v kontexte RIA technológií
Bezpečnosť v kontexte RIA technológiíBezpečnosť v kontexte RIA technológií
Bezpečnosť v kontexte RIA technológií
 
MTM - Flow3
MTM - Flow3MTM - Flow3
MTM - Flow3
 
Mobile first! Plynulý workflow - AIR
Mobile first! Plynulý workflow - AIRMobile first! Plynulý workflow - AIR
Mobile first! Plynulý workflow - AIR
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JS
 
SecureCam Program Guide
SecureCam Program GuideSecureCam Program Guide
SecureCam Program Guide
 
Cucumber - Testovanie webových aplikácií
Cucumber - Testovanie webových aplikáciíCucumber - Testovanie webových aplikácií
Cucumber - Testovanie webových aplikácií
 

Plus de Michal Chabada

MojAndroid.sk: Wordpress meetup ba 10/2014
MojAndroid.sk: Wordpress meetup ba 10/2014MojAndroid.sk: Wordpress meetup ba 10/2014
MojAndroid.sk: Wordpress meetup ba 10/2014Michal Chabada
 
Martin Adamek: Ako byť úspešný so svojou aplikáciou na Google Play Store [A...
Martin Adamek: Ako byť úspešný so  svojou aplikáciou na  Google Play Store [A...Martin Adamek: Ako byť úspešný so  svojou aplikáciou na  Google Play Store [A...
Martin Adamek: Ako byť úspešný so svojou aplikáciou na Google Play Store [A...Michal Chabada
 
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...Michal Chabada
 
Pragmatic Mates: Dizajn Android aplikácií
Pragmatic Mates: Dizajn Android aplikáciíPragmatic Mates: Dizajn Android aplikácií
Pragmatic Mates: Dizajn Android aplikáciíMichal Chabada
 
Daniel Novak: Android na full-time
Daniel Novak: Android na full-timeDaniel Novak: Android na full-time
Daniel Novak: Android na full-timeMichal Chabada
 
Rudo Halmi: začíname programovať Android aplikácie
Rudo Halmi: začíname programovať Android aplikácieRudo Halmi: začíname programovať Android aplikácie
Rudo Halmi: začíname programovať Android aplikácieMichal Chabada
 
Android code 2011: najlepsie slovenske Android aplikacie
Android code 2011: najlepsie slovenske Android aplikacieAndroid code 2011: najlepsie slovenske Android aplikacie
Android code 2011: najlepsie slovenske Android aplikacieMichal Chabada
 
Android roka 2011: vysledky
Android roka 2011: vysledkyAndroid roka 2011: vysledky
Android roka 2011: vysledkyMichal Chabada
 
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenHawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenMichal Chabada
 

Plus de Michal Chabada (9)

MojAndroid.sk: Wordpress meetup ba 10/2014
MojAndroid.sk: Wordpress meetup ba 10/2014MojAndroid.sk: Wordpress meetup ba 10/2014
MojAndroid.sk: Wordpress meetup ba 10/2014
 
Martin Adamek: Ako byť úspešný so svojou aplikáciou na Google Play Store [A...
Martin Adamek: Ako byť úspešný so  svojou aplikáciou na  Google Play Store [A...Martin Adamek: Ako byť úspešný so  svojou aplikáciou na  Google Play Store [A...
Martin Adamek: Ako byť úspešný so svojou aplikáciou na Google Play Store [A...
 
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...
Richard Mihalovic: Ako zarobit na svojej aplikacii a predat ju do zahranicia ...
 
Pragmatic Mates: Dizajn Android aplikácií
Pragmatic Mates: Dizajn Android aplikáciíPragmatic Mates: Dizajn Android aplikácií
Pragmatic Mates: Dizajn Android aplikácií
 
Daniel Novak: Android na full-time
Daniel Novak: Android na full-timeDaniel Novak: Android na full-time
Daniel Novak: Android na full-time
 
Rudo Halmi: začíname programovať Android aplikácie
Rudo Halmi: začíname programovať Android aplikácieRudo Halmi: začíname programovať Android aplikácie
Rudo Halmi: začíname programovať Android aplikácie
 
Android code 2011: najlepsie slovenske Android aplikacie
Android code 2011: najlepsie slovenske Android aplikacieAndroid code 2011: najlepsie slovenske Android aplikacie
Android code 2011: najlepsie slovenske Android aplikacie
 
Android roka 2011: vysledky
Android roka 2011: vysledkyAndroid roka 2011: vysledky
Android roka 2011: vysledky
 
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenHawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
 

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

  • 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