Android OS
Viena iš sričių Java programuotojų yra mobiliųjų aplikacijų kūrimas: telefonams, televizoriams, išmaniesiems laikrodžiams, automobiliams, projektoriams ir kitiems prietaisams. Android OS yra viena iš pagrindinių įrankių šiom aplikacijoms kurti. Taip pat reikia atkreipti į rekomendacijas nes atsiranda nauji įrankiai ir JVM programavimo kalbos pvz: Kotlin programavimo kalba galima sakyti jau iš dalies pakeitė Java programavimo kalbą kuriant Android OS aplikacijas. Android OS jau ilgą laiką naudojama ir turi platų spektrą įvairiausių versijų sąrašą (žr. 9.1 pav.) kiekvienam iš šių versijų yra aprašytas API ir pateikta detali dokumentacija, kurią rasite šiuo adresu: https://developer.android.com/reference/packages.

9.1 pav. Android OS versijų sąrašas
Android OS galimybės, kurias programuotojas gali valdyti pasinaudojus siūlomais šios operacinės sistemos API:
- Storage - Uses SQLite, a lightweight relational database, for data storage.
- Connectivity - Supports GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, and WiMAX.
- Messaging - Supports both SMS and MMS.
- Web browser - Based on the open source WebKit, together with Chrome's V8 JavaScript engine.
- Media support - Includes support for the following media: H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP.
- Hardware support - Accelerometer Sensor, Camera, Digital Compass, Proximity Sensor, and GPS.
- Multi-touch - Supports multi-touch screens.
- Multi-tasking - Supports multi-tasking applications.
- Tethering - Supports sharing of Internet connections as a wired/wireless hotspot.
- kitos funkcijos priklausomai nuo prietaise įdiegtų sensorių.
Pradedantiesiems ieškoti medžiagos internete rekomenduojama pasinaudoti šia susisteminta medžiaga: http://guides.codepath.com/android kur yra pateikiamos įvairiausios pamokos, šaltinių nuorodos, vaizdo medžiaga internete ir kt. Be abejo nereikia atsisakyti ir pasinaudoti oficialia Android OS dokumentacija: https://developer.android.com, kur surasite visas reikiamas instrukcijas kaip pradėti kurti mobiliąsias programėles.
Pagrindiniai Android OS sistemos komponentai su kuriais reikėtų susipažinti:
- AndroidManifest.xml dokumentas, kuriame yra aprašoma visos programos meta duomenys, pateikiamia prieiga prie sensorių ar kitų funkcijų: interneto prieiga, bluetooth, atminties kortele, GPS ir t.t. Kaip atrodo Manifest dokumentas yra pateiktas 9.2 paveikslėlye.

9.2 pav. AndroidManifest.xml dokumento pavyzdys
- Views - Vaizdai tai grafinės sąsajos elementai iš kurių yra sukonstruojama vartotojo grafinė sąsaja. Vaizdas gali būti: mygtukas, žymė, tekstinis laukelis ar kt. Vaizdai taip pat gali būti konteineriai, kurie sudaro hierarchiją iš vaizdų grafinė sąsajoje.

9.3 pav Android OS vaizdas (angl. View)
- Activity - Langas, kuriame yra atvaizduojama grafinė vartotojo sąsaja įprastai su vienu ar keliais vaizdais. Dažnai yra numatyta konkreti veikla pvz. Prisijungimo langas, Registracija, Meniu ar kt. (žr. 9.4 pav.).
9.4 pav. Android OS Activity pavyzdžiai
- Fragment - Fragmentas tai kaip sub-activities, kuriuos galima perpanaudoti įvairių ekranų dydžių languose. Pavyzdžiui turime sąrašą daiktų su detalia informacija jeigu mobilaus telefono ekranas yra mažas mes galime įterpti fragmentą su daiktų sąrašu Activity A ir peržiūra detalesnio vaizdo įterpiame fragmentą į Activity B (žr. 9.5 pav.).

9.5 pav. Fragmentų "Item List" ir "Item Details" pavyzdys
Jeigu turime aprašytą atskirą vaizdą skirtą dideliems ekranams pavyzdžiui planšetėms, tada tuos pačius fragmentus galime atvaziduoti viename Activity A (žr. 9.6 pav.).
9.6 pav. Fragmentai "Item List" ir "Item Details" atvaizduoti didesniame ekrane
- Intents - Perėjimai tarp vaizdų yra skirstomi į dvi kategorijas: Expicit Intent - yra valdomas programuotojo, kuris yra aprašomas ir valdomas programos lygmenyje galima perduoti duomenis į kitą activity ir pan. Implicit Intent - tai dažniausiai Android OS komponentai servisai, kurie yra valdomi pačios OS, tokie kaip skambutis draugui, žemėlapio pozicija, atidaryti internetinę svetainę ir kt. (žr. 9.7 pav.).

9.7 pav. Intent tipų palyginimas
- Content providers - turinio ar duomenų tiekėjai. Standartizuotas būdas aprašantis duomenis naudojant specifinę klasę taip įvedant lankstumo dalintis duomenimis naudojant sukurtus Content providers su kitomis aplikacijomis.

9.8 pav. Content provider - turinio tiekėjas mechanizmas skirtas pasiekti duomenis iš įvairių šaltinių
- Services - Įvairiausios išorinės ar vidinės paslaugos. Kadangi didžioji dalis servisų kaip foniniai ar kito tipo skirti apsaugoti nuo pagrindinės gijos (angl. Main Thread) apkrovimo dėl sklandaus darbo. Galima sukurti ir savo asmeninius servisus, kur atlikti bet kokias užduotis: atsiųsti duomenis, telefono pranešimą ir kt. Pavyzdys kaip sukurti asmeninį foreground tipo servisą: https://androidwave.com/foreground-service-android-example/.
- SQLite (Duomenų bazė)
- Firebase - Mobiliųjų aplikacijų serverinė dalis kaip servisas (MBaaS), apie šią platformą plačiau galite pasiskaityti šiuo adresu: https://firebase.google.com/.
Android projekto failų struktūra, kurios pakanka sukurti pirmąją Android mobilią programėlę (žr. 9.9 pav.).
9.9 pav. Android OS projekto katalogų struktūra