Szoftverfejlesztés a Google Android OS-re (Android 3.0, API level 11) Dudás András 2011 30 percben!
Tartalom Egy alkalmazás alapjai, alapvető építőkövek Fejlesztés mikéntje Technológia áttekintés Projektek, számonkérés További infó, elérhetőség
Az Android OS felépítése
Egy alkalmazás alapjai I. Activity Egy képernyőnyi információ / interakciós lehetőség prezentálására Megoldható több is, csak nem javasolt Egyéb : Broadcast receivers: rendszer és program üzenetekre reagáló komponens Content providers: magasabb szintű perzisztencia Intent: komponensek közötti interakció Fragment: API Level 11, Activity építőkocka Loader: API Level 11 A háttérben: Minden alkalmazás: Külön userként Külön processzként Komponens szegregáció: miért? Principle of least knowledge Resource efficiency Service Az elemi perzisztencia egysége Activityk mögötti adattárolás, koherens alkalmazás magja Külön Dalvek VM-en fut IPC természetesen van, lásd Intent, lifecycle hívások, etc.
Egy alkalmazás alapjai II. Életciklusok: Minden komponens különféle callbackekkel kell rendelkezzen, ezeket a rendszer az életciklus bizonyos pontjain meghívja, és a visszatérésig vár Ezek határozzák meg a viselkedést a rendszeresemények függvényében, illetve adják meg azon pontokat, amikor az adatokat perzisztálni kell. Az ide vonatkozó API referenciát kulcsfontossűgú megismerni!
Egy alkalmazás alapjai III. Adat perzisztencia: Bizonyos helyzetekben az Activity állapota megsemmisülhet Erre megoldást kínál a Bundle, és az onsaveinstancestate() callback. Vigyázat: ez a mechanizmus nem mindig működik! Vannak jobb megoldások, pl. Service (bár ezzel vigyázni kell), Content Provider. Milyen adatot hová érdemes tenni? Milyen adataink lehetnek? Activity (Fragment) specifikus Service specifikus Alkalmazás specifikus Távoli adat források, adatbázisok
Egy alkalmazás alapjai IV. Komponensek közti kommunikáció: Intent, szándék Tartalmaz: Akció: Mi a szándék. Pl. ACTION_MAIN elindíthatja az Activitynket mint az alkalmazás belépési pontja. Személetesebben, ACTION_DIAL Adat: Min hajtsa végre a vevő a szándékot. Pl.: ACTION_CALL akció esetén lehet az adat egy URI, tel:06201337434 Kategória A vevő komponensekre egy megkötés. Pl. CATEGORY_LAUNCHER: jelenjen meg az adott Activity az OS fő alkalmazás indító menüjében. Extrák : Flagek Lehet egy akció végrehajtási kérelme, vagy egy esemény megtörténtéről egy értesítés. A célbajuttatásuk módja, illetve a (potenciális) címzettek listája függ a tipusától Implicit, explicit Nem secure: a szűrők (később) nem védenek meg attól, hogy célba vegyenek egy Intentel.
Egy alkalmazás alapjai V. XML konfigurációs állományok és szerepük: AndroidManifest.xml Permission kérelmek Pl. android.permission.read_owner_data Egyátalán mi az a permission? Min API Level (lásd később) Servicek, Activityk, egyéb komponensek deklarálása Intent szűrők, amikkel megadhatjuk, milyen Intentekre reagálhat az adott komponens Alkalmazás ikonja (res/drawable/icon.png) Library link kérelmek Resourceok: (res/) Layout (res/layout) main.xml ( main a Resource ID) Az Activityk Viewjeinek viselkedés / kinézetleírása Values (res/values) strings.xm ( strings a Resource ID) Egyszerű String->String map, az alkalmazás által használt szövegek dependency injectionja, használható pl. lokalizációra
Támogatott techonlógiák Hang MP3;MIDI;AAC LC/LTP;Ogg Vorbis;PCM/WAVE;HE-AACv1 (AAC+);HE-AACv2 (enhanced AAC+);AMR-NB,AMR-WB Kép JPEG;GIF,PNG,BMP Videó MPEG-4 SP; H.263;H.264 AVC; VP8 3D OpenGL ES (NDK) Absztrakt : RenderScript Kommunikáció: Bluetooth, NFC, Wifi, USB Testing: JUnit MonkeyRunner A lista nem teljes.
3D részletesebben RenderScript new feature, 3.0 Relative kevés információ 3 fő eszköz ~C99 kód CUDA szerű compute API Az eredmény alkamazásba ágyazásának módszere Absztrakt, mégis natív kód 2 irányú kommunikáció adott Korábban zárt volt OpenGL ES alapú OpenGL ES Részleges support az NDK segítségével Gyors, picit talán jobban kitaposott, mint a RenderScript OpenGL ES alapú
Fejlesztési folyamat I. Alapvetően minden Android alkalmazás a Dalvik VM alatt fut: Java VM implementáció. Két fejlesztési megközelítés lehetséges: Konzolos fejlesztés Virtualizáció adott Szükséges hozzá: Android SDK Ant Eclipse SDK Virtualizáció adott Szükséges hozzá: Android SDK Eclipse Eclipse Android Development Tools plugin Natív kód integráció lehetséges: Android NDK, GNU Make, awk, Windows esetén Cygwin
Fejlesztési folyamat II. Eszközhasználat és virtualizáció: Android Virtual Device (AVD): nagyon jól paraméterezhető, virtuális telefon építhető vele, amin aztán tesztelni lehet. Némi hiányosság van, főleg a szenzorok terén. Android Debug Bridge (ADB): AVD vagy igazi telefonon történő teszteléshez. Rengeteg opció, parancs, jól dokumentált Kód API Level kiválasztása: Mi az az API level? Hogyan korrelál az Android verziókkal? A támogatott featureok nagy mértékben változnak a külömböző API szintek között Érdemes minél alacsonyabb szintet választani AVD felépítése, API level kiválasztása: A telefon API szintje létrehozásnál beállítható Annyi AVD-t lehet készíteni amennyire futja tárhelyből Egyszerre több AVD-t is lehet futtatni, és adott a lehetőség a kommunikációs képességek letesztelésére, akár virtuálisan felhívhatják egymást A hardware képességei is állíthatóak
Projektmunka Szabadon válaszott, egyeztetetett téma, vagy NIPG által megfogalmazott projekt NIPG projektek: Adott a lehetőség Android marketre kikerülésre, ELTE IP, ELTE-Soft keretein belül, bevétel részesedés. Max 2 hallgató / projekt. 4 Projekt: Gyro és accelerometer adatgyűjtés (távoli adatbázisba), megjelenítés, akár TDK is lehet. Accelerometer + Dasher, adatgyűjtés OpenCV fejegér Androidra (nehéz) Menu dinamikus átrendezés használatnak megfelelően, ajánló rendszer. Aki ezeken jól teljesít, nyáron mobil hightech projektben részvételi lehetőség, nemzetközi projektben, fizetés, diplomunka, Msc 16 kredit adott. A téma játékfejlesztés, arcfelismerés, arckifejezés-felismerés.
További Információ Az előadás letölthető: A honapomról: dna.web.elte.hu A tárgy honlapjáról: pszt.inf.elte.hu/index.php/mobil-alkalmazasokfejlesztese További információ: Az SDK-t letöltve a samples könyvtárban rengeteg érdekes példa van! developer.android.com android-developers.blogspot.com Sikeres ZH esetén [=)] tőlem, 4-729 Köszönöm a figyelmet!