Symbian-ohjelmointia, osa 2

symbiatch - 31.01.2006 09.27 - mobiili ohjelmointi 

Yksi iso osa Symbiania on asynkronisuus. Kaikki mitä normaalisti olet tottunut tekemään synkronisesti sujuu paljon vaikeammin Symbianissa. Esimerkiksi jos haluat ladata JPEG-kuvan, normaalisti sinun tarvitsee vain pyytää konversiomodulia lataamaan kuva ja saat sen paluuarvona. Tämä olisi liian helppoa, joten Symbianissa asiat tehdään toisin.

Jos haluat ladata kuvan, sinun täytyy ensin luoda konversio-olio. Sen jälkeen sinun täytyy kertoa sille minkä kuvan haluat ladata. Tämä metodi palautuu heti, mutta kuvaa ei ole vielä ladattu. Se on vain mennyt jonoon ja hoidellaan joskus. Nyt sinun täytyy odottaa takaisinkutsua, jossa kerrotaan kuvan olevan auki. Sen jälkeen pyydät purkamaan kuvan, tämäkin kutsu palautuu heti, mutta kuva puretaan taustalla ja saat tästäkin takaisinkutsun.

Eli jos vain haluat ladata kuvan ja näyttää sen ruudulla, joudut odottelemaan sitä hetkeä kun Symbian päättää sen tehdä. Et voi suoraan vain jäädä odottelemaan kuvaoliota ja sen jälkeen piirtää sitä ruutuun. Se olisi liian käyttäjäystävällistä.

Sama koskee kameraa. Ensin sinun pitää varata kamera. Sen jälkeen takaisinkutsussa käynnistää kamera. Sen takaisinkutsussa voit sitten asettaa parametrit ja vaikka käynnistää esikatselun. Entä jos et haluakaan heti esikatselua, mutta vähän myöhemmin? Sinun pitää rakentaa monimutkainen seurantajärjestelmä, josta tiedät onko kamera jo valmis vai ei.

Oletan että tällaisilla järjettömän runsailla asynkronisuuksilla on haettu sitä, että käyttöliittymä pysyy koko ajan käytettävänä eikä sovellus näennäisesti jumitu, jos vaikka kuvan muunnoksessa meneekin sekunti tai pari. Olisi kuitenkin "ihan kiva", jos voisi itse valita käytetäänkö asynkronisuutta vai tehdäänkö asia synkronisesti. Varsinkin kun nykylaitteissa nämä kutsut eivät kestä kovinkaan kauaa.

Lue kommentit (5) | Kommentoi

bFree tai sitten ei

symbiatch - 30.01.2006 13.37 - mobiili 

Testasin ohimennen Itäkeskuksessa Nokian bFree-palvelua. Mainostivat Virtuoso Zoneksi sitä siinä A3-kokoisessa julisteessa, joka oli lätkäistu kahvikopin kylkeen. Latasinpa sitten sovelluksen (kävi lähettämällä yhteystieto "bFree-laitteelle" joka sitten lähetti sovelluksen takaisin) ja käynnistin.

Kun olen kokeillut muita Nokian sovelluksia, en odottanut paljoa. Silti yllätyin. Sovellus on erittäin hidas, käyttöliittymä laahaa perässä puoli sekuntia (ja käytössä sentään 6680, jossa on melko tehokas prosessori). Musiikkikappale latautui hitaasti, mutta BT-yhteydet nyt ovat hitaita. Käyttöliittymä käyttää vain osan ruudusta (yläosassa pitää kertoa, että olen coolzonessa ja että sovellus toimii vain tietyissä paikoissa), valikko aukeaa sekunnin viiveellä. Musiikin soidessa edes äänenvoimakkuutta ei voinut säätää. Joten aika nopeasti sen sammutin kun ei ollut edes kuulokkeita.

Kaiken kaikkiaan ehkä tuota joku kahvilla istuessaan voisi kokeilla, mutta ei se kyllä minua vakuuttanut. Kuuluu samaan sarjaan Sensorin ja muiden kanssa, eli "hei kato, joku teki tollasen, brändätään se äkkiä Nokiaksi ja hehkutetaan hurjasti, mutta ei laiteta sitä toimimaan oikein missään." bFreehän toimii jopa kuudessa pisteessä Helsingissä, eli kahden firman pisteissä Forumissa, Iso Omenassa ja Itäkeskusessa. Suosio on taattu.

Kommentoi

Symbian-ohjelmointi, osa 1

symbiatch - 25.01.2006 14.57 - mobiili ohjelmointi 

Ajattelin kirjoitella hieman asiaa Symbian-ohjelmoinnista näin suomeksi, jos siitä olisi jollekin hyötyäkin. Kaikenlaista on tullut vastaan ja voi sanoa ettei vieläkään paljoa tuosta hirvityksestä tiedä. Mutta oppia ikä kaikki.

Virheilmoitukset

"Emulaattori" on siitä surkea laitos, ettei se anna kovinkaan hyviä virheilmoituksia kehittäjälle, jos antaa mitään. Siinä mielessä toimii täysin samoin kuin oikeakin käyttis. Hieman parempaa tietoa virheistä saa joka tapauksessa luomalla emulaattorin asennushakemiston alla olevaan Epoc32\wins\c\System\Bootdata-hakemistoon tiedoston errrd. Huomaa kolme R-kirjainta ja ei tiedostopäätettä. Tämän jälkeen emulaattori kertoo paniikin syyn ja myös esimerkiksi muistivuotopaniikeissa osoitteen, joka jäi vapauttamatta. Tämä toimii myös kännyköissä (siellä hakemisto tietysti C:\System\Bootdata, vaatii uudelleenkäynnistyksen).

Debug-moodi

Aja aina kehityskoodia debug-emulaattorilla! Debug-moodissa emulaattori panikoi ohjelmaa suljettaessa jos esimerkiksi muistia on jäänyt vapauttamatta tai et ole sulkenut jotain resurssioliota (R-alkuiset luokat).

Muistivuodot

Muistivuotojen löytämiseen kannattaa käyttää HookLogger-työkalua. Asenna työkalu ja lue mukana tullut esimerkki. Vakiona mainittu hookeuser-komento ei yleensä toimi (luonnollisesti, onhan kyse Symbianista) vaan skriptiä pitää muokata. Skripti löytyy vakiona hakemistosta Program Files\Common Files\Symbian\Tools. Avaa hookeuser.pl, korjaa seuraavat rivit:

74: my $cmd = "copy \"$hooks_src\"";
77: $cmd = "\"$Bin/AttachDll\" $euser $hooks $hooked_euser";

Virhe johtuu siitä, ettei oteta huomioon vakiohakemistossa olevan välilyöntejä, joten komennot sekoavat.

Tämän jälkeen mene SDK:n juureen ja aja komento hookeuser wins. Tämän jälkeen HookLogger on käytössä.

Käynnistä ensin HookLogger ja sen jälkeen debug-emulaattori. Saatat saada virheen, jossa kerrotaan UID-filtteröinnin olevan toimimaton. Tämä ei ole vaarallista, mutta aiheuttaa sen, ettei HookLogger osaa erotella sinun ohjelmasi ja muiden ohjelmien muistinvarauksia.

Käynnistä ohjelmasi, tee mitä ohjelmalla tekisit ja sulje se. Tämän jälkeen jos saat paniikin muistiongelmasta, jätä se emulaattorin ruutuun. Avaa HookLoggerista Heap-välilehti, paina List all allocs ja odota. Listaus kestää jonkin aikaa. Tämän jälkeen järjestä lista Ptr-kohdan mukaan ja etsi emulaattorin antama osoite (listan loppupäässä). Valitse rivi jolla osoite on ja paina Alloc details. Saat kutsupinon, josta näet missä kohtaa muisti varattiin. Korjaa koodisi siten, että muisti vapautetaan.

Paniikkikoodeja

USER 45
Tämä tarkoittaa yleensä sitä, että olet vapauttanut muistia, muttet ole asettanut osoitinta NULLiksi ja yrität vapauttaa muistia uudelleen. Tämä osoite ei kuitenkaan enää ole varatun muistin alkukohta, joten saat tämän virheen.
CONE 36
Tämä koodi tarkoittaa sitä, että sinulla on joku resurssiolio (R-alkuiset luokat) avattuna etkä ole sulkenut sitä. Käytätkö esimerkiksi RFs-luokkaa, muttet sulje?

Emulaattorin näppäinkomennot

Emulaattorissa on muunmuassa seuraavat näppäinkomennot käytettävissä:

Ctrl-Shift-Alt-T
Avaa taskinhallinnan josta voi vaihtaa sovellusta
Ctrl-Shift-Alt-A
Kertoo paljonko muistia senhetkinen sovellus vie
Ctrl-Shift-Alt-K
Tappaa senhetkisen sovelluksen

Lue kommentit (2) | Kommentoi

Nokia N91 -pikakokeilu

symbiatch - 11.01.2006 15.12 - mobiili 

Pääsin hypistelemään Nokia N91 -musiikkipuhelinta (ei lopullinen versio) ja aika mielenkiintoiselta vaikutti. 4 GB kiintolevy, Symbian 9.1 ja Series 60 3rd Edition, mutta ei yhtään isompi resoluutio kuin vanhemmissa puhelimissa. En ole aiempia N-sarjalaisia päässyt testailemaan, joten kaikki kommentit suhteessa aiempiin malleihin.

Ensimmäinen asia joka pisti silmään oli antialiasointi fonteissa ja fonttikoon pienentyminen. Vihdoinkin! Ikinä en ole tajunnut miksi pitää pakottaa kaikki käyttämään samaa jättifonttia kun 8 pisteen fontti näyttää vallan kauniilta kännykän ruudulla (nimim. testattu on). Nyt sitten ruudulle mahtuu vähän enemmän tavaraa ja luettavuus paranee huomattavasti. Näyttö on myös selkeä. Ärsyttävä pikkuyksityiskohta kylläkin on sitten se, että esimerkiksi 6680:ssa niin ihana 5 pikselin fontilla tehty 3G-teksti on tässä sutattu antialiasoinnilla melkein lukemattomaksi. Mutta ketäs tuo haittaa, paitsi minua nipottajaa.

Laitteessa on vakiona näkysällä D-pad, kaksi pehmonäppäintä ja luurit sekä tietysti musiikkinäppäimet (edellinen, seuraava, soita/pause, stop sekä soittimen käynnistysnappi). "Ohjelmistovalikkonäppäin" (mikä nyt oikeasti onkaan) on piilotettu oikealle sivulle ylös, josta sen käyttö on vaikeaa. Itse käytän tuota vähän väliä kun vaihtelen ohjelmia, joten ei hyvä. Pitkästä aikaa myöskin laitteessa on äänenvoimakkuussäädöt erillisinä nappeina, nämä vasemmalla ylhäällä.

Liukukannen alta paljastuva näppäimistö näyttää ensin ihan liian pieneltä. Kokeilun jälkeen se kuitenkaan ei ole niin huono kuin voisi olettaa. Napit tuovat mieleen mikrokytkimet, kunnon naksahdus kuuluu ja tuntuma on hyvä. Isommatkin sormet mahtuvat juuri alimmalle riville, joten ei mitään valittamista. C- ja ABC-näppäimet löytyvät ITU-nappien eri puolilta.

Näppäinlukossa on otettu selkeästi mallia SonyEricssonilta, nyt löytyy oma vipukytkin tälle. Toteutus on kylläkin huonompi kuin esimerkiksi SE W900i:ssä, jossa kytkin on liukuva ja takaisin palaava. Näppäimet lukittuvat heti kun kytkintä liu'uttaa, mutta avaamiseen tarvitaan hieman pidempi pito. N91:ssä taas kytkin vain käännetään toiseen asentoon. Näppäinlukko voi siis taskussa lähteä pois päältä helposti, mutta kukas kiintolevyluuria taskuun tunkisikaan. Näppäinlukko myös lähtee tilapäisesti pois kun avaa liukukannen ja takaisin päälle kun sen sulkee.

Tämän version musiikkisoittimen soittonäkymä oli todella karu, en voi kuvitella sen olevan lopullinen versio. En siis puhu siitä sen enempää. On valittavissa artistin, levyn, soittolistan jne mukaan soittoon kappaleita. Äänentoisto on huomattavasti parempi (luonnollisesti) kuin edellisissä normipuhelimissa, mutta bassoa ei juuri ulos saa sisäisestä kaiuttimesta. Jotenkin 7710:n bassontoisto omalla kaiuttimellaan tuntuu paremmalta. Kuulokkeilla asia sitten onkin eri.

Selain on paljon parempi kuin 2nd editioneissa, vaikkakin osittain aivan naurettava. Paria testaamaani sivua ei voi vierittää vaakasuunnassa, jos se menee ruudusta yli, joten tekstistä jää osa näkymättä. On myös pienen ruudun tila, jossa vain katkaistaan kaikki pitkät tekstit heti kun menevät ruudusta yli. Eli siis tämäkin kappale näkyisi näin: "Selain on paljon parem..." Todella fiksua?

(Tämän kappaleen) kameran kuvassa oli kauheita häiriöitä, joten sen laadusta ei pysty sanomaan yhtään mitään.

Monelta osalta positiivinen yllätys, varsinkin fonttien pienennys ja pehmennys, mutta myös monelta osin aikamoinen pettymys. Näkee paljonko muuttuu lopulliseen versioon ja paljonko jää samaksi.

Softankehityskokeilu jäi siihen kun bldmake ilmoittaa kylmästi: "Cannot determine the version of the RVCT Compiler." Ei sitten käännetä. Ei kai tämä tarkoita sitä, ettei Nokia toimita mukana edes GCC-versiota, vaan pitäisi ostaa maksullinen kääntäjä? Gigan verran muuten vie levytilaa jo kehitysympäristö, aika rankkaa. >400 megaa pelkät emulaattorit.

Lue kommentit (2) | Kommentoi

Paras mobiilipalvelu -kisa alkoi

symbiatch - 11.01.2006 12.39 - mobiili 

Paras Mobiilipalvelu 2005 -kisa on alkanut ja mukana on myös Java-versio Hain-sovelluksestamme (saatavilla tällä hetkellä vain tuon kisan wap-sivujen kautta, S60-väliversio on saatavilla sivuilta). Suosittelen kokeilemaan ja äänestämään ja saa tietysti tännekin antaa kommentteja softasta. Series60-versio on tulossa pian uusilla toiminteilla ja ulkoasulla myös, siitä kertoilen myöhemmin.

Kyseinen sivusto ei eilen oikein toiminut vielä hyvin, mutta josko sieltä jo saisi ladattua sovelluksiakin. Wap-sivujen linkit löytyivät jo eilen. Näköjään ei saa ladattua ja sivusto on rikottu siten, että Operan käyttäjät eivät pääse edes sovelluslistaan. Tarkistavat profiilin, jota Opera ei lähetä. Ei näin!

Myöskin äänestys on rikki. Otsikon "Vuoden 2005 paras mobiilipalelu on" alla ovat kaikki wap-palvelut, eivät suinkaan kaikki vanhat wap-sivut ja sovellukset. Samoin otsikon "Vuoden 2005 paras testivaiheen palvelu on" alla on kaikki sovellukset, välittämättä siitä ovatko uusia vai vanhoja. Nyt siis ei äänestäjä voi äänestää esimerkiksi kahta sovellusta, uutta ja vanhaa, kun valintalistat ovat rikki. Toisaalta, moni voi olla sitä mieltä, että esimerkiksi F-Securen tuotteet ovat testivaiheen tuotteita, joita ei ole testattu juurikaan...

Eniten ihmetyttää se, ettei tästä ole mediaa tiedotettu mitenkään. Nettimedioissa olisi hyvä mainita tästä, jotta saadaan paljon kokeilijoita ja sitä kautta toivottavasti palautetta tekijöillekin. Ehkä eivät ole vielä ehtineet uutisoida. Wap-osoitekin olisi mukavampi lyhyempänä, kiva naputtaa kännynäppiksellä wap.parasmobiilipalvelu.fi.

Kommentoi

 
Jutut.fi  |  Omat jutut  |  Muiden jutut  |  Kategoriat  |   kirjaudu