Image
30.6.2016 0 Comments

Programujeme pre Android /11. časť

Po dvoch teoretických častiach seriálu, v ktorých sme sa venovali prepojeniu androidovej databázy SQLite s databázou MySQL, sa dostávame k časti, v ktorej teoretické poznatky „pretavíme" do praxe. Prílohou tejto časti seriálu je prvá verzia vzorovej aplikácie, v rámci ktorej si prakticky ukážeme jeden zmožných spôsobov synchronizácie databáz SQLite aMySQL (konkrétne obsahu ich tabuliek).

Aplikácia db_sync

Z dôvodu vysvetlenia niektorých špecifických bodov algoritmu synchronizácie internej androidovej databázy SQLite s externou databázou MySQL na určitý čas nebudeme pokračovať v tvorbe nových verzií aplikácie plánovač, ale vytvoríme úplne novú aplikáciu s názvom db_sync. Jej prvá verzia bude skutočne minimalistická a bude implementovať iba najzákladnejšiu funkcionalitu, ktorej cieľom bude vykonať synchronizáciu novo pridaných riadkov tabuliek. V ďalších verziách budeme implementovať prvky, o ktorých sme hovorili v predošlých teoretických častiach seriálu (BroadcastReceiver, Service, CRUD...).

Vľavo – štruktúra tried a zdrojov projektu, vpravo – GUI aplikácie db_sync

Postup vytvorenia jednoduchej aplikácie v prostredí AndroidStudia nebudeme podrobne V krátkosti uvedieme, že v rámci AS vytvoríme nový projekt s názvom db_sync a prázdnou aktivitou rozširujúcou triedu AppCompatActivity; implementujúcu triedu Loader Manager. V ďalšom využijeme triedy, ktoré sme vytvorili v prípade poslednej verzie aplikácie plánovač, a síce db_contentprovider a dB_helper.

GUI aplikácie zostavíme z komponentov Edit-Text, Button, TextView a ListView; doplníme súbor polozka.xml s definíciou layoutu položky zoznamu (údaj + status synced).

Nemenej dôležitý krok je pridanie doplnkových knižníc potrebných na chod funkcií implementovaných v aplikácii. Urobíme tak nahratím súborov android-async-http-1.4.4.jar a gson-2.2.4.jar (stiahnuté z internetu) napr. do zložky db_sync/app/libs a doplnením závislostí v menu File -> Project Structure... -> app -> Dependencies -> + (Add) -> 2 File Dependency.

Posledný z prípravných krokov je povolenie prístupu aplikácie do siete internet v manifeste aplikácie AndroidManifest.xml:

<usespermission
android:name="android.permission.

INTERNET" />

Postup synchronizácie databáz

Na zopakovanie uvedieme, že aj napriek tomu, že Android umožňuje priamo omunikovať s externými databázami MySQL, takýto postup sa neodporúča. Okrem tvorby aplikácie v prostredí AS teda potrebujeme vyriešiť aj prípravu medzivrstvy (intermediate layer) medzi Androidom a databázou MySQL. Táto úloha je ako obyčajne realizovateľná mnohými spôsobmi. V našom prípade, keďže využívame služby W/LAMP, príslušné úlohy sprostredkujú skripty PHP.

Komplexný nami implementovaný postup synchronizácie Android SQLite dB s MySQL dB je nasledujúci:

1. V prvom rade musíme mať k dispozícii webové prostredie (webový server) s nainštalovanými službami W/LAMP, teda musíme mať funkčný Apache server schopný vykonať skripty PHP a, samozrejme, funkčnú databázu MySQL.

Opis inštalácie a konfigurácie takéhoto prostredia presahuje rámec tohto článku a celého seriálu.

Naša rada na zjednodušenie problému potreby prostredia Apache - MySQL - PHP je využitie služieb verejného poskytovateľa takýchto služieb.

2.Vo funkčnom prostredí W/LAMP kontaktujeme databázu MySQL napr. cestou manažéra phpMyAdmin a vytvoríme databázu/tabuľku, s ktorou budeme neskôr nadväzovať spojenie z nami pripravovanej androidovej aplikácie:

CREATE TABLE test_table (
id INTEGER NOT NULL AUTO_INCREMENT,
data VARCHAR(100),
synced INTEGER DEFAULT 0,
PRIMARY KEY(id) )

3. Do vybranej zložky W/LAMP servera nahráme v našom prípade štyri skripty PHP implementujúce funkcie potrebné na prácu JSON. Konkrétne ide o skripty dbfunc.php, getunsyncedrows.php, changesyncedstatus.php a addunsyncedrows.php, nachádzajúce sa v zlož ke db_sync/php.

Programový kód umiestnený v uvedených skriptoch sme ako obvykle podrobne opísali v jednotlivých súboroch. V krátkosti iba uvedieme, že skript:

dbfunc obsahuje definíciu prístupových údajov (HOST, USER, PASSWORD, DATABASE) a základných funkcií používaných v ostatných skriptoch

getunsyncedrows vracia formátovaný obsah JSON tých riadkov tabuľky MySQL, ktoré treba synchronizovať (boli pridané do tabuľky MySQL)

changesyncedstatus aktualizuje status synced tých riadkov tabuľky MySQL, ktoré boli zosynchronizované (ich obsah bol vložený do tabuľky SQLite)

addunsyncedrows pridáva nové riadky do tabuľky MySQL v prípade, že došlo k pridaniu nových riadkov do tabuľky SQLite

Hore – zmena MySQL dB po zmene SQLite dB, dole – zmena SQLite dB po zmene MySQL dB

4. Všetky ďalšie úlohy sú plnené v rámci triedy (aktivity) MainActivity. Algoritmus je zobrazený na priloženom obrázku v bodoch a programový kód je podrobne opísaný formou komentárov. Synchronizácia sa vykonáva na pokyn používateľa po výbere menu Synchronizuj databázy vykonaním metódy onOptionsItemSelected().

V rámci nej dochádza k spusteniu nasledujúcich dvoch funkcií:

syncSQLite_to_MySQL() a) kontaktuje skript getunsyncedrows, ktorý vráti obsah tých riadkov tabuľky MySQL (formátovaný vo formáte JSON), ktoré boli pridané a nie sú synchronizované (status synced = 0)

b) vykonaním funkcie update_SQLitedB() dôjde k pridaniu uvedených riadkov do tabuľky SQLite (súčasne nastaví status synced = 1) a následne k zmene statusu synced riadkov tabuľky MySQL prostredníctvom skriptu changesyncedstatus

syncMySQL_to_SQLite() a) nastaví status synced tých riadkov tabuľky SQLite, ktoré boli pridané a treba ich zosynchronizovať, a zároveň pripraví zoznam uvedených riadkov

b) vykonaním funkcie update_MySQLdB() je obsah nezosynchronizovaných riadkov zakódovaný do formátu JSON odovzdaný skriptu addunsyncedrows, ktorý pridá uvedené riadky do tabuľky MySQL (súčasne nastaví status synced = 1)

 

Zobrazit Galériu
Autor: Marek Sopko

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

ITPro

Linux súkromne i pracovne v2.0 (14. časť): Small Business Server

09.11.2016 14:57

Pojem Small Business Server (malý firemný server) začala používať spoločnosť Microsoft ešte v roku 2000 na označenie servera, ktorý ­dokázal plniť úlohy niekoľkých samostatných serverov. Aplikačná vrs ...

ITPro

Industry 4.0: Fikcia alebo už realita?

09.11.2016 14:52

Štvrtá priemyselná revolúcia je pomenovanie rozsiahlych zmien prudko vstupujúcich do súčasného priemyslu. Nositeľom týchto zmien je digitalizácia výroby a optimalizácia všetkých podnikových procesov v ...

ITPro

Vývoj aplikácií UWP pre Xbox One II.

09.11.2016 14:47

V predošlej časti sme ukázali postup, ako si ­vytvoriť vývojársky účet a aktivovať vývojársky režim na hernej konzole Xbox One, aby ste mohli testovať svoje aplikácie. Výhodou hernej konzoly Xbox je v ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá