MojAndroid

Mobilný operačný systém Android sa postupom času stáva stále viac populárnym medzi bežnými používateľmi po celom svete. Rovnako aj obchod s aplikáciami Google Play zaznamenáva progresívny rast počtu aplikácií a Android sa tak stáva výbornou platformou pre programovanie aplikácií. API (aplication programming interface) alebo rozhranie pre programovanie aplikácií, je v tomto prípade výborne zdokumentované a jednoduché pre použitie. Pre testovanie vytvoreného kódu nebudete dokonca zo začiatku potrebovať ani vlastný Android smartfón, nakoľko môžete využiť prítomnosť emulátora. Ak sa teda rozhodnete vyskúšať programovanie aplikácií pre Android, prinášame vám sériu návodov pre začiatočníkov, ktoré sú z veľkej časti prepísané z portálu linux.com a pomôžu vám v začiatkoch. Seriál predpokladá základnú znalosť jazykov Java a XML.

programovanie android aplikacii

Vývojové prostredie a začiatky:

Dodatok k verziám: V čase písania článku bola najnovšia verzia systému Android 4.2 Jelly Bean. Pri programovaní sa musíte orientovať aj na staršie verzie, pretože mnohí používatelia zatiaľ neobdržali aktualizáciu na Jelly Bean. Android je totižto dopredu kompatibilný, takže váš kód pre verziu 2.3 bude fungovať aj na 4.2, ale nie je vždy spätne kompatibilný. Kód nižšie by mal s najväčšou pravdepodobnosťou pracovať na 4.0 aj 2.3.

Prvé, čo budete potrebovať je vývojové prostredie. Najrýchlejší spôsob ako ho získať, je stiahnúť si tzv. Android Bundle. V závislosti od platformy, budete ďalej potrebovať  Java JDK 6. Ak už máte nainštalovaný Eclipse, môžete ho nastaviť pre použitie s Androidom, no tým sa v tomto článku zaoberať nebudeme.

Po spustení aplikácie Eclipse vytvorte nový projekt (Android Application Project) a nastavte názov na “Odpocitavanie”, pole Target SDK na 4.1, pole Minimum Required SDK na 2.2 a použite šablónu BlankActivity. Takto by malo vyzerať vaše prostredie po vytvorení nového projektu:

Programovanie Android aplikácií pre začiatočníkov. 1. časť

Môj prvý Android projekt: Layout (rozmiestnenie elementov)

Ako prvý program, ktorý si vytvoríme bude časovač, ktorý odpočítava 10 sekúnd, keď kliknete na tlačidlo. Predtým, než sa začneme venovať písaniu kódu, vytvoríme si rozhranie, teda to čo užívateľ uvidí, keď spustí aplikáciu. Vľavo máte tzv. Package explorer, kde otvorte súbor z adresára “res/layout/activity_countdown.xml” (tento je otvorený už po vytvorení projektu). Android ponúka dve možnosti vytvorenia tohto rozhrania a to ručne pomocou XML kódu alebo grafickým editorom. Vždy odporúčame využiť prvú možnosť. Takže prepnite sa na záložku activity_main.xml a vložte tento kód:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
      <TextView 
          android:id="@+id/time_display_box" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_alignParentTop="true" 
          android:layout_centerHorizontal="true" 
          android:layout_marginTop="60dp" 
          android:text="@string/_00_30" 
          android:textAppearance="?android:attr/textAppearanceLarge"/>
      <Button
          android:id="@+id/startbutton"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_below="@+id/time_display_box"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="41dp"
          android:text="@string/start" />

</RelativeLayout>

Týmto sme vytvorili dva nové prvky rozhrania a to TextView (textové pole) a Button (tlačidlo). Všimnite si referencie na @string/start a @string/__00_30. Tieto hodnoty sú uložené v súbore res/values/strings.xml. Otvorte ho a vložte nasledujúci kód:

<string name="start">štart</string>
<string name="_00_30">00:30</string>

Toto ilustruje štandardný spôsob referencie na Android zdroje. Je ďaleko vhodnejšie vytvoriť takéto odkazy, skôr ako “tvrdé” kódovanie reťazcov (eclipse vás na to dokonca upozorní).

Môj prvý Android projekt: Kód aplikácie

Ďalej sa budeme zaoberať samotným kódom nášho časovača. Vo vašom editore otvorte súbor CountdownActivity.java, ktorý by mal obsahovať vygenerovanú metódu onCreate(). Príkazy, ktoré napíšete do tejto metódy, sa vykonajú po spustení danej aktivity, takže sa často používa na inicializáciu prostredia. Ostatné vygenerované metódy budeme zatiaľ ignorovať. Pod riadok “public class MainActivity extends Activity {” vložte nasledujúci kód tak, aby ste nemali dvakrát uvedenú metódu oncreate:

	
  private static final int MILLIS_PER_SECOND = 1000;
  private static final int SECONDS_TO_COUNTDOWN = 30;
  private TextView     countdownDisplay;
  private CountDownTimer timer;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    countdownDisplay = (TextView) findViewById(R.id.time_display_box);
    Button startButton = (Button) findViewById(R.id.startbutton);
    startButton.setOnClickListener(new View.OnClickListener() {
      public void onClick(View view) {
        try {
          showTimer(SECONDS_TO_COUNTDOWN * MILLIS_PER_SECOND);
        } catch (NumberFormatException e) {
          // metóda ignoruje neplatný vstup a čaká
          // na niečo čo môže použiť
        }
      }
    });
  }

Pridaním tohto kódu vás Eclipse bude varovať na určité chyby. Sú spôsobené najmä tým, že ste nepridali potrebné knižnice. Tento problém odstránite stlačením klávesovej skratky command+shift+O alebo Control + Shift + O”To čo robí tento projekt veľmi jednoduchý je fakt, že Android API už obsahuje vlastný časovač odpočítavania, ktorý môžeme použiť. Všetky premenné sme deklarovali, ako privátne. V metóde onCreate () používame metódy, s ktorými sa budete často stretávať. Metóda setContentView sa používa na načítanie XML layout-u a syntax R.layout.main je štandardný spôsob ako sa odkazovať na Android XML zdroj v kóde.

findViewById je ďalšou z metód, ktoré sa veľmi často používajú. V našom prípade zachytávajú textové pole a tlačidlo z XML súboru. Aby sme mohli spojazdniť tlačidlo, musíme najskôr vytvoriť tzv. OnClickListener. Tento sa radí medzi interface, takže musí byť napísaný ako podtrieda. Mohli by sme vytvoriť úplne novú triedu MyButton, no to by bolo vzhľadom na to, že využívame jedno tlačidlo zbytočné. Namiesto toho, vytvoríme nový OnClickListener a jeho onClick() metódu. V našom prípade sa zavolá metóda  showTimer() na počet milisekúnd, ktoré sme zadali natvrdo.

Takže čo robí metóda showTimer()?

private void showTimer(int countdownMillis) {
  if(timer != null) { timer.cancel(); }
  timer = new CountDownTimer(countdownMillis, MILLIS_PER_SECOND) {
  @Override
  public void onTick(long millisUntilFinished) {
    countdownDisplay.setText("odpočítavam: " +
    millisUntilFinished / MILLIS_PER_SECOND);
  }
  @Override
    public void onFinish() {
      countdownDisplay.setText("KABOOM!");
    }
  }.start();
}

Trieda CountDownTimer robí za nás väčšinu práce, čo je výborné. Na začiatku kódu sa pre istotu presvedčíme či časovač náhodou nie je spustený. Ak áno zrušíme ho. Potom vytvoríme nový časovač a nastavíme počet milisekúnd pre odpočítavanie a počet milisekúnd za jeden interval. Tento interval je za počet zavolaní metódy onTick().

CountDownTimer je ďalšia abstraktná trieda a medódy __onTick()__ and __onFinish()__ musia byť implementované, ako podtriedy. Metódu onTick() používame na zníženie hodnoty sekúnd na displeji vždy o jedna a metódu onFinish() na nastavenie správy po dokončení odpočítavania. Metóda, start()spustí časovač.

Spustením aplikácie sa automaticky vygeneruje emulátor Android zariadenia, kde sa nahrá aj vaša nová aplikácia. Výsledok vašej práce by mal vyzerať nasledovne:

Programovanie Android aplikácií pre začiatočníkov 2 Programovanie Android aplikácií pre začiatočníkov 3 Programovanie Android aplikácií pre začiatočníkov 1

Gratulujeme, napísali ste svoju prvú Android appku. V druhej časti tohto seriálu, sa pozrieme bližšie na štruktúru Android aplikácie, a urobíme nejaké zlepšenia časovača v zadávaní času, pridáme si Stop tlačidlo, a jednoduché menu. Nakoniec si aplikáciu spustíme na fyzickom telefóne a nie v emulátore.

->Hotový Android projekt si stiahnete tu<-

21.2.2013

Pravidlá diskusie

Portál MojAndroid.sk si vyhradzuje právo zmazať neslušné, rasistické a vulgárne príspevky, ako aj osobné útoky na redakciu, či diskutérov v komentároch pod článkom bez ďalšieho upozornenia. V prípade uverejňovania odkazov na externé stránky, je komentár automaticky preposlaný do redakcie na schválenie.

+