V predchádzajúcej prípravnej časti sme prebrali, aké komponenty treba nainštalovať pri vývoji aplikácií pre mobilné telefóny a tablety s operačným systémom Android. Budete nevyhnutne potrebovať:
- Android SDK Tools (http://developer.android.com/sdk/index.html)
- Vývojové prostredie Eclipse (http://www.eclipse.org/downloads)
- Android Development Tools (inštaluje sa ako doplnok do Eclipse z https://dl-ssl.google.com/android/eclipse )
Vytvorenie nového projektu Android
Mnohí sa čudujú, prečo v klasických (a teda dobrých) učebniciach programovania sa vždy začína aplikáciou typu „Hello World“, ak chcete po našom, „Zdravíme svet“. Dôvod je jednoduchý. Ak takáto aplikácia funguje, dokážete vypísať akýkoľvek text, napríklad aj obsah premenných, čo významne uľahčuje ladenie a zároveň máte istotu, že všetko je správne nainštalované a nakonfigurované. A ak bude vaša snaha zavŕšená prenosom aplikácie do mobilného zariadenia a jej spustením v reálnom prostredí, uspeli ste na výbornú a môžete sa smelo pustiť do zložitejších projektov.
Vo vývojovom prostredí pomocou menu File > New > Project vytvorte nový projekt Android. Eclipse implicitne ukladá projekty do adresára C:\Users\<používateľ>\workspace.
Vytvorenie nového projektu Android
Projekt môžete nazvať napríklad ZoznamovaciaAplikacia. Vyberte verziu Androidu a vyplňte povinné položky Project name, Application name, Package name (v tvare com.example.zoznamovaciaaplikacia) a Create Activity.
Treba vybrať takú verziu Androidu, aká sa predpokladá na cieľovom zariadení, prípadne nižšiu.Keby ste postupovali opačne, na zariadeniach so staršou verziou operačného systému by aplikácia, prípadne časť jej funkcionality nemusela pracovať korektne.
Aby sme boli úplne presní, aplikáciu typu „Hello Word“ vlastne nemusíte tvoriť, implicitne sa vytvorila ako základná šablóna projektu. Takže nechajme písanie kódu zatiaľ bokom a poďme sa aspoň letmo oboznámiť s vývojovým prostredím a „anatómiou“ projektu, teda z akých komponentov a súborov projekt aplikácie pozostáva.
Používateľské rozhranie vývojového prostredia
Vľavo v okne Package Explorer otvorte súbor ZoznamovaciaAplikacia.java. Nájdete ho v zložke ZoznamovaciaAplikacia> src > com.example.zoznamovaciaaplikacia
import android.app.Activity;
import android.os.Bundle;
public class ZoznamovaciaAplikacia extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Fungovanie aplikácie je založené na triede Activity, ktorá, ako avizuje názov, slúži na vykonanie akcie. Aplikácia môže zapuzdrovať viac samostatných aktivít, no tie sú vzhľadom na možnosti platformy radené sériovo, čiže používateľ s nimi pracuje postupne. Metóda OnCreate () je volaná operačným systémom pri vstupe do akcie, takže v tejto metóde sa spravidla vykonáva inicializácia používateľského rozhrania.
Šablóna kódu na výpis oznamu Hello Word je súbore /res/layout/main.xml:
<?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”
/>
</LinearLayout>
Presnejšie v tomto súbore je len zakomponovanie textového reťazca do obrazovkového kontextu. Definícia reťazca, ktorý sa bude vypisovať, je v súbore /values/string.xml:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string>Hello World, ZoznamovaciaAplikacia!</string>
<string name=”app_name”>Zoznamovacia Aplikacia</string>
</resources>
Kliknutím na zelenú šípku môžete aplikáciu spustiť v emulátore mobilného zariadenia. Po nábehu emulátora a jeho odomknutí sa vaša aplikácia automaticky spustí. Vaša? Zatiaľ ste v šablóne zmenili len jeden textový reťazec z anglického na slovenský. Preto pre pocit dobre vykonanej práce použijeme na výpis textu iný spôsob.
Programovanie používateľského rozhrania
V predchádzajúcej stati bol text vypísaný pomocou vloženia textového reťazca do obrazovkového kontextu v kóde XML. Rovnaký efekt dosiahnete aj pomocou kódu v programovacom jazyku Java v tele metódy OnCreate (). Na výpis textu treba vytvoriť widget TextView a pomocou metódy setText(“—textový reťazec—“) zadať text, ktorý chcete zobraziť. Widget musíte najskôr importovať.
import android.widget.TextView;
Kompletný kód bude takýto:
package com.example.zoznamovaciaaplikacia;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ZoznamovaciaAplikacia extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(“Vitajte v aplikácii pre os Android”);
setContentView(tv);
}
}
V čom sme to vlastne programovali?
Kód v predchádzajúcej stati sa bude zdať familiárne známy znalcom programovacích jazykov Java aj C#. Už to, že ako vývojové prostredie sa využíva Eclipse, jednoznačne svedčí o tom, že programujete v Jave, presnejšie v Jave SE s využitím funkcií Android API. Okrem toho sa často používajú ďalšie API na sofistikované snímanie gest na dotykovom displeji, pokročilú hernú grafiku, GPS a podobne. V príklade bol použitý balíček Android widget.
Kompletný zoznam balíčkov nájdete na http://developer.android.com/reference/packages.html.
Nezabúdajte, že v prípade mobilných platforiem obzvlášť platí úslovie, že všetkého veľa škodí, v tomto prípade pokročilá grafika a iné funkcie (GPS, bluetooth…) výrazne znižujú výdrž batérie.
Počas kompilácie je aplikácia preložená a zostavená s knižnicami jar Android frameworku a výsledný súbor zbalený v binárnom súbore .dex je zavedený do Dalvik Virtual Machine.
Stručný úvod do architektúry operačného systému Android
Pri odpovedi na otázku, ako to funguje, zákonite skôr či neskôr bude nevyhnutné mať aspoň základnú predstavu o architektúre operačného systému. Aplikácia Android je samostatný proces využívajúci vlastnú inštanciu virtuálneho stroja Dalvik. Ten zabezpečuje beh spustiteľných súborov s príponou (.Dex). Dalvik je optimalizovaný pre mobilné zariadenia, to znamená obmedzené možnosti napájania, menšiu pamäť a podobne. Súčasne môže bežať viac inštancií virtuálneho stroja.
Základný pilier architektúry Androidu je Linux Kernel. Toto jadro zabezpečuje priamu interakciu s hardvérom mobilného zariadenia, čím zabezpečuje úplnú abstrakciu od hardvéru pre vyššie vrstvy. Zabezpečuje správu pamäte, správu procesov, sieťovú vrstvu, správu napájania, grafiku a ovládače pre moduly GSM, Bluetooth, EDGE, 3G, Wi-Fi, fotoaparát, GPS, kompas a akcelerometer.
Nad jadrom je súprava knižníc, ktoré poskytujú prístup aplikácií k rôznym komponentom systému Android. Na tejto úrovni sú implementované knižnice médií, grafické 2D a 3D knižnice, pričom 3D knižnice využívajú podporu OpenGL ES 1.0 s voliteľnou možnosťou využitia grafických akcelerátorov. Aplikácie môžu pre svoju internú potrebu využívať integrovaný prehliadač webového obsahu na báze open source WebKit engine. Databázový engine SQLite riadi štruktúrované úložisko údajov.
Android Runtime obsahuje súpravu základných knižníc. Aplikačný framework obsahuje objekty na tvorbu používateľského rozhrania a aplikačnej logiky. Aplikácie sú na najvyššej úrovni architektúry.
Schéma architektúry operačného systému Android
Finále – spustenie aplikácie na reálnom zariadení
Aby bolo možné spustiť aplikáciu na reálnom zariadení pripojenom cez USB, sú potrebné ovládače USB pre ADB (Android Debug Bridge). Ako bolo opísané v predošlej časti, vo vývojovom prostredí v záložke Available packages v skupine Third party Add-ons doinštalujte príslušný ovládač, buď univerzálny od spoločnosti Google, alebo proprietárny pre dané zariadenie.
Nakoniec treba upraviť v projekte súbor AndroidManifest.xml – do sekcie <application> pridajte android:debuggable=”true”.
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.zoznamovaciaaplikacia”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name” android:debuggable=”true” >
<activity android:name=”.ZoznamovaciaAplikacia”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
Spustenie aplikácie na reálnom zariadení
Aplikácia bude umiestnená v mobilnom zariadení a dostupná cez jeho menu
V nasledujúcej časti sa zameriame na prvky používateľského rozhrania.
Ľuboslav Lacko (llacko@infoware.sk)
Článok „Ako stvoriť Android / 2. Časť“ bol uverejnený v časopise Infoware 3/2011