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".
  • paikkatieto | Mobiilikehitys
    Floridassa olevan St Petersburgin kaupungin Dictionaryn kABPersonAddressCountryKey avaimen arvon ollessa Russia palauttaa geokoodaaja itänaapurin entistä pääkaupunkia kuvaavan vastauksen reverseGeocodeLocation completionHandler palauttaa listan koordinaatteja vastaavia CLPlacemark olioita Parametrina metodi ottaa CLLocation olion CLLocation olion voi luoda ja alustaa CLLocation oliolla Kaikilla neljällä metodilla on samanlainen completion handler Se sisältää listan CLPlacemark olioita joita normaalisti on yksi kappale listassa ja NSError olion CLGeocoding oliolla on myös metodit isGeocoding ja cancelGeocode Geokoodauksen kumoaminen saa aikaan kCLErrorGeocodeCanceled tyyppisen virheilmoituksen Mitä täällä on CLPlacemark on luokka paikkatietojen esitystä varten Oliosta löytyy alueesta riippuen mm seuraavia tietoja paikan koordinaatit CLLocation olion muodossa Listan alueen maamerkeistä esim Golden Gate silta San Franciscossa listana NSString olioita paikan osoitetiodot Address Book yhteensopivina avain arvopareina paikan nimi kaupunki ja kaupunginosa mahdollistet läänit ja maakunnat joiden osa paikka on maa johon paikka kuuluu sekä maakoodi vesistö tai valtameri jossa paikka sijaitsee Vaihtoehto Applen geokoodauspalvelulle Applen tarjoaman geokoodauspalvelun lisäksi Googlella on Geokoodaus API Googlen paikkatietokanta on epäilemättä paljon kattavampi ja tarkempi kuin Applen oma mutta Applen valmiit CLGeocoding luokat tarjoavat hyvin nopean tavan muuttaa koordinaatteja informaatioksi ja toisin päin Yleensä Applen palvelu riittää katuosoitteiden ja kaupunkien nimien muuttamisen koordinaateiksi ja toisin päin Googlen palvelussa kehittäjä joutuisi itse parsimaan JSON tai XML muotoisen vastauksen itse Mielestäni Applen geokoodauspalvelun suurin puute on maamerkkien kauppojen ravintoloiden yms kiinnostavien kohteiden täydellinen puute Siitä huolimatta CLGeocoder on riittänyt useimpiin kehittämiini applikaatioihin CoreLocation geokoodaus iOS paikkatieto sijaintipalvelut 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

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


  • sijaintipalvelut | Mobiilikehitys
    iOS applikaatioissa November 8 2013 arttu Leave a comment Nykyaikaisista älypuhelimista ja tableteista löytyy välineet käyttäjän sijainnin selvittämiseen Sijaintia voi käyttää mobiiliapplikaatioissa monella tavalla käyttäjälle voidaan esimerkiksi tarjota lähiympäristöön liittyvää tietoa esimerkiksi paikallisuutisia tai käyttäjää voi muistuttaa hänen saapuessaan tärkeään paikkaan Liikuntasuorituksia kirjaava applikaatio voi muodostaa juoksureitistä kartan tallennettujen GPS päivitysten perusteella iOS SDK tarjoaa monipuolisen paikannuskirjaston nimeltään CoreLocation Kirjasto toimii rajapintana koodin ja mobiililaitteen fyysisten mittalaitteiden välillä mahdollistaen mm seuraavat asiat laitteen sijainnin paikantaminen parhaimmillaan alle kymmenen metrin tarkkuudella viestittäminen laitteen sijainnin muuttumisesta määritellyille alueille liikkumisen tarkkailu sijainnin tarkkailu ja siitä tiedottaminen applikaation ollessa taustalla applikaation käynnistäminen sijainnin muuttuessa merkittävästi Paikannuksen musta laatikko Mobiililaitteet hoitavat laitteen paikannuksen monella tavalla GPS paikantimella Wifi tukiasemien avulla ja kolmiomittaamalla puhelinmastoja CoreLocation valitsee automaattisesti sopivimman paikannusmenetelmän ja tarvittaessa yhdistelmää useasta menetelmästä Syy automaattiseen paikannusmenetelmän valintaan on laitteen virrankulutuksen minimointi ja paikannusnopeuden maksimointi Vaikka paikannusmenetelmän valinnan läpinäkymättömyys kuulostaa kehittämistä rajoittavalta helpottaa se kehittäjän työtä Käytännössä kehittäjän tarvitsee valita haluttu sijainnin tarkkuus ja kirjasto hoitaa kaiken muun Paikannusprosessi tapahtuu kahden luokan avulla jotka ovat CLLocationManager ja CLLocation CLLocationManager paikantaa sijiannin ja lähettää tietoa sijainnin muutoksista CLLocationManagerDelegate protokollan kautta päivityksiä kuuntelevalle delegaatille Kaikki paikannukseen liittyvät muutettavat asetukset löytyy tästä luokasta CLLocation kuvaa yhtä paikkatietopäivitystä Olio sisältää aikaleiman koordinaatit ja päivityksen tarkkuuden metreinä Mukana on myös tieto liikkeen suunnasta ja nopeudesta Kertakäyttöinen vai jatkuva paikannus Moni applikaatio tarvitsee sijaintitietoa vain kerran esimerkiksi käynnistyessään Yleensä kerran haettu paikkatieto riittää useimpiin tarpeisin Silloin on järkevää että CLLocationManager hakee käyttäjän sijaintia vain kun paikkatietoa ei ole haettu tai viimeisin paikkatietopäivitys on liian vanha tai epätarkka Yleensä applikaatioihin riittää yksi jaettu CLLocationManager olio jonka location propertyä muu applikaatio käyttää Jaettu CLLocationManager laitetaan silloin hakemaan käyttäjän sijaintia ja haku päätetään kun tarpeeksi tarkka sijainti on löydetty Tämän jälkeen jaetussa CLLocationManager oliossa on tallessa viimeisin haettu sijainti tallennettuna location propertyyn josta sijaintia tarvitsevat applikaation osat sitä voivat kysyä On syytä tarkastaa location propertyn aikaleima sillä applikaation käynnistyessä tai palatessa taustalta viimeisin sijaintipäivitys voi olla liian vanha kertomaan käyttäjän nykyisen sijainnin Paikannus applikaation ollessa taustalla Sijainnin paikantamista voi jättää päälle kun applikaatio siirtyy taustalle ajoon Paikannusmenetelmiä on kolme erilaista startUpdatingLocation jatkuva ja tarkka sijainnin päivitys startMonitoringSignificantLocationChanges epätarkka ja harvoin päivittyvä sijainnin seuraaminen startMonitoringForRegion tarkkailee liikkuuko laite määritellyn alueen sisälle tai pois alueelta Alueita voi olla seurannassa yhtäaikaisesti 20 kappaletta Kolmesta edellämainitusta menetelmästä ensimmäinen on tarkin ja sen ollessa käynnissä applikaatio pysyy koko ajan taustalla ajossa Tämä on paras vaihtoehto jos paikannusta käyttää esimerkiksi liikuntasovellukseen tai reittioppaaseen Haittapuolena on jatkuva akun kuluminen Kaksi jälkimmäistä seurantatapaa kuluttaa vähemmän akkua kuin ensimmäinen eikä applikaatio jää päälle taustalle Nämä menetelmät kuitenkin käynnistävät applikaation ja sijaintipaikannus pysyy päällä vaikka laitteen sammuttaisi ja käynnistäisi uudestaan Sijaintipalveluiden käyttö taustalla XCode projektiss a lisää CoreLocation framework projektiin Ota käyttöön Background modes Capabilities näkymästä Se löytyy projektin targetista Valitse Location updates Applikaatio saa nyt päivityksiä sijainnista ollessaan taustalla CoreLocationin haasteet ja ongelmat Laitteen sijainnin hakeminen yksittäistä käyttökertaa varten ei ole niin suoraviivaista kuin se voisi olla Sijainti toimitetaan asynkronisesti CLLocationManagerDelegate protokollan kautta asynkronisesti Ei siis ole olemassa suoraa myLocation getLocation tyylistä tapaa hakea

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

  • Sijaintipalvelut iOS-applikaatioissa | Mobiilikehitys
    voi jättää päälle kun applikaatio siirtyy taustalle ajoon Paikannusmenetelmiä on kolme erilaista startUpdatingLocation jatkuva ja tarkka sijainnin päivitys startMonitoringSignificantLocationChanges epätarkka ja harvoin päivittyvä sijainnin seuraaminen startMonitoringForRegion tarkkailee liikkuuko laite määritellyn alueen sisälle tai pois alueelta Alueita voi olla seurannassa yhtäaikaisesti 20 kappaletta Kolmesta edellämainitusta menetelmästä ensimmäinen on tarkin ja sen ollessa käynnissä applikaatio pysyy koko ajan taustalla ajossa Tämä on paras vaihtoehto jos paikannusta käyttää esimerkiksi liikuntasovellukseen tai reittioppaaseen Haittapuolena on jatkuva akun kuluminen Kaksi jälkimmäistä seurantatapaa kuluttaa vähemmän akkua kuin ensimmäinen eikä applikaatio jää päälle taustalle Nämä menetelmät kuitenkin käynnistävät applikaation ja sijaintipaikannus pysyy päällä vaikka laitteen sammuttaisi ja käynnistäisi uudestaan Sijaintipalveluiden käyttö taustalla XCode projektiss a lisää CoreLocation framework projektiin Ota käyttöön Background modes Capabilities näkymästä Se löytyy projektin targetista Valitse Location updates Applikaatio saa nyt päivityksiä sijainnista ollessaan taustalla CoreLocationin haasteet ja ongelmat Laitteen sijainnin hakeminen yksittäistä käyttökertaa varten ei ole niin suoraviivaista kuin se voisi olla Sijainti toimitetaan asynkronisesti CLLocationManagerDelegate protokollan kautta asynkronisesti Ei siis ole olemassa suoraa myLocation getLocation tyylistä tapaa hakea sijaintia Helpoin tapa hakea laitteen sijainti kerra on kutsua CLLocationManager luokan startUpdatingLocation metodia Kutsu käynnistää paikannuksen ja lähettää normaalisti 3 4 locationManager didUpdateLocations kutsua delegaatille sijainnin päivittymisestä Paikannus kannattaa lopettaa silloin kun kutsujen mukana tulevien CLLocation olioiden horizontalAccuracy attribuutti on tarpeeksi pieni eli paikannettu sijainti on riittävän tarkka applikaation tarpeisiin Haettavan sijainnin halutun tarkkuuden voi määritellä CLLocationManager olioon desiredAccuracy propertyyn Halutulla sijainnin tarkkuudella on suuri merkitys paikannuksen nopeuteen ja laitteen virran kulutukseen joten on suositeltavaa että haettavan sijainnin tarkkuus on niin pieni kuin se on välttämätöntä applikaatiolle Esimerkiksi paikallissäätä tai paikallisuutisia näyttävä applikaatio voi hyvin käyttää kCLLocationAccuracyThreeKilometers tarkkuutta kun taas juoksureittiä tallentava applikaatio vaatii tarkimman mahdollisen tarkkuuden eli kCLLocationAccuracyBest tarkkuuden Lopuksi Tämä kirjoitus esitteli pintapuolisesti CoreLocation kirjaston mahdollisuuksia Moni mielenkiintoinen ja hyödyllinen kirjaston osa kuten iBeacon majakat ja CLGeocoder geokoodauspalvelu jäivät tässä kirjoituksessa

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

  • GPS | Mobiilikehitys
    osat sitä voivat kysyä On syytä tarkastaa location propertyn aikaleima sillä applikaation käynnistyessä tai palatessa taustalta viimeisin sijaintipäivitys voi olla liian vanha kertomaan käyttäjän nykyisen sijainnin Paikannus applikaation ollessa taustalla Sijainnin paikantamista voi jättää päälle kun applikaatio siirtyy taustalle ajoon Paikannusmenetelmiä on kolme erilaista startUpdatingLocation jatkuva ja tarkka sijainnin päivitys startMonitoringSignificantLocationChanges epätarkka ja harvoin päivittyvä sijainnin seuraaminen startMonitoringForRegion tarkkailee liikkuuko laite määritellyn alueen sisälle tai pois alueelta Alueita voi olla seurannassa yhtäaikaisesti 20 kappaletta Kolmesta edellämainitusta menetelmästä ensimmäinen on tarkin ja sen ollessa käynnissä applikaatio pysyy koko ajan taustalla ajossa Tämä on paras vaihtoehto jos paikannusta käyttää esimerkiksi liikuntasovellukseen tai reittioppaaseen Haittapuolena on jatkuva akun kuluminen Kaksi jälkimmäistä seurantatapaa kuluttaa vähemmän akkua kuin ensimmäinen eikä applikaatio jää päälle taustalle Nämä menetelmät kuitenkin käynnistävät applikaation ja sijaintipaikannus pysyy päällä vaikka laitteen sammuttaisi ja käynnistäisi uudestaan Sijaintipalveluiden käyttö taustalla XCode projektiss a lisää CoreLocation framework projektiin Ota käyttöön Background modes Capabilities näkymästä Se löytyy projektin targetista Valitse Location updates Applikaatio saa nyt päivityksiä sijainnista ollessaan taustalla CoreLocationin haasteet ja ongelmat Laitteen sijainnin hakeminen yksittäistä käyttökertaa varten ei ole niin suoraviivaista kuin se voisi olla Sijainti toimitetaan asynkronisesti CLLocationManagerDelegate protokollan kautta asynkronisesti Ei siis ole olemassa suoraa myLocation getLocation tyylistä tapaa hakea sijaintia Helpoin tapa hakea laitteen sijainti kerra on kutsua CLLocationManager luokan startUpdatingLocation metodia Kutsu käynnistää paikannuksen ja lähettää normaalisti 3 4 locationManager didUpdateLocations kutsua delegaatille sijainnin päivittymisestä Paikannus kannattaa lopettaa silloin kun kutsujen mukana tulevien CLLocation olioiden horizontalAccuracy attribuutti on tarpeeksi pieni eli paikannettu sijainti on riittävän tarkka applikaation tarpeisiin Haettavan sijainnin halutun tarkkuuden voi määritellä CLLocationManager olioon desiredAccuracy propertyyn Halutulla sijainnin tarkkuudella on suuri merkitys paikannuksen nopeuteen ja laitteen virran kulutukseen joten on suositeltavaa että haettavan sijainnin tarkkuus on niin pieni kuin se on välttämätöntä applikaatiolle Esimerkiksi paikallissäätä tai paikallisuutisia näyttävä applikaatio voi hyvin käyttää kCLLocationAccuracyThreeKilometers tarkkuutta kun taas juoksureittiä

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

  • iPhone | Mobiilikehitys
    kutsutaan retain ja release metodeja väärissä järjestyksissä Toinen asia mikä pitää muistaa luodessa omia mutator metodeja on se ettei niiden sisällä pidä koskaan käyttää self notaatiota Alla esimerkki tilanteesta jossa ohjelma menee loputtomaan looppiin koska ohjelmoija käyttää getter metodin sisällä self notaatiota Jos olet epävarma on parasta olla muokkaamatta propertyille luotuja mutator metodeja EI NÄIN NSString minunTeksti return self minunTeksti Tapauksissa joissa objekteja säilötään esimerkiksi NSArray tai NSDictionary kokoelmien sisällä on huomioitavaa että sisään syötettäville objekteille kutsutaan automaattisesti retain metodia Muistivuotojen välttämiseksi kokoelmiin tulee syöttää vain autoreleasettuja objekteja ellei objektin oleteta säilyvän kokoelman tuhoutumisen jälkeen Alla esimerkki kokoelmien käytöstä void populoiArray EI NÄIN NSString testi NSString alloc initWithString Testi teksti self testiArray NSArray arrayWithObject testi testi muuttuja ei ole autoreleasettu Muistivuoto syntyy kun testArray tuhotaan void populoiToinenArray NÄIN NSString testi NSString stringWithString Testi teksti self testiArray NSArray arrayWithObject testi testi muuttuja on autoreleasettu testiArray ottaa sen haltuun ja vapauttaa sen kun testArray tuhotaan iOS iPhone memory management 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 tapauksessa lopullinen pikselin väri lasketaan seuraavasti sampletaan tekstuurista oikealta kohdalta pikseli ja kerrotaan se valoisuusarvolla 0 1 Lopputulos on kauniisti Lambert flat shadeutuva pinta jossa valo paistaa katselusuunnasta highp vec4 color texture2D texture texCoordsVarying ndotVarying gl FragColor on kuten kaikki gl prefiksin GLSL nimet varattu sana muuttujalle johon lopullinen fragment shaderin output kirjoitetaan gl FragColor color Muut asiat Koska meillä on shaderit ja niiden myötä valta piirtää miten haluamme monia vanhan OpenGL n kutsuja ei tarvita enää mihinkaan Esimerkkeinä vaikkapa glEnableClientState ja glEnable GL TEXTURE 2D Lisäksi GLUT kirjastoa ei ole tarjolla suoraan matriisikirjaston onkin kyettävä tarjoaamaan toiminnallisuus paitsi rotaatioiden translaatioiden myös perspektiivimatriisien luomiseksi Ideaalinen tila tietysti on että kehittäjä tietää miten glFrustum toimii Shadereihin liittyvät attributet ja uniformit pähkinänkuoressa attributet ovat mekanismi tuoda geometriaan liittyvä data vertex shaderille Niitä hallitaan glBindAttribLocation glEnableVertexAttribArray glVertexAttribPointer kutsuilla Uniformit taas ovat kehittäjän shadereilleen syöttämää dataa jotka ovat yhtenäisiä tästä nimi läpi koko kappaleen tai sen osan tai usean kappaleen geometrian esimerkiksi transformaatiomatriisit tekstuurit jne Uniformeja hallitaan glGetUniformLocation glUniform kutsuilla Toteutus OpenGL ES 2 0 Hello World Uusi Xcode ja iOS 5 0 ovat tehneet tämän helpoksi Xcodesta löytyy projektinluontiwizard jolla syntyy toiminnallisuudeltaan täydellinen OpenGL ES 2 0 sovellus shadereineen kaikkineen Wizardin luoma toteutus piirtää sinisen ja punaisen laatikon jotka pyörivät toistensa sekä omien keskipisteidensä ympäri Toinen laatikko piirretään GLSL llä

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

  • kontekstitietoinen | Mobiilikehitys
    osat sitä voivat kysyä On syytä tarkastaa location propertyn aikaleima sillä applikaation käynnistyessä tai palatessa taustalta viimeisin sijaintipäivitys voi olla liian vanha kertomaan käyttäjän nykyisen sijainnin Paikannus applikaation ollessa taustalla Sijainnin paikantamista voi jättää päälle kun applikaatio siirtyy taustalle ajoon Paikannusmenetelmiä on kolme erilaista startUpdatingLocation jatkuva ja tarkka sijainnin päivitys startMonitoringSignificantLocationChanges epätarkka ja harvoin päivittyvä sijainnin seuraaminen startMonitoringForRegion tarkkailee liikkuuko laite määritellyn alueen sisälle tai pois alueelta Alueita voi olla seurannassa yhtäaikaisesti 20 kappaletta Kolmesta edellämainitusta menetelmästä ensimmäinen on tarkin ja sen ollessa käynnissä applikaatio pysyy koko ajan taustalla ajossa Tämä on paras vaihtoehto jos paikannusta käyttää esimerkiksi liikuntasovellukseen tai reittioppaaseen Haittapuolena on jatkuva akun kuluminen Kaksi jälkimmäistä seurantatapaa kuluttaa vähemmän akkua kuin ensimmäinen eikä applikaatio jää päälle taustalle Nämä menetelmät kuitenkin käynnistävät applikaation ja sijaintipaikannus pysyy päällä vaikka laitteen sammuttaisi ja käynnistäisi uudestaan Sijaintipalveluiden käyttö taustalla XCode projektiss a lisää CoreLocation framework projektiin Ota käyttöön Background modes Capabilities näkymästä Se löytyy projektin targetista Valitse Location updates Applikaatio saa nyt päivityksiä sijainnista ollessaan taustalla CoreLocationin haasteet ja ongelmat Laitteen sijainnin hakeminen yksittäistä käyttökertaa varten ei ole niin suoraviivaista kuin se voisi olla Sijainti toimitetaan asynkronisesti CLLocationManagerDelegate protokollan kautta asynkronisesti Ei siis ole olemassa suoraa myLocation getLocation tyylistä tapaa hakea sijaintia Helpoin tapa hakea laitteen sijainti kerra on kutsua CLLocationManager luokan startUpdatingLocation metodia Kutsu käynnistää paikannuksen ja lähettää normaalisti 3 4 locationManager didUpdateLocations kutsua delegaatille sijainnin päivittymisestä Paikannus kannattaa lopettaa silloin kun kutsujen mukana tulevien CLLocation olioiden horizontalAccuracy attribuutti on tarpeeksi pieni eli paikannettu sijainti on riittävän tarkka applikaation tarpeisiin Haettavan sijainnin halutun tarkkuuden voi määritellä CLLocationManager olioon desiredAccuracy propertyyn Halutulla sijainnin tarkkuudella on suuri merkitys paikannuksen nopeuteen ja laitteen virran kulutukseen joten on suositeltavaa että haettavan sijainnin tarkkuus on niin pieni kuin se on välttämätöntä applikaatiolle Esimerkiksi paikallissäätä tai paikallisuutisia näyttävä applikaatio voi hyvin käyttää kCLLocationAccuracyThreeKilometers tarkkuutta kun taas juoksureittiä

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

  • paikannus | Mobiilikehitys
    osat sitä voivat kysyä On syytä tarkastaa location propertyn aikaleima sillä applikaation käynnistyessä tai palatessa taustalta viimeisin sijaintipäivitys voi olla liian vanha kertomaan käyttäjän nykyisen sijainnin Paikannus applikaation ollessa taustalla Sijainnin paikantamista voi jättää päälle kun applikaatio siirtyy taustalle ajoon Paikannusmenetelmiä on kolme erilaista startUpdatingLocation jatkuva ja tarkka sijainnin päivitys startMonitoringSignificantLocationChanges epätarkka ja harvoin päivittyvä sijainnin seuraaminen startMonitoringForRegion tarkkailee liikkuuko laite määritellyn alueen sisälle tai pois alueelta Alueita voi olla seurannassa yhtäaikaisesti 20 kappaletta Kolmesta edellämainitusta menetelmästä ensimmäinen on tarkin ja sen ollessa käynnissä applikaatio pysyy koko ajan taustalla ajossa Tämä on paras vaihtoehto jos paikannusta käyttää esimerkiksi liikuntasovellukseen tai reittioppaaseen Haittapuolena on jatkuva akun kuluminen Kaksi jälkimmäistä seurantatapaa kuluttaa vähemmän akkua kuin ensimmäinen eikä applikaatio jää päälle taustalle Nämä menetelmät kuitenkin käynnistävät applikaation ja sijaintipaikannus pysyy päällä vaikka laitteen sammuttaisi ja käynnistäisi uudestaan Sijaintipalveluiden käyttö taustalla XCode projektiss a lisää CoreLocation framework projektiin Ota käyttöön Background modes Capabilities näkymästä Se löytyy projektin targetista Valitse Location updates Applikaatio saa nyt päivityksiä sijainnista ollessaan taustalla CoreLocationin haasteet ja ongelmat Laitteen sijainnin hakeminen yksittäistä käyttökertaa varten ei ole niin suoraviivaista kuin se voisi olla Sijainti toimitetaan asynkronisesti CLLocationManagerDelegate protokollan kautta asynkronisesti Ei siis ole olemassa suoraa myLocation getLocation tyylistä tapaa hakea sijaintia Helpoin tapa hakea laitteen sijainti kerra on kutsua CLLocationManager luokan startUpdatingLocation metodia Kutsu käynnistää paikannuksen ja lähettää normaalisti 3 4 locationManager didUpdateLocations kutsua delegaatille sijainnin päivittymisestä Paikannus kannattaa lopettaa silloin kun kutsujen mukana tulevien CLLocation olioiden horizontalAccuracy attribuutti on tarpeeksi pieni eli paikannettu sijainti on riittävän tarkka applikaation tarpeisiin Haettavan sijainnin halutun tarkkuuden voi määritellä CLLocationManager olioon desiredAccuracy propertyyn Halutulla sijainnin tarkkuudella on suuri merkitys paikannuksen nopeuteen ja laitteen virran kulutukseen joten on suositeltavaa että haettavan sijainnin tarkkuus on niin pieni kuin se on välttämätöntä applikaatiolle Esimerkiksi paikallissäätä tai paikallisuutisia näyttävä applikaatio voi hyvin käyttää kCLLocationAccuracyThreeKilometers tarkkuutta kun taas juoksureittiä

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

  • Aloittelijat | Mobiilikehitys
    avustuksella Media Queryn käyttö CSS ssä pystyy määrittämään CSS tyylien säännöt sen perusteella minkä levyinen ikkuna tai laite on Tämä onnistuu CSS n media query ominaisuuden avulla alla kerrotulla tavalla Parametreina voidaan käyttää esimerkiksi laitteen leveyttä ja korkeutta sekä pikselitiheyttä 1 CSS tyylitiedoston aktivoiminen headissa ehtojen perusteella link rel stylesheet media screen and min device width 320px and min device pixel ratio 2 href retina styles css 2 CSS säännön aktivointi ehtojen perusteella media screen and min device width 320px and max device width 480px and min device pixel ratio 2 and webkit min device pixel ratio 2 and moz min device pixel ratio 2 display block 3 CSS tiedoston sisällyttäminen toiseen CSS tiedostoon import url styles retina iphone css screen and min device width 320px and max device width 480px and min device pixel ratio 2 and webkit min device pixel ratio 2 and moz min device pixel ratio 2 Mobiilikehityksen kannalta tärkeimpiä parametrejä ovat min device width ja max device width jotka rajoittavat tyylin käyttöä tietyn levyisille näytöille Näillä saadaan sivuston tyylit mukautumaan mobiilinäytölle min device pixel ratio tarkoittaa näytön pikselitiheyttä Tyypillisen tietokoneen näytön ja peruspuhelimen arvo on 1 mutta esimerkiksi iPhone 4 llä ja iPhone 4S llä tämä arvo on 2 Selitys tälle on ns retina näytössä näytön koko on iPhone 3G ssä ja iPhone 4 ssä on sama mutta näytön leveys ja korkeus on kaksinkertainen Tällöin sivustolla olevat kuvat näkyvät iPhone 4 n tarkemmalla näytöllä pikselöityneenä ja epätarkkoina sillä käytetyn grafiikan resoluutio on liian pieni Tämän säännön avulla voidaankin saada käyttöön tarkemmat grafiikat siihen pystyville näytöille media handheld on kiinnostava parametri mutta sen selaintuki on valitettavan rajallinen Esimerkiksi Safari jättää tämän parametrin kokonaan huomiotta joten parametri ei tunnista iPhonea Tätä parametria en siis suosittele käytettävän orientation tarkoittaa puhelimen asentoa eli onko puhelin vaaka vai pystysuunnassa orientation landscape tarkoittaa että puhelinta pidetään vaakasuunnassa kun taas orientation portrait tarkoittaa pystysuuntaa Media query CSS3 n tuoma uusi ominaisuus joka on jo kuitenkin nykyään erittäin laajasti tuettu Ajantasaisen listan tuetuista selaimista löydät caniuse com sivustolta Media Queryt Qvikin kotisivuilla Qvikin kotisivuilla on käytetty media queryjä sovittamaan sivuston ulkoasu näytön koon mukaiseksi Sivustolla käytetään kolmea eri moodia täysileveä portrait ja mobiili Täysileveässä moodissa käytettävät tyylit määritellään niin että sen leveys on vähintään 1024 pikseliä media screen and min device width 1024px Tällä leveydellä sivun kokonaisleveys on 1000 pikseliä Yksi sivuston käyttöliittymäelementeistä on neljän kiinteän leveyden laatikon gridi joka näyttää kokoleveällä näytöllä tältä Jos tämä osuus näytettäisiin tällaisenaan pienemmällä näytöllä boksit joko leikkaantuisivat tai niitä joutuisi skrollaamaan ja zoomaamaan Esimerkiksi tableteille kuten iPad pystymoodissa jonka leveys 768px on tässä tapauksessa käytännöllistä esittää tämä gridi eri tavalla Tyylitiedostossa nämä tyylit määritellään seuraavasti media screen and min device width 321 and max device width 999 Tällä tavalla määritellyt tyylitiedostot näkyvät esimerkiksi iPhonen vaakatilassa ja iPadin pystytilassa Alla kuvankaappaus Qvikin kotisivuilla Laatikot on asetettu 2 2 gridiin jolloin ne ovat luettavia Koska laatikoiden tarkoitus on tässä tapauksessa pysyä tasalevyisenä niin ne eivät vie enää koko ruutua tilaa On kuitenkin täysin mahdollista tehdä niin että kaksi laatikkoa veisivät aina sen 50 ikkunan leveydestä Tällöin niiden leveys määritellään CSS ssä prosenttilukuna sen containerista Qvikin sivut on tehty myös näyttämään käytännölliseltä myös mobiililaitteella eli 320px tai kapeammilla näytöillä Lisätietoa media queryjen käytöstä löytyy englanniksi W3C n sivuilta CSS media queries Aloittelijat HTML5 Mobiilisovellus web tekniikoilla perusteet March 9 2012 anton Leave a comment Perinteisillä web tekniikoilla on nykyään mahdollista tehdä natiivisovelluksen kaltaisia puhelimen tai tabletin näytöllä paremmin käytettäviä sovelluksia Tällöin sovellus on käytettävissä puhelimen web selaimella tai se voidaan paketoida natiiviapplikaatioksi esimerkiksi PhoneGap kirjaston avulla Web applikaation ero mobiilioptimoituun web sivustoon on natiiviapplikaation kaltaiset komponentit mahdollinen offline tila sekä animoidut siirtymät näkymien välilä Lisäksi web applikaatio voi sisältää puhelimen natiiviominaisuuksia hyödyntäviä toimintoja kuten esimerkiksi kameraa tai kiihtyvyysanturia Tässä artikkelissä kuvataan mobiiliapplikaation kehityksen perusteet olettaen että lukija on tutustunut web kehityksen saloihin etukäteen Jos et ole ennen tehnyt web sivustoja niin Google on listannut oivia web tutoriaaleja joilla pääsee helposti alkuun Suomenkielistä sisältöä kaipaaville sisältöä on vähän hankalammin löydettävissä mutta esimerkiksi Haaga Helian verkkojulkaisusivuilta löytyy aiheesta kohtuullisesti suomenkielistä sisältöä Mobiiliapplikaation luonti Esimerkiksi iOS ja Android ympäristöt tarjoavat mahdollisuuden lisätä web applikaation työpöydälle Tällöin iOS llä web applikaatio näkyy ohjelmanvaihtonäkymässä ja sillä on ikoni ja ns splashscreen natiivisovelluksen tapaan Alla on esimerkkipohja puhtaalle mobiiliapplikaatiolle DOCTYPE html html head title Testiohjelma title meta name viewport content width device width initial scale 1 maximum scale 1 user scalable no meta name apple mobile web app capable content yes meta name apple mobile web app status bar style content black link rel apple touch startup image href images startup png link rel apple touch icon href phone icon png link rel apple touch icon sizes 72x72 href pad icon png link rel apple touch icon sizes 114x114 href phone icon retina png link rel apple touch icon sizes 144x144 href pad icon retina png head body Tekstiä body html Web applikaation asetukset laitetaan head tagien sisälle Tämä esimerkki määrittää web applikaatiota seuraavasti meta name viewport content määrittää sovelluksen näkyvän alueen asetukset sivu on aina laitteen näkymän levyinen sekä pysty että vaakasuunnassa käytetty Tyypillisellä web sivustolla on zoomausominaisuus joka kuitenkin on monesti mobiiliapplikaatiossa epätoivottu ominaisuus Tässä esimerkissä tämä toiminnallisuus on disabloitu määrittämällä viewportille user scalable no Lisää viewport metatagin käytöstä löytyy esimerkiksi Mozilla developer networkin dokumentaatiosta englanniksi meta name apple mobile web app capable ja meta name apple mobile web app status bar style ovat Applen iPhonessa ja iPadeissa toimivat meta tägit Näistä ensimmäinen aktivoi applikaatiomaisen käytön jolloin ohjelmaa käytettäessä Safari piilottaa sen osoitepalkin Lisäksi kun ohjelma lisätään kotinäytölle ja avataan klikkaamalla ko lisättyä applikaatioikonia ohjelma avataan kokoruutunäkymään ilman ylä ja alapalkkia link rel apple touch icon määrittää ohjelman ikonin kun sen lisää työpöydälle Nimestään huolimatta se toimii myös Android laitteilla versiosta 2 1 eteenpäin Esimerkissä on lisätty ikoni useammalle eri koolle esimerkiksi 114 114 on ikoni iPhonen retina näytölle jossa ikonin standardikoko on juuri 114 x114 Uuden retina iPadin kuvakkeen koko on oletettavasti 144 144 mutta tätä tietoa ei ole vielä vahvistettu Lisätietoa ikoneiden määrittämisestä ja muista Mobile Safarin web applikaatioiden asetuksista löytyy

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