Android ohjelmointi Tunti 5 SQLite, Cursor, Intent ja ADB
SQLite Tuetut tietotyypit: NULL INTEGER kokonaisluku REAL Reaaliluku, float, desimaali. Tallennetaan 1-8 tavun tarkkuudella luvun suuruudesta riippien TEXT String tyyppiset tekstit BLOB Tieto tallennetaan siinä muodossa kuin on lähetetty. Esim. binääridata
SQLite Rajoituksia Ei erillistä päivä ja aika tyyppiä (kuten esim. datetime jne. MySQL:ssä) Aika ja päivämäärä voidaan tallettaa TEXT tyyppinä käyttäen ISO8601 formaattia: YYYY-MM-DD HH:MM:SS.SSS Ei erillistä boolean tyyppiä Käytetään integeriä ja tallennetaan joko 0 tai 1
Cursor Liittymä tietokannasta haettujen tietojen ja sitä kutsuvan aktiviteetin välillä Tallettaa SQL:ltä tulevan ResultSetin Cursoria voidaan automaattisesti hallinoida kutsumalla startmanagingcursor(cursor) metodia API11 tasosta ylöspäin startmanagingcursor on vanhentunut ja CursorLoaderia suositellaan käytettäväksi Hoitaa cursorin toimintakaaren ja poistaa jo käsitellyt rivit
Intent Intent on luokka joka sisältää toiminnon abstraktin kuvauksen Käytännössä lähetetään kutsuvan aktiviteetin tiedot kutsuttavalle toiselle aktiviteetille Intentin rooli on toimia sitovana elementtinä sovelluksessa jossa on useita eri aktiviteetteja esim. luo uusi viesti ja muokkaa viestiä Jos sovelluksessa on enemmän kuin yksi aktiviteetti tulee se lisätä AndroidManifest.xmlään <application> tagien väliin esim. <activity android:name=.noteedit /> Huom. piste nimen edessä tarkoittaa että aktiviteetin nimen eteen lisätään pakettinimi esim. com.example.testisovellus Uudelle aktiviteetille lähetetty Intent luodaan: Intent intent = new Intent(<context>,<uudenAktiviteetin luokka)
Intent, extrat ja Bundle Intentin välityksellä on mahdollista siirtää arvoja kahden eri aktiviteetin välillä Arvot tallennetaan Extra laajennuksen luotuun Intentiin Intent intent = new Intent(); intent.putextra(<string arvon nimi>, <String arvo>); Intentin Extrat voidaan vastaanottaa Bundleen Bundle bundle = new Bundle(); bundle = getintent().getextras(); getintent hakee aktiviteetille lähetetyn intentin ja getextras hakee laajennukset haetun intentin sisältä
ADB yhteys tietokantaan Android Debug Bridge Muodostetaan shell -yhteys ADB:llä komentokehotteessa adb.exe löytyy android-sdk:n platform-tools kansiosta Shell yhteys muodostetaan adb s emulator-5554 shell komennolla Jolloin saadaan yhteys androidin shell komentokehotteeseen: #_ Muodostetaan yhteys sqlite tietokantaan Androidin shellistä sqlite3 /data/data/projektin_nimi/databases/<tietokannan nimi> Tarkasta tietokantojen nimet esim. DDMS:n File Explorerilla Yhteys tietokantaan lopetetaan käskyllä.exit Jokaisen komennon jälkeen ;
ADB syntaksi adb <-d -e -s> <komento> -d yhdistää vain USB:hen kytkettyyn debugattavaan laitteeseen (vaatii että laitteessa on USB Debug enabloitu) -e Yhdistää ajettavaan emulaattoriin, toimii vain jos vain yksi emulaattori-instanssi käynnissä -s <emulaattorin sarjanumero> - yhdistää tiettyyn emulaattoriin esim s emulator-5556
ADB komennot shell muodostaa yhteyden androidin shelliin shell yhteys katkaistaan exit -komennolla start-server tarkistaa onko adb palvelinprosessi käynnissä, jos ei niin käynnistää kill-server lopettaa adb palvelinprosessin install asentaa.apk:n esim. adb e install testisovellus.apk pull & push Kopio tiedoston emulaattorilta/laitteelta tietokoneelle (pull) tai kopioi tiedoston tietokoneelta emulaattorille/laitteelle (push) adb e pull /system/build.prop d:/build_local.prop Kopioi emulaattorilta build.prop tiedoston system kansiosta tietokoneelle build_local.prop nimisenä tiedostona d:/:n juureen
ADB -komennot bugreport dumppaa dumpsys, dumpstate ja logcat tiedot näytölle adb e bugreport Yleisiä devices palauttaa kytkettyjen laitteiden sarjanumerot adb devices version kertoo ADB:n version adb version