archive-fi.com » FI » M » MOBIILIKEHITYS.FI

Total: 273

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • January | 2012 | Mobiilikehitys
    mitään parametreja self performSelectorInBackground selector laskeMiljoonaan withObject nil Seuraavat tärkeät huomioitavat ovat rivit NSAutoreleasePool pool NSAutoreleasePool alloc init pool release Muistinhallinnan kannalta on tärkeää että jokaisessa ohjelman säikeessä on ainakin yksi NSAutoreleasePool objekti joka ottaa vastaan autoreleasetut objektit vapauttaen ne automaattisesti muistista Kun kirjoittaa metodia joka suoritetaan taustasäikeessä kannattaa lisätä heti alkuun ja loppuun kyseiset rivit Tämän jälkeen voi rauhassa koodailla metodin sisälle mitä haluaa Yläpuolella olevassa esimerkkitapauksessa metodi laskee miljoonaan ja printtaa konsoliin jokaisen numeron Lisää tietoa säikeistä löytyy Applen sivuilta Esimerkki iOS multithreading Objective C säikeet threads Aloittelijat Alustat iOS iOS 5 Tutoriaalit Manuaalinen muistinhallinta for dummies iOS alustalla Osa 1 January 19 2012 jussi Leave a comment Manuaalinen muistinhallinta voi tuntua alussa haastavalta aloittelevalle ohjelmoijalle Useissa ohjelmointikielissä vastuu muistinhallinnasta on siirretty garbage collectorille joka hoitaa muistinhallintaa automaattisesti Apple lisäsi iOS 5 0 version myötä alustalleen ARC n Automatic Reference Counting joka estää tehokkaasti mm muistivuotoja ja olioiden vapauttamisesta johtuvia kaatumisia ARC ei tuo Objective C lle garbage collectoria vaan se lisää olioille tarvittavat retain ja release kutsut ennen ohjelman kääntämistä Xcode 4 2 tarjoaa työkalun jolla olemassa olevia projekteja voi konvertoida ARC yhteensopiviksi ARC n voi myös kytkeä pois päältä tiedostokohtaisesti Jos et kuitenkaan pysty tai halua käyttää projektissasi ARC tä voit noudattaa muutamaa ohjenuoraa jotka estävät turhia muistivuotoja ja kaatumisia Luokkamuuttujat Kun luot uuden luokkamuuttujan voit yksinkertaistaa muistinhallinnan tekemällä siitä propertyn ja asettamalle propertylle retain parametrin Heti tämän jälkeen kannattaa lisätä luokan dealloc metodin sisälle kutsun jolla vapautetaan muuttuja Sen jälkeen voit unohtaa muistinhallinnan kyseisen muuttujan osalta On vain yksi asia mikä pitää muistaa Aina kun asetat muuttujaan tietoa käytä self notaatiota ja vain autoreleasettuja olioita Käyttämällä self notaatiota autoreleasetulle objektille kutsutaan samalla retain metodia koska propertyyn oli asetettu retain parametri Kun ottaa tavaksi luoda luokan metodien sisällä vain autoreleasattuja objekteja välttyy monilta ikäviltä muistivuodoilta Tällöin ohjelmoijan ei täydy koskaan kutsua manuaalisesti olioiden retain ja release metodeja koska kaikki tarvittava on hoidettu propertyn esittelyssä ja luokan dealloc metodissa Alla havainnollistava esimerkki aiheesta EsimerkkiYksi h interface EsimerkkiYksi NSObject NSString muuttujaYksi property nonatomic retain NSString muuttujaYksi void minunMetodi EsimerkkiYksi m implementation synthesize muuttujaYksi void minunMetodi self muuttujaYksi NSString stringWithString Testi teksti void dealloc muuttujaYksi release super dealloc end Lisää tietoa muistinhallinnasta iOS alustalla löytyy Applen sivuilta ARC Automatic Reference Counting Esimerkki iOS muistinhallinta iOS OpenGL ES 2 0 OpenGL ES 2 0 kehityksen aloittaminen January 19 2012 matti 4 Comments OpenGL ES 2 0 on ollut speksinä olemassa vuodesta 2007 ja tarjolla laitteissakin jo tovin 3D grafiikkaan nojaavia mobiileja menestystarinoita ei ihan Angry Birds mittakaavassa ole näkynyt mutta laitteiden alati parantuessa ja käyttökokemusten karttuessa 3D renderöinti saattaa hyvinkin nousta keskeisempään rooliin mobiilimaailmassakin Eivätkä ohjelmoitavan OpenGL ES 2 0 shader pipelinen mahdollisuudet grafiikan piirtämiseen lopu Tässä artikkelissa käydään läpi muutama asia jotka on tiedostettava ja ehkä jopa osattava aloittaessaan OpenGL ES 2 0 kehitystä Varsinaisena kohdeyleisönä ovat ne joilla on edes jonkinlainen käsitys 3D grafiikan periaatteista ja ovat tehneet joitain asioita vanhanmallisella fixed pipeline OpenGL llä kuten OpenGL ES 1 1 tai desktop maailman OpenGL 1 x mutta tarjonnee teksti hieman lohtua aivan vasta alkajallekin Ensin käydään läpi uudet asiat jotka tulevat vastaan kun siirrytään fixed function renderöinnistä programmable pipelinen maailmaan ja lopuksi rakennetaan yksinkertainen 3D softa iOS lle käyttäen Xcoden OpenGL ES wizardia Matriisit 3D grafiikan kulmakivi kuvausmatriisit olivat sisäänrakennettuina vanhassa OpenGL ssä glPushMatrix glPopMatrix glRotate jne myötä Programmable pipelinessä matriisipinoa ei ole tarjolla ja matriisioperaatiot on toteutettava itse Käytännössä kaikki alustat tarjoavat omat matriisikirjastonsa tähän QMatrix4x4 Qt ssä android opengl Matrix Androidille sekä iOS 5 0 alkaen GLKMatrix4 iPhonelle tarkoitukseen Jos affiinit kuvaukset eivät ole tuttuja aika oppia ne on nyt Kuvausmatriisien hallinta on käytännössä ehdoton vaatimus modernin OpenGL n taitamiselle Shaderit Matriisien ohella shaderit ovat suurin muutos Fixed pipeline hoiti käyttäjän puolesta geometrian transformoinnin ja pikselien piirtämisen programmable pipelinessä kaikki tehdään itse Tämä mahdollistaa valtavan paljon enemmän kontrollia siihen mitä ollaan tekemässä vanha OpenGL käytännössä vaan konfiguroitiin uploadattiin geometria ja tekstuurit asetettiin valot ja transformaatiot ja sen jälkeen OpenGL hoiti loput lopputulokseen ei voinut vaikuttaa kauheasti Kaikki tämä on nyt toisin ja ainakin ne joilla on softwarerenderöintitaustaa iloinnevat tästä Shaderin kirjoittajalla on täysi valta ja toisaalta myös vastuu piirtää geometria juuri sillä tavalla kuin huvittaa Shaderit ovat käytännössä pienia C kieltä muistuttavia OpenGL Shader Language GLSL ohjelmia joita ajetaan erittäin tehokkaissa shader prosessoreissa näytönohjaimella GLSL n eri versiot ovat keskenään hieman erilaisia versio 1 20 on yhteensopiva OpenGL ES 2 0 n kanssa OpenGL ES 2 0 ssa näitä shadereita on kahdenlaisia ns Vertex Shaderit sekä Fragment Shaderit Rutkasti tiivistäen shaderit toimivat seuraavasti vertex shader ohjelmaa kutsutaan ajurin raudan toimesta kerran per polygonin vertex Vertex shader hoitaa geometrian transformoinnin ja voi laskea lisää asioita kuten valaistuksia distance fogia jne Vertex shaderin laskutoimitusten lopputulokset outputit interpoloidaan yli piirrettävänä olevan polygonin ja tarjoillaan inputteina fragment shaderille varying muuttujina Fragment shader laskee näiden avulla lopullisen piirrettävän pikselin fragmentin väriarvon Tämä on fragment shaderin ainoa output Nyrkkisääntönä tee kaikki laskenta minkä voit vertex shaderissa ja säilytä fragment shader mahdollisimman yksinkertaisena Esimerkki Vertex Shaderista Attribuutteja jotka lähetetään shaderille OpenGL stä automaattisesti jahka ne on enabloitu attribute vec4 position transformoimaton object space koordinaatti attribute vec3 normal transformoimaton object space vertex normaali attribute vec2 tex coords tekstuurikoordinaatit u v Uniformeja OpenGL stä manuaalisesti lähetettyjä arvoja jotka ovat samat koko piirrettävälle geometrialle uniform mat4 modelViewProjectionMatrix uniform mat3 normalMatrix Fragment shaderin outputit varying lowp float ndotVarying varying mediump vec2 texCoordsVarying Vakio const vec3 lightPosition vec3 0 0 0 0 1 0 void main Lasketaan valaistusarvo pinnan normaalin ja valon suunnan välisestä kulmasta kosinilla dot joka rajataan väliin 0 1 vec3 eyeNormal normalize normalMatrix normal float ndot max 0 0 dot eyeNormal normalize lightPosition Valmistellaan outputit näiden interpoloidut arvot päätyvät fragment shaderille inputeiksi ndotVarying ndot texCoordsVarying tex coords Geometrian transformointi gl Position on varattu sana output muuttujalle johon tämä informaatio kirjoitetaan gl Position modelViewProjectionMatrix position Esimerkki Fragment Shaderista uniform lowp sampler2D texture OpenGL stä passattu handle tekstuuriin Shaderin inputit nämä laskettiin fragment shaderissa interpoloitiin raudan toimesta ja ovat nyt tarjolla lopullisen pikselin värin laskemiseksi varying lowp float ndotVarying varying mediump vec2 texCoordsVarying void main Tämän shaderin

    Original URL path: http://mobiilikehitys.fi/2012/01/ (2016-04-30)
    Open archived version from archive


  • December | 2011 | Mobiilikehitys
    blockkeja voi käyttää näkymien liikutteluun Luo uusi projekti tähän esimerkkiin riittää single view application Lisää xib tiedostoon yksi nappi ja yksittäinen view kuvassa sininen neliö Viewlle teet IBoutletin jotta voit käskyttää sitä koodistasi Lisää vielä nappulaan IBAction joka laukaisee animaation nappulaa painettaessa Tässä esimerkissä block animaatiota käytetään näkymän view liikutteluun ruudulla ja palauttamiseen takaisin alkuasemaan mutta yhtä hyvin näkymällä voitaisiin tehdä muita efektejä kun häivyttäminen alpha 1 alpha 0 tai vaikka näkymän koon kasvattaminen vaihtamalla näkymän framen kokoa Animaatio taikatemppu tapahtuu seuraavanlaisesti kahdella sisäkkäisellä block animaatiolla joista jälkimmäinen palauttaa liikutetun view n takaisin paikoilleen void animateView last animation has not completed if isAnimating isAnimating YES UIView animateWithDuration 0 5 delay 0 options UIViewAnimationOptionCurveEaseOut animations CGRect animateViewXY animateView frame animateViewXY origin y animateViewXY origin y 100 animateView setFrame animateViewXY completion BOOL finished UIView animateWithDuration 0 5 delay 0 options UIViewAnimationOptionCurveEaseIn animations animateView setFrame animateViewOriginalFrame completion BOOL finished animation is complete we are ready to do it again isAnimating NO Jos yllä olevasta koodista jättää pois animaatiot ympyröivän bool checkkauksen voi animaatiota klikkailla käyntiin uudestaan ennen kuin edellinen on päässyt loppuunsa Lataa koko lähdekoodi tästä AnimationBlock animaatiot tarinoita mobiilikehityksen maailmasta Mobiilikehitys fi Mobiilikehitys fi on Qvik Oy n työntekijöiden ylläpitämä blogi jonka kirjoittajilla on vankka mobiilialan asiantuntijuus Blogissa käsitellään kaikkea mobiilikehitykseen liittyvää ja vähän siitä vierestäkin Seuraa Facebookissa Seuraa Twitterissä Blogin RSS syöte Onko yrityksesi vailla mobiiliosaajia Qvik Oy tekee suuret ja pienet mobiiliprojektit ota yhteyttä niin käynnistetään sinun yrityksesi mobiiliprojekti Recent Posts Sijaintipalvelut iOS applikaatioissa 2 Geokoodaus Sijaintipalvelut iOS applikaatioissa OUYA Android konsoli Windows Phone 8 ja parantunut HTML5 tuki Porttautuva koodi mobiilissa Archives November 2013 August 2013 June 2013 April 2013 February 2013 January 2013 December 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October

    Original URL path: http://mobiilikehitys.fi/2011/12/ (2016-04-30)
    Open archived version from archive

  • November | 2011 | Mobiilikehitys
    osa alue on hyvä hallita Testaus niin kuin kaikki muukin välttämätön epämukavuus on hyvä suorittaa kehityksen ohella kuin sen jälkeen On paljon helpompaa testata se mitä on juuri tehnyt kuin kaikki mitä on tehty kehitysvaiheen aikana Testaus kehityksen yhdeydessä tekee koodista myös helpommin testattavaa Jälkikäteen testattaessa voi hyvinkin olla mahdotonta tehdä testejä ilman koodin muuttamista Tässä artikkelissa käymme läpi Androidin testivälineitä ja käytäntöjä Testit on hyvä suunnitella yksinkertaisiksi toistettaviksi ja mahdollisimman vähän aikaa vieviksi Hyvä ratkaisu tähän on testikoodi jotka voi sitten vain ajaa tarvittaessa Jokaista loppukoodin luokkaa kohden on hyvä tehdä oma testiluokkansa joka testaa luokan julkiset metodit riittävällä testijoukolla Hyvä nyrkkisääntö on ettei testimetodeita ole koskaan liikaa eikä yhden metodin kannata kaikkea tehdä Yksikkötestaus JUnitilla Eclipseen tulee Android SDK n mukana valmis wizard Android JUnit testiprojektien luomiseen Yksityiskohtainen ohje JUnit testien tekemiseen ja ajamiseen löytyy developer android com sivustolta Hello Testing Käymme muutaman yksityiskohdan läpi oman testikoodin ja testisalkun avulla Testisalkku on kokoelma testiluokkia jotka suoritetaan peräkkäin Jokaisen testiluokan voi suorittaa myös erikseen Android developers sivuston esimerkissä on huonosti mainittu että testi projektiin pitää muistaa lisätä linkki testattavaan projektiin Voit lisätä tämän projektin asetuksista properties Java build path valikosta projects välilehdestä Tai testiprojektia luotaessa heti toisessa valikossa joten muista painaa next äläkä finnish Developer sivuston esimerkki on myös hiukan vanhemmasta Android SDK sta mutta sisältö on sama vain luonti wizard on yksinkertaistunut Testisalkku package fi androidkehitys esimerkkiapp test import junit framework Test import junit framework TestSuite public class AllTests Testisalkku missä kaikki testiluokat lisätään return Test public static Test suite TestSuite suite new TestSuite AllTests class getName suite addTestSuite EsimerkkiTesti class return suite Testisalkun voi ajaa suoraan run as ja Android JUnit test Testiluokka package fi androidkehitys esimerkkiapp test import fi androidkehitys applikaatio MyActivity import java util List import android test ActivityInstrumentationTestCase2 public class RSSTest extends ActivityInstrumentationTestCase2 MyActivity public RSSTest super fi androidkehitys applikaatio MyActivity class Override protected void setUp throws Exception super setUp Testi metodi public void testPotenssiMetodiOne assertTrue Metodi parametrillä 1 palautti väärän arvon potenssiMetodi 1 1 public void testPotenssiMetodiTwo assertTrue Metodi parametrillä 2 palautti väärän arvon potenssiMetodi 2 4 Override protected void tearDown throws Exception getActivity finish super tearDown Testiluokan kaikki julkiset metodit ovat testi tapauksia ja suoritetaan testauksessa Tässä testiluokassa ei tarvitsisi käyttää aktiviteettiä vaan tehdä yksinkertainen TestCase luokan ilmentymä mutta usein Android metodit voivat tarvita kontekstin tai pääsyn resursseihin joten yleisin yleisimmissä testitapauksissa tarvitset aktiviteetin parametrien käyttöön Aktiviteettien testaus on hiukan ongelmallisempaa yksikkötesteissä koska view komponenttejä ei saa käsitellä UI säikeen ulkopuolella Ratkaisu tähän on seuraavassa kappaleessa esiteltävä black box testaus ja Robotium framework Black box testaus Robotiumilla Black box testauksella tarkoitetaan testausta missä ei tarvitse pääsyä koodiin vaan painellaan laatikon nappuloita Robotiumille riittää päästä käsiksi applikaation apk pakettiin Black box testauksella pystyy tekemään monimutkaisiakin käyttötapaustestejä mutta yksinkertaisuus on yleensä parempi tavoite sillä monimutkaiset testit alkavat kaatua pienilläkin muutoksilla Android tarjoaa rasitustestaukseen oman Monkey Runner in joka simuloi satunnaisia mutta toistettavia painalluksia applikaation näyttöön Tällä on kuitenkin mahdotonta testata jotain tiettyä tarkasti määriteltyä ominaisuutta applikaatiossa Robotium on voimakas työkalu Andoridin black box testaukseen

    Original URL path: http://mobiilikehitys.fi/2011/11/ (2016-04-30)
    Open archived version from archive

  • October | 2011 | Mobiilikehitys
    pitivät tänä aamuna yhteisen julkistustilaisuuden jossa päivänvalon näkivät Googlen uusi Android 4 0 käyttöjärjestelmä Ice Cream Sandwich sekä Samsungin kehittämä uusi Google Nexus puhelin Uuden Android käyttöjärjestelmän suurimmat uudistukset keskittyvät lähinnä parempaan käyttökokemukseen Seuraavassa lista tärkeimmistä käyttäjille näkyvistä uudistuksista Parannettu UI Kuten aikaisempien versioiden kanssa myös Ice Cream Sandwich tuo uuden käyttöliittymäteeman ja värimaailman Lisäksi uusi kirjasintyyppi parantaa tekstin selkeyttä ja luettavuutta suurempia näyttöjen kanssa Aloitusnäytön kansiot Android 4 0 ssa käyttäjät voivat ryhmitellä applikaatioita ja pikakuvakkeita näppärästi omiin kansioihin Ryhmittely onnistuu helposti raahaamalla kuvakkeita toistensa päälle Widgettien koot muutettavissa Yksi ainakin allekirjoittaneelle mieluisa uudistus on mahdollisuus muuttaa widgettien kokoja Kokomuutokset ovat toki olleet mahdollisia Android 3 x laitteissa mutta nyt myös muutkin kuin tablet käyttäjät pystyvät käyttämään koko näyttöalan fiksusti hyödyksi Lukitusnäytön uudistus Myös lukitusnäyttö on saanut uudistuksia uudessa näytössä on mahdollista tehdä asioita ilman että lukitusta tarvitsee avata Esimerkiksi käyttäjä voi avata Kamera applikaation ja ottaa kuvia tai hallinnoida soitettavaa musiikkia Datakäytön kontrollointi Ehkäpä suurin Ice Cream Sandwich sta löytyvä innovaatio on datakäytön kontrollointityökalu Käyttäjä voi liittymäsopimuksesta riippuen asettaa erilaisia muistutuksia ja rajoituksia datakäytölle jolloin käyttäjän pitäisi säästyä ikäviltä laskuyllätyksiltä Muita uudistuksia Näiden uudistusten lisäksi Android 4 0 ssa on paljon muita uudistuksia Mainitsemisen arvoisia asioita ovat uudistetut Kamera ja Galleria applikaatiot Galleria applikaatioon on lisätty myös muutamia kuvankäsittelyominaisuuksia Näiden lisäksi kalenteria on parannettu sekä käyttöjärjestelmästä löytyy nyt myös saneluominaisuus Kehittäjiä kiinnostavat uudistukset Kehittäjien kannalta katsottuna Android 4 0 n tuoma suurin uudistus on että Android 3 0 ssa julkistetut uudet ominaisuudet kuten Action Bar Fragment luokka parannettu tuki suurille näytöille ja HTTP Live Streaming ovat nyt käytettävissä sekä puhelimissa että tableteissa Tämän lisäksi Ice Cream Sandwich tuo toki oman osuutensa uusien ominaisuuksien listaan Social API Social API tarjoaa yhteisen rajapinnan käyttäjän tietojen ja sosiaalisen kanssakäymisen hallintaan Social API n avulla voidaan hallinnoida helposti käyttäjän kontakteja profiilitietoja status päivityksiä ja valokuvia Calendar API Uudistetun Kalenteri applikaation ja Calendar API n avulla käyttäjän kalenterin lukeminen ja uusien kalenterimerkintöjen lisääminen helpottuu Android Beam Android Beam on NFC en perustuva ominaisuus joka mahdollistaa tietojen helpon siirtämisen NFC laitteiden välillä Beamin avulla on mahdollista siirtää esimerkiksi kontaktitietoja kuvia ja videoita sekä liittyä keskusteluun tai videopuheluun Multimediauudistukset Android 4 0 tarjoaa uuden low level tuen streamauksen hallintaan Uudistus mahdollistaa paremman mediadatan hallinnan esimerkiksi applikaatio voi itse hakea datan purkaa kryptauksen ja sen jälkeen ohjata datan käyttöjärjestelmälle näytettäväksi Toinen mukava multimediaan liittyvä uudistus on audio remote control API joka mahdollistaa musiikkisoittimien ohjauksen lukitusnäkymästä niin että käyttäjän voi hallinoida soitettavaa musiikkia avaamatta puhelimen lukitusta Näiden lisäksi Ice Cream Sandwich iin on lisätty WebP ja VP8 tuki sekä tuki Matroskalle jossa sisältö on joka Vorbis ja VP8 formaatissa UI uudistukset 4 0 ssa on mukana uusi GridLayout luokka jolla on mahdollista luoda matalampia UI hierarkioita mikä puolestaan tarkoittaa nopeampaa käyttökokemusta Toinen varsin mukava uudistus on että kaikkien Android 4 0 laitteiden tulee tukea kiihdytettyä 2D piirtämistä mikä myös parantaa käyttöliittymän piirtonopeutta ja parantaa käytön sulavuutta Näiden lisäksi Android 4 0 ssa on muutamia muita kehittäjille suunnattuja uudistuksia Tärkeimpänä kredentiaalien tallennukseen luotu keychain API johon voidaan tallentaa

    Original URL path: http://mobiilikehitys.fi/2011/10/ (2016-04-30)
    Open archived version from archive

  • September | 2011 | Mobiilikehitys
    kerrallaan Tämä täytyy tehdä jokaisessa paikassa missä listaa käsitellään Esimerkiksi pelin osia liikuttelevassa säikeessä synchronized starList for Iterator Star iterator starList iterator iterator hasNext Star star iterator next star move if star getY maxHeight iterator remove Koska poistamme listasta putoavan tähden jos se menee ruudun ulkopuolelle joudumme käyttämään iteraattoria koska listasta poistaminen sen läpikäynnin aikana ei suoraan ole mahdollista Säikeissä tarvitsee pääasiassa vain metodit säikeen käynnissä olon asettamiseen ja run metodin oma toteutus missä säikeen suoritusaikainen toiminta tapahtuu Sijettä ei tule tappaa stop metodilla sillä se voi jättää ohjelmistosi outoon tilaan Tämän sijasta tulisi käyttää run metodissa while lausetta joka toistuu niin kauan kuin säikeen sisäinen while ehto muuttuu epätodeksi ja run metodi pääsee suorittamaan loppuun Säikeet joiden run metodi on päässyt suoriutumaan kokonaan tapetaan automaattisesti järjestelmän toimesta Jos et halua säikeesi vievän kaikkea prosessointitehoa aseta säie jokaisen while luupin lopuksi odottamaan jonkin aikaa Piirtopintaa ei esimerkiksi kannata päivittää useampaa kuin 60 kertaa sekunnissa ja tämäkin on yleensä liikaa Säikeen voi myös pakottaa käynnistymään kutsumalla sille notify metodia Lataa esimerkki tästä Voit nyt tehdä esimerkiksi oman versiosi kitarasankarista ja pudottaa ruudun yläpäästä kuvia ja tarkastella osuuko käyttäjä niihin ennen kuin ne putoavat ulos ruudulta 2D Android Animaatio grafiikka Kuvat Suorituskyky Thread Android Manifest Sovelluskehitys Android Manifest September 7 2011 tommy Leave a comment Android manifest voi aluksi näyttää vaikealta ymmärtää mutta ilman sitä ei koodia voi suorittaa Tässä artikkelissa opetetaan Android manifestin perus käyttö ja käydään läpi vaativammat käyttömahdollisuudet Manifestin rakenne Androidin dokumentaatiosta xml version 1 0 encoding utf 8 manifest uses permission permission permission tree permission group instrumentation uses sdk uses configuration uses feature supports screens compatible screens supports gl texture application activity intent filter action category data intent filter meta data activity activity alias intent filter intent filter meta data activity alias service intent filter intent filter meta data service receiver intent filter intent filter meta data receiver provider grant uri permission meta data provider uses library application manifest Nämä on osattava Käytetään esimerkkinä SQL tietokanta artikkelissa annettua koodia ja sen AndroidManifest xml ää xml version 1 0 encoding utf 8 manifest xmlns android http schemas android com apk res android package androidkehitys fi database android versionCode 1 android versionName 1 0 uses sdk android minSdkVersion 7 application android icon drawable icon android label string app name activity android name DatabaseActivity android label string app name intent filter action android name android intent action MAIN category android name android intent category LAUNCHER intent filter activity activity android name EnterProductActivity activity application manifest Manifestissä ei elementtien sisään tule muuta kuin toisia elementtejä Arvon kirjottaminen elementin sisään ei toimi ja aiheuttaa virheen Kaikki arvot mitä manifestissä annetaan tulee antaa elementtien parametreissä manifest elementin attribuuteiksi tulee applikaation oletuspaketti versionumeroja nimi Elementin sisälle asetetaan minimi versio Android käyttöjärjestelmästä Esimerkiksi tässä tapauksessa käytetty API versio 7 on Android 2 1 update 1 Manifest elementin sisälle tulee myös application elementti jossa määritellään applikaation ikoni ja nimi Applikaatio elementtien sisällä tehdään jokaiselle aktiviteetille jonka käyttäjä voi käynnistää activity elementti Mikäli aktiviteetti on samassa paketissa kuin

    Original URL path: http://mobiilikehitys.fi/2011/09/ (2016-04-30)
    Open archived version from archive

  • August | 2011 | Mobiilikehitys
    kokeilla Product product name product count product description Lataa esimerkin lähdekoodi Jatkamme SQLiteOpenHelper luokkaa omalla toteutuksellamme ja luomme taulut onCreate metodissa Taulujen sarakkeiden nimet voi kätevästi tallettaa finaaleina muuttujina erillisiin sisäluokkiin jotta ne on määritelty vain yhdessä paikassa ja selkeästi jäsenneltyinä Taulujen luonti tapahtuu samoilla SQL komennoilla kuin normaalin tietokannan luonnissa Komentojen kirjoittaminen koodissa vain on hiukan eri näköistä jos sen tekee StringBuilderilla Create table lauseen voi antaa myös suoraan stringinä private static final class ProductTable public static final String PRODUCT NAME product name public static final String PRODUCT COUNT product count public static final String PRODUCT DESCRIPTION product description Override public void onCreate SQLiteDatabase db StringBuilder sql new StringBuilder sql append CREATE TABLE append PRODUCT TABLE NAME append sql append ProductTable PRODUCT NAME append TEXT sql append ProductTable PRODUCT COUNT append INTEGER sql append ProductTable PRODUCT DESCRIPTION append TEXT sql append PRIMARY KEY append ProductTable PRODUCT NAME append sql append db execSQL sql toString Tiedon tallentaminen tietokantaan Tieto tallennetaan tietokantaan SQLiteDatabase luokan instanssilla joka saadaan SQLiteOpenHelper ltä perityllä getWritableDatabase metodilla Näin saatuun tietokantaolioon voi suorittaa kyselyitä tai lisäyksiä Lisättävät arvot on asetettava ContentValues luokan ilmentymällä joka pitää sisällään avain arvo pareja jossa avaimet ovat tietokannan sarakkeen nimiä ja arvo tietokantariville tulevan sarakkeen arvo Jokaiselle tietokantariville täytyy luoda oma ContentValues joukkonsa Hyvän ohjelmointitavan mukaista on että tietokantametodit palauttavat boolean arvon riippuen onnistuiko metodi vai ei Tietokantakyselyt luonnollisesti palauttavat kyselyn tuloksen boolean addProduct Product product boolean result true SQLiteDatabase db this getWritableDatabase ContentValues values values new ContentValues values put ProductTable PRODUCT NAME product getName values put ProductTable PRODUCT DESCRIPTION product getDescription values put ProductTable PRODUCT COUNT product getQuantity long id db insert PRODUCT TABLE NAME null values if id 1 Log e TAG Could not add product result false return result Tiedon hakeminen tietokannasta Tietokannan lukemiseen riittää vain lukemiseen tarkoitettu SQLiteDatabase olio jonka saa getReadableDatabase metodilla Kyselyn voi toteuttaa yhteen tauluun query metodilla joka tarvitsee useanlaisia parametrejä Tietokantaan voi myös suorittaa kyselyitä rawQuery metodilla mille voi argumenttinä antaa sql kyselyn suoraan stringinä Metodeista saadaan paluuarvona Cursor luokan ilmentymä Kursori antaa pääsyn haettuun tietokantatauluun Tässä esimerkissä käymme kursorin jokaisen rivin läpi ja otamme sarakkeiden tiedot getString ja getInt metodeilla missä parametreinä on sarakkeen numero alkaen nollasta Sarakkeet ovat samassa järjestyksessä kuin kyselyssä annetussa argumentissä Kursori tulisi aina muistaa sulkea sen käyttämisen jälkeen List Product getProducts SQLiteDatabase db this getReadableDatabase String colums new String ProductTable PRODUCT NAME ProductTable PRODUCT COUNT ProductTable PRODUCT DESCRIPTION Cursor cursor db query PRODUCT TABLE NAME colums null null ProductTable PRODUCT NAME null null cursor moveToFirst List Product products new ArrayList Product while cursor isAfterLast false String name cursor getString 0 Log v TAG Found product name Product product new Product name product setDescription cursor getString 2 product setQuantity cursor getInt 1 products add product cursor moveToNext cursor close return products Tiedon poistaminen Tiedon poistaminen tietokannasta tapahtuu hyvin samalla tavalla kuin lisääminen Metodin onnistumisen seuraaminen onnistuu helpoiten kun se palauttaa boolean arvon SQLiteDatabase tarjoaa metodin delete taulun nimi where lause where parametrit joka palauttaa poistettujen rivien lukumäärän boolean deleteProduct

    Original URL path: http://mobiilikehitys.fi/2011/08/ (2016-04-30)
    Open archived version from archive

  • July | 2011 | Mobiilikehitys
    dokumentaation iOS kehitykseen mutta osa käytettävistä keinoista on kuitenkin jätetty jostain syystä liian pienelle huomiolle Yksi esimerkki on heikommasta dokumentoinnista on tilanne jossa UIScrollView komponentin sisällä on UIPickerView komponentti tälläisessä tapauksessa UIScrollView nappaa kaikki kosketukset eikä näin ollen UIPickerView ole käytettävissä Ratkaisu ongelman on varsin yksinkertainen tai olisi jos se kerrottaisiin dokumentaatiossa Jotta saat UIPickerView n toimimaan kuten normaalisti on sinun luotavat oma kustomoitu versio UIScrollView stä joka toteuttaa metodin touchesShouldCancelInContentView CustomScrollView h import interface CustomScrollView UIScrollView end CustomScrollView m import CustomScrollView h implementation CustomScrollView BOOL touchesShouldCancelInContentView UIView view cancels touches to any UIPickerView UIPickerView has class description UIPickerTable if view class description isEqualToString UIPickerTable return NO return YES end Tämän lisäksi on CustomScorllView tä käyttävässä luokassa asettava CustomScrollView lle seuraavat ominaisuudet ja näille arvot CustomScrollView canCancelContentTouches YES CustomScrollView delaysContentTouches NO Sopiva paikka ominaisuuksien asettamisille on esimerkiksi CustomScrollView ta käyttävän luokan ViewDidLoad metodissa iPhone UIPickerView UIScollview Android Sovelluskehitys Ulkoasu Omat layout elementit Androidissa July 12 2011 tommy Leave a comment Android tarjoaa runsaan valikoiman erillaisia graafisia elementtejä Usein tulee kuitenkin vastaan tilanne jossa näiden valmiiden elementtien toiminnallisuus ei riitä Java ja Android antavat kuitenkin tehokkaan ja hyvän tavan toteuttaa omia layout luokkia Graafiset elementit periytyvät aina View tai ViewGroup luokista Helpoin tapa aloittaa omien näkymien tekemisen on tekemällä yläluokka jo olemassa olevasta layout elementistä jonka toiminnallisuus on mahdollisimman lähellä haluttua Oman näkymäluokan tekeminen antaa tarkan kontrolliin elementin ulkonäköön ja toiminnallisuuteen Näkymäluokkia on myös mahdollisuus yhdistää ja näin sitoa useiden elementtien välinen toiminnallisuus yhteen Esimerkiksi listan aktiivihakuun voi yhdistää tekstikentän ja listan samaan elementtin näin ei aktiivihaun koodia tarvitse tuoda aktiviteetin muun toiminnallisuuden kanssa samaan paikkaan Useita elementtejä yhdisteltäessä helpoin tapa on määritellä elementit erillisessä xml ssä ja käyttää LayoutInflateriä luomaan näkymä Tässä esimerkissä luodaan aktiivihaun toiminnallisuus oman graafisen elementin sisään Elementti sisältää EditText kentän ja ListViewn haku xml xml version 1 0 encoding utf 8 LinearLayout xmlns android http schemas android com apk res android android orientation vertical android layout width fill parent android layout height fill parent EditText android id id search field android layout height wrap content android layout width fill parent ListView android id id search list android layout width fill parent android layout height fill parent LinearLayout Aktiivihaku java public class Aktiivihaku extends ViewGroup View view Luontimetodi aktiivihaku näkymälle Luo näkymän haku xml perusteella param context Näkymän yhteys ohjelman yleiseen informaatioon param attrs xml ssä määritellyt atribuutit public Aktiivihaku Context context AttributeSet attrs super context attrs LayoutInflater inflater LayoutInflater context getSystemService Context LAYOUT INFLATER SERVICE view inflater inflate R layout haku this list ListView view findViewById R id search list sortField EditText view findViewById R id search field adapter new ListAdapter getContext 0 0 COUNTRIES list setAdapter adapter sortField addTextChangedListener new TextWatcher Override public void onTextChanged CharSequence s int start int before int count Override public void beforeTextChanged CharSequence s int start int count int after Override public void afterTextChanged Editable s adapter getFilter filter sortField getText Yleisin käyttö omille näkymä luokille on yhden tai muutaman toiminnallisuuden muuttaminen tämä onnistuu korvaamalla override olemassaolevan metodin samannimisellä metodilla

    Original URL path: http://mobiilikehitys.fi/2011/07/ (2016-04-30)
    Open archived version from archive

  • April | 2011 | Mobiilikehitys
    apk paketin jonka voi viedä markettiin Uuden ohjelman julkaisu vaatii joitakin pakollisia resursseja Ensinnäkin tärkein eli edellä mainittu allekirjoitettu ohjelman paketti apk Lisäksi vähintään kaksi ruutukaappausta jotka ovat kooltaan joko 320 480 480 800 480 854 tai 1280 800 Nämä ruutukaappaukset voit tehdä kätevästi Eclipsen DDMS välilehdellä vaikka emulaattorista Kuvista pakollisena vaaditaan vielä ohjelman suuri ikoni jonka koko on 512 512 Tämä ikoni näytetään Android marketin web sivulla Kuvien lisäksi vaaditaan vielä muutamia tekstejä ohjelman nimi joka voi olla 30 merkkiä pitkä ja kuvaus joka voi olla jopa 4000 merkkiä pitkä Näiden lisäksi voidaan vielä esimerkiksi lisätä teksti joka kuvaa viimeisimmät muutokset ohjelmaversioden välillä Ohjelman voi myös alustavasti vain tallentaa markettiin jos haluaa julkaista sen myöhemmin Kun ohjelman julkaisee niin se tulee markettiin lähes välittömästi Hakuihin se tulee vähän myöhemmin mutta suoraan paketin nimellä ohjelman löytää Julkaistujen ohjelmien lautausmääriä voi seurata samalta sivustolta Tänne tulevat myös mahdolliset bugiraportit joita käyttäjät ovat lähettäneet julkaisu paketointi tarinoita mobiilikehityksen maailmasta Mobiilikehitys fi Mobiilikehitys fi on Qvik Oy n työntekijöiden ylläpitämä blogi jonka kirjoittajilla on vankka mobiilialan asiantuntijuus Blogissa käsitellään kaikkea mobiilikehitykseen liittyvää ja vähän siitä vierestäkin Seuraa Facebookissa Seuraa Twitterissä Blogin RSS syöte Onko yrityksesi vailla mobiiliosaajia Qvik Oy tekee suuret ja pienet mobiiliprojektit ota yhteyttä niin käynnistetään sinun yrityksesi mobiiliprojekti Recent Posts Sijaintipalvelut iOS applikaatioissa 2 Geokoodaus Sijaintipalvelut iOS applikaatioissa OUYA Android konsoli Windows Phone 8 ja parantunut HTML5 tuki Porttautuva koodi mobiilissa Archives November 2013 August 2013 June 2013 April 2013 February 2013 January 2013 December 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 April 2011 March 2011 February 2011 January 2011 Categories Alustat 63 Android 24 HTML5 7 iOS 30 Windows Phone 12 Julkaisu 5 Käyttöjärjestelmät 4

    Original URL path: http://mobiilikehitys.fi/2011/04/ (2016-04-30)
    Open archived version from archive