Objavljeno: 27.3.2018 | Avtor: Simon Peter Vavpotič | Monitor April 2018

Programirajmo mobilno

Mobilne naprave z operacijskim sistemom Android prevzemajo funkcionalnosti domačih osebnih računalnikov. Poglejmo, kako enostavno jih programiramo in katere programske jezike lahko pri tem uporabljamo.

Mobilne naprave nimajo učinkovite tipkovnice in velikega zaslona. Programe zanje pišemo na osebnih računalnikih. Kljub temu imamo na voljo več razvojnih okolij in razvojnih orodij. Enostavne aplikacije navadno razvijamo v programskem jeziku java z uporabo Android SDK (Software Development Kit, slov. programski razvojni komplet). Na voljo so tudi drugi programski jeziki, med katerimi velja izpostaviti basic, C, C++, C#, pascal, python in HTML5. Snovalci so se potrudili, da bi bila nameščanje razvojnih okolij in programiranje čim lažja.

Bistveno je, da imamo na voljo hitro povezavo v internet, saj veliko programske opreme prenesemo sproti, ob namestitvi razvojnih okolij. Denimo, Android Studio ima vgrajen SDK Manager za samodejno nalaganje dodatnih programskih knjižnic iz Android SDK.

Kalkulator

Poglejmo, kako izdelamo preprost kalkulator za Android. Za praktični preizkus smo izbrali enostaven kalkulator s tremi računskimi funkcijami: seštevanjem, odštevanjem in množenjem. Kalkulator smo želeli izdelati tako, da bi v vnosni polji za besedilo vnesli operanda, izbrali želeno operacijo (s krožnimi gumbi) in izračunali rezultat s pritiskom gumba »Rezultat«. Za konec bi rezultat dodali v tabelo. Program bi po zgledu okenskih aplikacij zasnovali kot celostransko »aktivnost«, čeprav so tudi druge možnosti.

Izbrali smo dve razvojni okolji: originalni Googlov Android Studio in AnyWhere Softwarov Basic4Android. Android Studio je vsestransko orodje za programiranje javanskih aplikacij v Androidu. Gradnje nove aplikacije se lahko lotimo takoj po namestitvi JDK (Java Development Kit, angl. javanski razvojni komplet) in Android Studio IDE (Integrated Development Environment, slov. integrirano razvojno okolje). Vendar moramo upoštevati, da bo moral Android Studio sproti prenesti še potrebne dele Android SDK za izbrano različico Androida. Izbrali smo različico 4.03, ki je združljiva z večino mobilnih naprav.

Basic4Android je nekoliko enostavnejši za nameščenje in programiranje, še posebej za tiste, ki so vajeni Microsoftovega Visual Basica. Vendar zahteva, da poprej namestimo JDK in Android SDK in nastavimo ustrezne poti do datotek javac.exe in android.jar, ki ju najdemo v namestitvenem imeniku Java JDK in namestitvenem imeniku Android SDK. Mi smo si pri nameščanju pomagali z že nameščenim Android Studiem. Tako je bilo dovolj namestiti samo Basic4Android in nastaviti omenjeni poti.

Izvorna koda primerov

Izvorno in izvedljivo kodo zapisanega v članku lahko prenesete s spletne strani

www.monitor.si/android_calculator.

Po drugi strani je Android Studio zastonj, Basic4Android pa plačljiv, a je na voljo 30-dnevna preizkusna različica.

Kako programiramo?

Logika programiranja je podobna kot pri okenskih aplikacijah za osebne računalnike, a nekoliko poenostavljena. Android je operacijski sistem, ki v osnovi ni bil razvit za večopravilnost. Zato ne govorimo o aplikacijah, temveč o aktivnostih. Pri večopravilnih operacijskih sistemih z Okni smo vajeni, da vse aplikacije tečejo hkrati, pri čemer ima eno od oken fokus. V Androidu praviloma deluje le tista dejavnost, ki je trenutno prikazana na zaslonu, druge pa spijo.

Alternativni Googlovi razvojni kompleti

Poleg Android SDK so na voljo tudi razvojni Googlovi kompleti: Android NDK (Native Development Kit, slov. domači razvojni komplet), Android Open Accessory Development Kit in Native Go support, s katerimi programiramo v nejavanskih programskih jezikih in omogočajo več programerske svobode. Hkrati pogosto potrebujemo tudi ustrezne programske knjižnice razvijalcev mobilnih naprav.

Če želimo sprogramirati enostavno aktivnost, moramo določiti njeno grafično podobo in napisati ustrezno programsko kodo. Izbrali smo aktivnost, ki zasede celoten zaslon naprave. Logika razporejanja grafičnih elementov je zato enaka kot pri okenskih aplikacijah. Upoštevati moramo le, da je zaslon precej manjših mer.

Naslednji korak je povezovanje grafičnih elementov z vnaprej ustvarjeno skeletno programsko kodo aktivnosti. Glavna vstopna točka v aktivnost je funkcija onCreate (slov. ob stvarjenju), ki mora pripraviti vse potrebno za implementacijo grafike in povezav grafičnih elementov s programsko kodo. Za povezovanje stanj grafičnih elementov s programskimi funkcijami uporabljamo povratne klice. V funkciji onCreate moramo zato navesti vse potrebne povezave na implementacije funkcij za povratne klice. Klice funkcij nato v fazi delovanja programa izvaja operacijski sistem Android. Denimo, Android zazna klik gumba in pokliče ustrezno programsko funkcijo za obdelavo podatkov na zaslonu.

V našem primeru smo skoraj vso programsko kodo vezali na gumb »Rezultat«. Pritisk na gumb sproži preverjanje izbranosti krožnih gumbov (angl. radio buttons), s katerimi smo poprej izbrali računsko operacijo. Nato aktivnost prebere vrednosti tekstovnih polj in ju pretvori v numerično obliko. Za operand, kjer to ni mogoče, nastavi vrednost 0. Sledi izvedba računske operacije in dodajanje rezultata na seznam tipa ListView.

AnyWhere Software Basic4Android

Basic4Android je primeren za začetnike, ki prisegajo na Microsoftov Visual Basic, čeprav je logika programiranja podobna tisti v Android studiu. Najprej z glavnega menija odpremo Visual Designer in narišemo zaslon aplikacije v zavihku Abstract Designer. Pri tem izberemo velikost zaslona celostranske aktivnosti, oziroma napravo, katere zaslon želimo uporabiti. Če našega telefona ni na seznamu, poiščemo podobno napravo, ali ročno vnesemo mere zaslona.

Namesto tega se lahko prek menijske izbire WYSIWYG Designer in ADB (glej okvirček Vzpostavitev mostu za razhroščevanje) povežemo neposredno z mobilnim telefonom in hkrati načrtujemo tudi na njegovem zaslonu. Obenem se v PC samodejno prenese tudi velikost zaslona naprave. Slednjo lahko izberemo kot opcijo Match Connected Device (slov. ujemanje s povezano napravo).

Razvojni kompleti drugih izdelovalcev

Poleg Googla izdeluje okolja za programiranje mobilnih naprav še vsaj 15 drugih izdelovalcev. Priljubljena razvojna okolja so: AIDE, App Inventor for Android, Basic4android, Corona SDK, Delphi, HyperNext Android Creator, Kivy, Lazarus, Processing, Qt for Android, RubyMotion, SDL, Stripe Android, Visual Studio 2015 in Xamarin. Omogočajo programiranje v različnih programskih jezikih. Pri tem kličejo cejevske knjižnice, s katerimi dosežejo celotno funkcionalnost mobilnega telefona.

Naslednji korak je risanje in dimenzioniranje grafičnih elementov, ki jih v Androidu imenujemo pogledi (angl. views). Dela ni prav veliko, saj moramo z menija AddView (slov. dodaj pogled) dodati le: EditText1, EditText2, Button1, RadioButton1, RadioButton2, RadioButton3 in ListView1.

Tudi skeletna programska koda aplikacije nas že pričaka v urejevalniku programske kode. Vse, kar moramo za začetek narediti, je odkomentirati vrstico Activity.LoadLayout("Layout1") v proceduri Activity_Create, ki je analogna funkciji onCreate v Javi.

Basic4Android zelo poenostavi uporabo grafičnih elementov v programski kodi, saj ima Visual Designer vgrajen sprotni programski generator. Dosežemo ga z desnim klikom posameznega pogleda. Denimo, desni klik na Button1 (slov. gumb) in izbira Generate (slov. ustvari) ponudi generiranje definicije objekta Button1 v programski kodi ter pripravo skeletne programske kode za akciji Click (slov. klik) in Long Click (slov. dolgi klik). Mi smo izbrali drugo možnost in tako ustvarili skeletno proceduro Button1_Click, ki se proži ob kliku gumba Button1, ki smo ga imenovali Rezultat. Preostale poglede smo zgolj definirali z uporabo prve izbire. Tako smo lahko v proceduro Button1_Clik zapisali enostavno programsko kodo (glej Program 1). Koda vsebuje vse bistvene elemente aktivnosti Kalkulator, od preverjanja in zajemanja vrednosti v besedilnih poljih, izbire računske operacije do shranjevanja rezultata v ListView1.

Zadnji korak je zagon aplikacije na mobilni napravi, ki ga dosežemo z menija Project (slov. Projekt) z izbiro Compile & Run (slov. Prevedi in poženi).

Google Android Studio

Programiranje v Android Studiu je analogno programiranju v Basic4Android. Vendar je zahtevnejše, saj moramo vsako od možnosti precej natančno opredeliti. Že pri ustvarjanju projekta lahko izbiramo med več vrstami aktivnosti (ne zgolj celozaslonsko). Android Studio omogoča grafično in tekstovno urejanje datoteke XML z definicijo grafike aktivnosti. Tekstovno urejanje je potrebno, če grafični urejevalnik zataji in noče razporediti grafičnih elementov na želene položaje.

Pisanja programske kode se lotimo v datoteki FullscreenActivity.java. Na začetku moramo med definicijami knjižnic uvoziti dodatne knjižnice za poglede, ki smo jih uporabili pri grafičnem načrtovanju. Denimo, z »import android.widget.RadioButton« uvozimo programsko knjižnico za krožne gumbe.

Nato moramo med definicijami spremenljivk za vsak pogled dodati še spremenljivko, po kateri je ta dosegljiv v programski kodi. Na primer, definicijo spremenljivke t1 (»private EditText t1«) bomo uporabili pri dostopu do prvega operanda.

Vzpostavitev mostu za razhroščevanje

Razvojno okolje za Android komunicira z mobilno napravo prek ADB (Android Debug Bridge, slov. Androidov most za razhroščevanje), ki je del Android SDK. Za vzpostavitev ADB je potreben tudi poseben gonilnik, ki ga izda izdelovalec mobilne naprave.

Hkrati je treba delovanje ADB omogočiti tudi na sami mobilni napravi. Izdelovalci mobilnih naprav uporabljajo razne zvijače, s katerimi preprečijo nehoten vklop ADB. Pogosto je predpogoj za ADB vklop načina za razvijalce, ki ga dosežemo prek nastavitev mobilne naprave. V nastavitvah (angl. Settings) moramo navadno poiskati meni About phone (slov. O telefonu), znotraj tega pa postavko Build number (slov. številka izgradnje), ki jo 10-krat kliknemo. S tem v nastavitvah omogočimo dodatni meni, Developer options (slov. Opcije za razvijalce). Nato v izbirah omogočimo ADB prek USB.

Vzpostavitev ADB je predpogoj za hitro razhroščevanje in testiranje mobilnih aplikacij, ne da bi jih morali ročno nameščati na mobilno napravo v obliki paketov *.APK.

Zdaj se lotimo še dodelave funkcije onCreate. Najprej z uporabo findViewById programskim spremenljivkam priredimo grafične elemente (npr. »t1=findViewById(R.id.editText1)«).

Nato pripravimo adapter za ListView1, v katerega bomo dodajali rezultate izračunov. Najprej definiramo podatkovno strukturo za hrambo podatkov. V našem primeru je to seznam (ArrayList), na podlagi katerega izdelamo adapter z naslednjim klicem funkcije ArrayAdapter: »final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,AList)«. Zdaj moramo adapter le še prirediti ListView1. To storimo s klicem metode Lw1.setAdapter(adapter).

Zadnji korak programiranja je izdelava in povezava povratno klicanih funkcij, kjer nam izdatno pomaga vgrajeni generator kode. Napisati moramo funkcijo za gumb Button1 (Rezultat) in po eno funkcijo za vsak krožni gumb (RadioButton). Funkcija za gumb Rezultat je videti takole: »b1.setOnClickListener(new View.OnClickListener(){@Override <naša koda> })«. »Naša koda« pri tem označuje glavni del programske kode, ki je zelo podobna programu 1, le da je napisana v javi.

Aplikacijo zaženemo na mobilni napravi ali na simulatorju z menija Run. Morda ni odveč omeniti, da Intelovega pospeševalnika za simulator ne moremo uporabiti, če je v Windows nameščen Hyper-V, ali iz navideznega računalnika.

Sub Button1_Click

Dim a As Double

Dim b As Double

Dim c As Double

If IsNumber(EditText1.Text) Then

a=EditText1.Text

Else

a=0

End If

If IsNumber(EditText2.Text) Then

b=EditText1.Text

Else

b=0

End If

b=EditText2.Text

If RadioButton1.Checked Then

c=a+b

Else

If RadioButton2.Checked Then

c=a-b

Else

c=a*b

End If

End If

ListView1.AddSingleLine(c)

End Sub

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji