Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Bojan Žlahtič
CAMERA NAVI - NAVIGACIJA S PRETOČNO VSEBINO V ŽIVO
Diplomsko delo
Maribor, avgust 2010
Diplomsko delo univerzitetnega strokovnega študijskega programa
CAMERA NAVI - NAVIGACIJA S PRETOČNO VSEBINO V ŽIVO
Študent: Bojan Ţlahtič
Študijski program: UN ŠP Računalništvo in informacijske tehnologije
Mentor: izr. prof. dr. Milan Zorman
Somentorica: asist. dr. Mateja Verlič
Maribor, avgust 2010
ZAHVALA
Zahvaljujem se mentorju izr. prof. dr. Milanu
Zormanu za pomoč in vodenje pri opravljanju
diplomskega dela. Prav tako se zahvaljujem
somentorici asist. dr. Mateji Verlič.
Posebna zahvala velja staršem, ki so mi
omogočili študij in punci, ki mi je stala ob strani.
IV
CAMERA NAVI - NAVIGACIJA S PRETOČNO VSEBINO V ŽIVO
Ključne besede: navigacija, sistem globalnega določanja položaja, pospeškometer,
kamera, senzor, mobilni telefon, mobilna aplikacija, Windows Mobile, knjižnica
Microsoft Foundation Class.
UDK: 621.395:004.43(043.2)
Povzetek
Diplomsko delo obravnava izkoriščanje naprednih zmožnosti modernih mobilnih
telefonov in združevanje teh naprednih zmožnosti za uporabo v preprosti navigacijski
aplikaciji. Poznavanje posameznih lastnosti teh naprednih naprav, ki jih ponujajo
moderni mobilni telefoni, nam omogoča, da te lastnosti uporabimo za pridobivanje nam
relevantnih informacij, ki lahko obogatijo malone vsako aplikacijo, ki te informacije
pravilno izkoristi. Tako v naši aplikaciji združujemo globalno določanje položaja,
zaznavanje pospeškov in koristimo kamero telefona na način, ki omogoča preprosto in
intuitivno navigacijo.
V
CAMERA NAVI - NAVIGATION WITH LIVE STREAMING
Key words: navigation, Global Positioning System, accelerometer, camera, sensor,
mobile phone, mobile application, Windows Mobile, Microsoft Foundation Class
Library.
UDK: 621.395:004.43(043.2)
Abstract
This diploma discusses the exploitation of advance capabilities of modern mobile
phones and the ability to combine these advance capabilities for use in a simple
navigation application. Knowing the individual characteristics of advance devices
offered by modern mobile phones allows us to use these properties to obtain
information relevant for us, that can enrich almost any application that makes correct
use of this information. Thus in our application we combine global positioning,
acceleration sensing, and the phone's camera, in a way that makes navigation simple
and intuitive.
VI
VSEBINA
1 UVOD ...................................................................................................................... 1
1.1 NAMEN IN CILJ DIPLOMSKEGA DELA .................................................................. 2
1.2 STRUKTURA DIPLOMSKEGA DELA ...................................................................... 2
2 MOBILNI TELEFONI .......................................................................................... 3
2.1 PROGRAMI ZA MOBILNE TELEFONE .................................................................... 3
2.2 PRENOSLJIVOST PROGRAMOV ZA MOBILNE TELEFONE ....................................... 4
3 NAPREDNE ZMOGLJIVOSTI MOBILNIH TELEFONOV ........................... 5
3.1 UPORABA NAPREDNIH ZMOŢNOSTI MOBILNIH TELEFONOV ................................ 5
3.2 SISTEM GLOBALNEGA DOLOČANJA POLOŢAJA ................................................... 7
3.3 ZAZNAVANJE POSPEŠKOV .................................................................................. 8
3.4 KAMERA MOBILNEGA TELEFONA ....................................................................... 9
4 UPORABLJENA STROJNA IN PROGRAMSKA OPREMA ........................ 10
4.1 LASTNOSTI UPORABLJENEGA MOBILNEGA TELEFONA ...................................... 11
4.2 IZBRANO PROGRAMSKO OKOLJE ...................................................................... 12
5 UPORABA POSAMEZNIH NAPREDNIH ZMOŽNOSTI MOBILNIH
TELEFONOV V SAMEM PROGRAMU .................................................................. 14
5.1 UPORABA SISTEMA GLOBALNEGA DOLOČANJA POLOŢAJA ............................... 15
5.2 UPORABA ZAZNAVANJA POSPEŠKOV ................................................................ 17
5.3 UPORABA KAMERE .......................................................................................... 19
6 INTERAKCIJA S PROGRAMOM .................................................................... 21
7 REZULTATI ......................................................................................................... 23
8 SKLEP ................................................................................................................... 25
9 VIRI, LITERATURA ........................................................................................... 27
10 PRILOGE .............................................................................................................. 28
10.1 NASLOV ŠTUDENTA ......................................................................................... 28
VII
10.2 KRATEK ŢIVLJENJEPIS...................................................................................... 28
VIII
SEZNAM SLIK
Slika 1: Prikaz osi pri 3D zaznavanju relativne pozicije v prostoru ................................. 7
Slika 2: Prikaz geografske višine in širine........................................................................ 8
Slika 3: Predstavitev osi pospeškometra na mobilnem telefonu ...................................... 8
Slika 4: Različni popularni mobilni operacijski sistemi ................................................. 10
Slika 5: Samsung Omnia i900 ........................................................................................ 11
Slika 6: Dodana moţnost za ustvarjanje Smart Device projekta .................................... 13
Slika 7: Moţnost emuliranja mobilnega telefona in moţnost izbire SDK-ja ................. 13
Slika 8: Predstavitev razdalje med dvema točkama ....................................................... 16
Slika 9: Poloţaji telefona, ki proţijo podane akcije ....................................................... 18
Slika 10: Bistveni koraki za uporabo programa ............................................................. 22
Slika 11: Prikaza porabe časa pri interakciji s programom ............................................ 24
IX
SEZNAM TABEL
Tabela 1: Lastnosti uporabljenega mobilnega telefona .................................................. 11
Tabela 2: Mejne vrednosti pospeškov za izvajanje posamičnih akcij ............................ 21
X
UPORABLJENE KRATICE
3D - Tri dimenzije; angl. »Three dimensions«
API - Vmesnik, ki dovoljuje programu komunicirati z drugimi programi; angl.
»Application programming interface«
GPS - Sistem globalnega določanja poloţaja; angl. »Global positioning system«
JVM - Java virtualni stroj; angl. »Java Virtual Machine«
MFC - Zbirka razredov v programskem jeziku C++; angl. »Microsoft Foundation Class
Library«
SDK - Razvojni paket za aplikacije; angl. »Software developers kit«
SMS - Kratka sporočila; angl. »Short Message Service«
ZDA - Zdruţene drţave Amerike; angl. »United States of America«
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 1
1 UVOD
Mobilni telefoni ţe zdavnaj niso več samo naprava za komunikacijo, ampak so vedno bolj
podobni osebnim pomočnikom, ki nam lahko v osebnem ţivljenju marsikatero stvar
olajšajo, seveda odvisno od tega, koliko so podprti, popularni, inovativni in čemu so
primarno namenjeni.
Glede na to, koliko dodatnih funkcionalnosti ponujajo sodobni mobilni telefoni, je uporaba
teh funkcionalnosti v realnih aplikacijah, ki jih uporabljamo in s katerimi se srečujemo
vsakodnevno, zelo mala.
V odvisnosti od operacijskega sistema in drugih specifikacij, ki mobilnemu telefonu
omogočijo različne napredne funkcionalnosti, je trenutno za mobilne telefone, ki veljajo za
bolj zmogljive, na trgu veliko število programov, med katerimi pa le redki izčrpajo
resnično vse zmoţnosti telefonov. Vsekakor je eden izmed razlogov za neuporabo
določenih funkcionalnosti ta, da končni uporabniki ne vedo, da so njihovi mobilni telefoni
sposobni veliko več, kot samo omogočati komunikacijo.
Izdelava programa, ki zdruţuje več kot le eno napredno funkcionalnost mobilnega
telefona, je smiselna kakor hitro s tem zagotovimo, da bo program bolj uporabniku
prijazen in bodo dodatne funkcionalnosti doprinesle k uporabnosti in zanimivosti
programa.
Programi za mobilne telefone dosegajo vedno večjo popularnost, pri čemer je pomemben
izgled, uporabnost in zanimivost programov, kar je razvidno tudi iz dejstva, da je leta 2009
99.4% vseh prodanih programov za mobilne telefone, prodal Apple [1].
Stran 2 Camera Navi - Navigacija s pretočno vsebino v ţivo
1.1 Namen in cilj diplomskega dela
V diplomskem delu smo ţeleli prikazati, kako lahko na zelo preprost način poveţemo več
naprednih funkcionalnosti mobilnih telefonov in jih zdruţimo v uporabniku prijazno
celoto. Večina novejših mobilnih telefonov, na katerih teče operacijski sistem, namreč
omogoča velik nabor dodatnih moţnosti, katere je potrebno samo smiselno uporabiti za
izboljšanje ţe obstoječih programov ali za izdelavo novih inovativnih aplikacij, s katerimi
lahko postavimo nova merila za programe na mobilnih telefonih.
Cilj diplomskega dela je bil izdelati enostaven program za navigacijo, ki zdruţuje več
različnih naprednih funkcionalnosti mobilnih telefonov na tak način, da je program do
uporabnika bolj prijazen in ponuja dodatne funkcije, ki olajšajo delo s programom in s
telefonom samim.
1.2 Struktura diplomskega dela
Diplomsko delo je sestavljeno iz osmih poglavij. Po uvodnem poglavju, opišemo lastnosti
sodobnih mobilnih telefonov in se dotaknemo problematike prenosljivosti med mobilnimi
telefoni. V tretjem poglavju predstavimo napredne funkcionalnosti, ki jih ponujajo sodobni
mobilni telefoni, in funkcionalnosti, ki so bile uporabljene v okviru diplomskega dela.
Četrto poglavje opisuje programske in strojne vire, ki so bili uporabljeni v okviru
diplomskega dela. Peto poglavje je posvečeno implementaciji in uporabi posameznih
funkcionalnosti programa. V šestem poglavju opišemo, kako uporabiti program na
mobilnem telefonu. V sedmem poglavju predstavimo rezultate diplomskega dela. V
osmem poglavju podamo objektivno oceno rezultatov in jih poveţemo s problemom,
zastavljenim v uvodu ter nakaţemo napotke za nadaljnje delo.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 3
2 MOBILNI TELEFONI
V povprečju ima vsak Slovenec mobilni telefon [2], iz česar je razvidno, da so mobilni
telefoni v veliki meri nepogrešljiv del našega vsakdana. Na naših mobilnih telefonih ne
sprejemamo samo klicev in pošiljamo kratkih sporočil (SMS), ker so moderni mobilni
telefoni sposobni veliko več. Uporaba mobilnih telefonov je dandanes omejena samo z
domišljijo in razpoloţljivimi viri posameznega telefona. Zmogljivost novejših modelov je
večja kot zmogljivost računalnikov, ki smo jih uporabljali le nekaj let nazaj.
Ko govorimo o mobilnih telefonih, je eden izmed pomembnih pokazateljev zmogljivosti
telefona ta, ali ima telefon operacijski sistem in katera različica operacijskega sistema je
nameščena. Starost operacijskega sistema oziroma verzija operacijskega sistema nam pove,
ali so določene programske funkcionalnosti ţe dodane in koliko virov nam je na razpolago
na danem mobilnem telefonu.
Na trgu, predvsem v Ameriki, so najbolj popularni operacijski sistemi: iPhone OS,
Android, Symbian OS, RIM OS in Windows Mobile OS [3].
Določeni proizvajalci mobilnih telefonov se omejijo samo na en operacijski sistem in na
tak način omogočajo enako razvojno okolje za vse njihove telefone. Spet drugi proizvajalci
mobilnih telefonov svoje telefone opremijo z različnimi operacijskimi sistemi in s tem
doseţejo več strank, ţal pa oteţijo razvoj določenih programov za vse njihove mobilne
telefone.
2.1 Programi za mobilne telefone
Vsak novejši mobilni telefon, ki ima nameščen operacijski sistem, ima ţe vnaprej
nameščene programe, ki poskrbijo za osnovne potrebe uporabnika in omogočajo določene
napredne funkcionalnosti. Nameščeni programi pa še zdaleč niso vse, kar je moţno
uporabljati na telefonu, v odvisnosti od operacijskega sistema imamo namreč velik nabor
Stran 4 Camera Navi - Navigacija s pretočno vsebino v ţivo
programov, ki si jih je moţno namestiti na mobilni telefon in s tem razširiti funkcionalnost
telefona. Največ aplikacij je trenutno na voljo za operacijska sistema iOS in Android.
Kljub veliki količini aplikacij za vse mobilne telefone je veliko manj aplikacij, ki bi
zdruţevale več naprednih moţnosti, ki jih ponujajo sodobni mobilni telefoni.
2.2 Prenosljivost programov za mobilne telefone
Večje število operacijskih sistemov nas privede do potrebe po prenosljivosti programov,
saj razvoj in implementacija programov za vsako napravo posebej predstavljata dolgotrajen
in mučen proces, ki še zdaleč ne zagotavlja enakega delovanja programa na različnih
telefonih in različnih operacijskih sistemih.
Ţal pa kljub podprtosti jave na večini mobilnih telefonov z operacijskim sistemom, to ne
omogoča razvoja prenosljivih programov, saj je JVM ( java virtualni stroj ) na večini
operacijskih sistemov uporaben samo za osnovne funkcionalnosti jave. Tudi plačniške
verzije javanskega virtualnega stroja, npr. JBlend, ne podpirajo naprednih javanskih
funkcionalnosti in s tem onemogočajo uporabo API-jev, ki so potrebni za uporabo
naprednih funkcionalnosti mobilnih telefonov.
Tako pridemo do spoznanja, de je ena izmed večjih ovir uporabe naprednih
funkcionalnosti mobilnih telefonov ta, da moramo za vsak operacijski sistem izdelati
aplikacijo, če ţelimo doseči večje število uporabnikov.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 5
3 NAPREDNE ZMOGLJIVOSTI MOBILNIH TELEFONOV
Današnji mobilni telefoni omogočajo velik nabor dodatnih zmogljivost, katerih primarni
cilj je izdelava sodobnih, stabilnih, zanesljivih in uporabniku prijaznih programov. Skoraj
vsak novejši mobilni telefon, če ravno nima operacijskega sistema v pravem smislu, ima
integrirano kamero za zajemanje videa in slik, moţnost snemanja in predvajanja zvoka,
moţnost dostopa do spleta in predvajanja radia. Kakor hitro mobilni telefon opremimo z
operacijskim sistemom, je moţno tudi nadgraditi strojne zmogljivosti telefona, saj bomo s
pomočjo operacijskega sistema lahko hkrati uporabljali pester nabor novih in ţe obstoječih
funkcionalnosti. Tako nam operacijski sistem med drugim omogoča uporabo naprav, ki jih
ponuja telefon na drugačen, inovativen način: na primer podatke pridobljene iz kamere
mobilnega telefona, direktno manipuliramo in jih uporabimo za poljuben program.
Med najbolj popularne napredne funkcionalnosti, ki jih ponujajo sodobni mobilni telefoni,
sodijo vsekakor: zaznavanje pospeškov, globalno določanje poloţaja, delo s senzorji kamer
mobilnih telefonov, uporaba vibracij mobilnega telefona ob dogodkih, uporaba
svetlobnega senzorja, uporaba optične miške mobilnega telefona, zaznavanje orientacije
mobilnega telefona, zaznavanje odprtja telefona, uporaba moţnosti priklopa mobilnega
telefona na televizor, uporaba koleščka in zaznavanje 3D orientacije [4].
3.1 Uporaba naprednih zmožnosti mobilnih telefonov
Uporaba naprednih zmogljivosti mobilnih telefonov nam omogoča izdelavo vedno boljših
programov. Moţnosti uporabe naprednih funkcionalnosti so velike, saj lahko vsak program
nadgradimo z novimi funkcijami, ki bodo ta program obogatile in naredile privlačnejšega
za uporabnike.
Izkoriščanje podatkov o spremembi pospeškov je v sodobnih mobilnih telefonih lahko
uporabljeno za omogočanje naprednih funkcij programov. Zaznane pospeške lahko
uporabimo za razne igre, ki so na mobilnih telefonih vedno bolj priljubljene. Podatke lahko
Stran 6 Camera Navi - Navigacija s pretočno vsebino v ţivo
tudi zajemamo in z njihovo pomočjo določamo razgibanost terena. Pridobljene podatke
lahko poveţemo tudi z dogodki, ki lahko poskrbijo za varnost telefona ali celo varnost nas
samih.
Globalno določanje poloţaja, je v mobilnih programih pogosto uporabljeno, saj
informacija o tem kje se nahajamo in kje se nahajajo drugi lahko zelo koristna. Določanje
poloţaja je uporabno ne le za določanje naše lokacije, ampak tudi za iskanje lokacij, kot
tudi za določanje naše lokacije, kar izkorišča veliko število programov.
Med moţnosti, ki se pojavijo z naprednimi funkcionalnostmi mobilnih telefonov, sodi tudi
zamenjava integriranih programov operacijskega sistema, ki te funkcionalnosti izkoriščajo,
z drugimi programi, ki so na voljo. Tako lahko na primer ustvarimo svoj vmesnik za
zajemanje slik in koristimo napredne moţnosti senzorjev, ki jih ponujajo kamere mobilnih
telefonov.
Mobilni telefoni lahko v programih koristijo tudi stimulacijo drugih človeških čutov, ne le
vizualnih in slušnih. Na primer, aplikacijo lahko opremimo tudi z vibracijo ob določeni
akciji uporabnika in te vibracije po intenzivnosti in trajanju manipuliramo na tak način, da
uporabniku pomagajo pri rokovanju s programom. Vibracije telefona so ne nazadnje v
veliki meri uporabljene tudi v mobilnih igrah.
Nekateri mobilni telefoni so opremljeni tudi tako imenovano optično miško, ki omogoča
preprostejšo interakcijo z mobilnim telefonom, čeprav so zasloni občutljivi na dotik
pogosteje pogosto uporabljena moţnost interakcije uporabnika s programom.
Novejša funkcionalnost, ki jo ponujajo sodobni mobilni telefoni je zaznavanje relativne
pozicije v 3D, prostoru s pomočjo magnetnega kompasa in pospeškometra, kot prikazuje
spodnja slika (Slika 1), s čimer bi bilo mnogim aplikacijam moţno razširiti funkcionalnost.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 7
Slika 1: Prikaz osi pri 3D zaznavanju relativne pozicije v prostoru
3.2 Sistem globalnega določanja položaja
Sistem globalnega določanja poloţaja, kot ga prikazuje spodnja slika (Slika 2), je vesoljski
globalni navigacijski satelitski sistem, ki zagotavlja zanesljive podatke o kraju in času v
vsakem vremenu, ob vsakem času in kjerkoli na zemlji ali blizu nje, če je omogočen
neoviran pogled na štiri ali več satelitov GPS.
Sistem globalnega določanja poloţaja vzdrţuje vlada ZDA in je prosto dostopen vsem, ki
imajo GPS sprejemnik, zato je vedno več programov in mobilnih naprav, ki ta sistem
izkoriščajo za beleţenje pozicij, hranjenje poti, iskanje pozicij in računanje raznih
podatkov, kot so razdalje in relativne pozicije glede na te razdalje.
Na področju mobilne telefonije je GPS v uporabi ţe nekaj let v obliki mobilnih
navigacijskih programov [5]. V zadnjih časih pa se podatki o lokaciji uporabljajo za razne
igre, npr.: geocaching, geotagging, waze in podobno.
Stran 8 Camera Navi - Navigacija s pretočno vsebino v ţivo
Slika 2: Prikaz geografske višine in širine
3.3 Zaznavanje pospeškov
Spremljanje pospeškov nam omogoča pospeškometer, ki je vgrajen v sodobne mobilne
telefone in jim omogoča zaznava pospeške po treh oseh, kot to prikazuje spodnja slika
(Slika 3) [6].
Slika 3: Predstavitev osi pospeškometra na mobilnem telefonu
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 9
3.4 Kamera mobilnega telefona
Ţe dolgo so mobilni telefoni opremljeni z kamerami, ki nam omogočajo zajemanje slik in
videa, zakar so vendar so te v večini primerov izključno uporabljene. S prihodom novih
idej in uporabo mobilnih operacijskih sistemov pa so se kamere začele uporabljati znotraj
aplikacij za zaznavanje kod, teksta in celo za vizualno iskanje po spletu [7].
Stran 10 Camera Navi - Navigacija s pretočno vsebino v ţivo
4 UPORABLJENA STROJNA IN PROGRAMSKA OPREMA
Prenosljivost mobilnih programov je ne glede na operacijski sistem [8], ki ga uporabljajo
sodobni mobilni telefoni, ki jih prikazuje spodnja slika (Slika 4), omejena z naborom
funkcionalnosti, ki jih imamo namen uporabiti v programu, zato izbira operacijskega
sistema v veliki meri vpliva na izbor programskega okolja. V odvisnosti od modela
telefona, ki ponuja zmogljivosti, pomembne za naš program, smo ţe v osnovi omejeni na
določen operacijski sistem. Kakšen pristop in katero programsko okolje bomo izbrali, je
tako odvisno od mobilnega telefona, na katerem bomo razvijali aplikacijo.
Na izbiro mobilnega telefona oziroma strojne opreme lahko vplivajo različni faktorji:
popularnost, inovativnost, podprtost, operacijski sistem, napredne moţnosti mobilnega
telefona in seveda cena.
Slika 4: Različni popularni mobilni operacijski sistemi
Izbran mobilni telefon nam torej določa programski jezik, ki nam je na razpolago, kjer pa
še zmeraj obstaja izbira glede na nivo, na katerega se moramo spustiti za doseganje
popolne funkcionalnosti našega programa.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 11
4.1 Lastnosti uporabljenega mobilnega telefona
Mobilni telefon, ki je bil uporabljen v okviru diplomskega dela je Samsung Omnia i900,
čigar lastnosti so prikazane v spodnji tabeli (Tabela 1). Na spodnji sliki je prikazan
uporabljen mobilni telefon (Slika 5).
Operacijski sistem Microsoft Windows Mobile 6.1
Professional
Glavne funkcije videotelefonija
GPS sprejemnik
pospeškometer
vgrajen radio
zvočna beleţka
imenik s slikami
računalo
budilka
Zaslon 3,2 palčni zaslon občutljiv na dotik
Fotoaparat 5,0 milijonov točk
Spominske reže da
Bluetooth da
Omrežja 2G Omreţje: GSM 850/900/1800/1900
3G Omreţje: HSDPA 2100
Čas govora do 5 ur in 50 minut
Čas pripravljenosti do 500 ur
Dimenzije 112 x 56,9 x 12,5 mm
Masa 125 g
Tabela 1: Lastnosti uporabljenega mobilnega telefona
Slika 5: Samsung Omnia i900
Stran 12 Camera Navi - Navigacija s pretočno vsebino v ţivo
4.2 Izbrano programsko okolje
Glede na lastnosti, ki jim mora zadoščati naš program in glede na operacijski sistem, ki je
uporabljen, je bilo potrebno izbrati programski jezik, ki nam bo omogočal dovolj svobodno
delo s strojno opremo mobilnega telefona.
Kot se je izkazalo, programski jezik C#, programerju ne daje dovolj velike svobode pri
zajemanju podatkovnega toka kamere mobilnega telefona in s tem ne omogoča izdelave
programa, ki bi predvajal sliko v ţivo na zaslonu mobilnega telefona.
Tudi programiranje v Javi ne bi omogočalo dostopa do naprednih funkcionalnosti v
obsegu, ki ga zahteva naš program. Tako je preostala le še moţnost uporabiti programski
jezik C++, ki omogoča napredno delo s strojno opremo, uporabljenega mobilnega telefona.
Kakor hitro smo se odločili za izdelavo programa v programskem jeziku C++, smo imeli
dve moţnosti ali uporabimo MFC za izdelavo programa ali bomo pisali win32 aplikacijo.
Izbrali smo MFC, saj ta ponuja vse potrebno za izdelavo programa, ki zdruţuje več
naprednih funkcionalnosti mobilnih aplikacij.
Okolje, v katerem smo razvijali program, je »Microsoft Visual Studio 2008«, saj je
najprimernejše okolje za razvoj programov na operacijskem sistemu Windows in Windows
Mobile. Za doseganje čim večje povezljivosti mobilnega telefona z okoljem za
programiranje, je bilo potrebno namestiti najnovejši SDK za Windows Mobile.
Novi SDK za Windows Mobile razširi zmogljivosti Visual Studia, saj doda moţnost
uporabe emulatorjev, moţnost ustvarjanja projektov, prirejenih za mobilne telefone z
različnimi verzijami Windows Mobile in moţnost prevajanja in zaganjanja programov
direktno na mobilnem telefonu, kot je prikazano na spodnjih slikah (Slika 6, 7).
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 13
Slika 6: Dodana moţnost za ustvarjanje Smart Device projekta
Slika 7: Moţnost emuliranja mobilnega telefona in moţnost izbire SDK-ja
Stran 14 Camera Navi - Navigacija s pretočno vsebino v ţivo
5 UPORABA POSAMEZNIH NAPREDNIH ZMOŽNOSTI
MOBILNIH TELEFONOV V SAMEM PROGRAMU
Glede na uporabo naprednih funkcionalnosti, ki jih ponuja uporabljen mobilni telefon, smo
se odločili, da v naši aplikaciji smiselno poveţemo, sistem globalnega določanja poloţaja,
zaznavanje pospeškov in hrbtno kamero mobilnega telefona.
Hrbtno kamero telefona smo uporabili za prikaz slike, na zaslonu telefona in s pomočjo
sistema za globalno določanje poloţaja, izvedli izrisovanje našega poloţaja glede na
zastavljen cilj, omogočili izračun razdalje med nami in izbranim ciljem, ter s pomočjo
zaznavanja pospeškov naredili interakcijo z mobilnim telefonom, uporabniku bolj
enostavno.
S pomočjo kamere mobilnega telefona prikazujemo zajeto sliko, s pomočjo katere je
uporaba navigacije bolj povezana z realnim svetom, oziroma je uporaba navigacije laţje
predstavljiva, saj namesto karte lahko spremljamo trenutno okolico.
Pridobivanje podatkov o lokaciji nam omogoča izračun razdalje do izbrane lokacije in opis
poloţaja glede na naš cilj.
Uporaba zaznavanja pospeškov nam s preprostim obratom mobilnega telefona omogoča
proţenje različnih akcij, za katere bi morali v nasprotnem primeru izbrati razne menijske
postavke. Izbira menijskih postavk je lahko na mobilnih telefonih zamudna, zlasti če so le
ti brez tipkovnice, ali kadar je edini način interakcije preko na dotik občutljivega zaslona,
kjer je za majhne elemente uporabniškega vmesnika potrebno biti zelo natančen ali je celo
potrebno uporabiti pripomočke.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 15
5.1 Uporaba sistema globalnega določanja položaja
Za izkoriščanje sistema za globalno določanje poloţaja je bilo potrebno, kot za večino
naprednih funkcionalnosti posameznih mobilnih telefonov, uporabiti posebno knjiţnico
(API), ki je bil narejen posebej za dan telefon in brez katerega bi bilo povezovanje z
napravo za pridobivanje podatkov GPS zelo oteţeno.
Za dostop do funkcij, ki jih ponuja API za naš mobilni telefon, je bilo potrebno namestiti,
Samsungov SDK za Windows Mobile aplikacije. V projekt je bilo potrebno dodati tudi
knjiţnici: SamsungMobileSDK_2.lib in GPSApi.lib. V samo kodo smo nato morali
vključili še GPSApi.h, da smo s tem pridobili vse potrebno za povezovanje z napravo za
sprejemanje GPS podatkov.
Primer povezovanja z GPS napravo mobilnega telefona, pridobivanja informacij o poziciji
in izpis teh informacij vidimo na spodnjem primeru:
HANDLE hDevice;
//Odpiranje GPS naprave
hDevice = GPSOpenDevice(NULL,NULL,NULL,0);
GPS_POSITION gpsPosition;
ZeroMemory(&gpsPosition,sizeof(GPS_POSITION));
gpsPosition.dwVersion=GPS_VERSION_1;
gpsPosition.dwSize=sizeof(GPS_POSITION);
//Pridobivanje pozicije
GPSGetPosition(hDevice,&gpsPosition,10000,0);
//Izpis geografske širine in višine
cout << gpsPosition.dblLatitude << “,” << gpsPosition.dblLongitude;
Stran 16 Camera Navi - Navigacija s pretočno vsebino v ţivo
Iz pridobljenih podatkov, smo morali izračunati razdaljo do neke izbrane lokacije, ki nam
je sluţila kot cilj. Za računanje razdalje obstaja več različnih pristopov, ki so različno
učinkoviti [5].
Naša aplikacije je namenjena predvsem za kratke relacije, zato smo morali uporabiti
metodo za računanje razdalj med dvema lokacijama, pri kateri so napake majhne glede na
majhno oddaljenost med samimi lokacijami, zato smo se posluţili sferične geometrije.
Uporabili smo formulo za izračun razdalje med dvema točkama podanima v geografski
dolţini in širini, ki se posluţuje sferične geometrije (spherical law of cosines) [5].
double dolzina = acos( sin( latitude1 / 57.29577951 ) * sin( latitude2 / 57.29577951 ) +
cos( latitude1 / 57.29577951 ) * cos( latitude2 / 57.29577951 ) * cos( longitude2 /
57.29577951 - longitude1 / 57.29577951 ) ) * 6378.1;
Naslednji korak je bil predstaviti razdaljo dveh točk še v dvodimenzionalnem prostoru
zaslona mobilnega telefona, kar smo dosegli s pomočjo prej uporabljene formule in
enačenjem geometrijskih širin in nato še višin. Tako smo dobili razdaljo x in y
dvodimenzionalnega koordinatnega sistema, kot prikazuje spodnja slika (Slika 8).
Slika 8: Predstavitev razdalje med dvema točkama
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 17
5.2 Uporaba zaznavanja pospeškov
Sledenje spremembam pospeškov mobilnega telefona je preprost in učinkovit način za
zaznavanje dogodkov, ki se lahko uporabijo za najrazličnejše namene. V našem programu
smo se odločili, da bodo spremembe pospeškov telefona, uporabljene za učinkovitejšo in
enostavnejšo interakcijo uporabnika s programom.
Podobno kot pri uporabi GPS naprave mobilnega telefona, je potrebno tudi za
komunikacijo s pospeškometrom uporabiti Samsungov SDK za Windows Mobile, ki
zagotavlja funkcije za dostop do podatkov pospeškometra.
Za uporabo funkcij, ki jih ponuja Samsungov SDK [9], je potrebno v lastnostih programa,
pod dodatnimi zahtevami za knjiţnice vključiti SamsungMobileSDK_2.lib, nato pa še v
kodo vključiti smiAccelerometer.h in s tem omogočiti dostop do podatkov pospeškometra.
Spodnja koda prikazuje preprost primer dostopa do podatkov pospeškometra in izpis teh
podatkov.
SmiAccelerometerVector acc;
//Pridobivanje vektorja pospeškometra in preverjanje uspešnosti
if( SmiAccelerometerGetVector(&acc) == SMI_SUCCESS){
//Izpis podatkov
cout << “x os: ” << ac.x << endl;
cout << “y os: ” << ac.y << endl;
cout << “z os: ” << ac.z << endl;
}
Tako pridobljene podatke lahko nato koristimo za detekcijo sprememb pospeškov in te
spremembe interpretiramo tako, da jih lahko prevedemo v ukaz, ki bo uporabniku
omogočala proţenje določene akcije na mobilnem telefonu.
Tako v našem programu na primer obrat zaslona telefona, kot je prikazano na spodnji sliki
(Slika 9), proti tlom, zaključi program enakovredno izbiri menijske postavke za izhod.
Stran 18 Camera Navi - Navigacija s pretočno vsebino v ţivo
Uporabnik sedaj s preprostim zasukom roke doseţe isto, kar bi v običajnem primeru
dosegel s klikom na zaslon telefona, pri čemer ni potrebno, da sploh pogleda na zaslon
telefona ali telefon pribliţa k sebi.
Ob zagonu programa se zaslon mobilnega telefona programsko prestavi v vodoravni
poloţaj. Tako uporabnik drţi telefon v rokah v času izvajanja programa. V primeru da
uporabnik telefon nagne v desno ali levo stran, se sprehaja gor in dol po izbranih lokacijah,
ki se nahajajo v padajočem seznamu. Na tak način ponovno s pomočjo preprostega giba
roke lahko spremenimo nastavitve programa, kar bi v nasprotnem primeru morali doseči z
več kliki na zaslon mobilnega telefona.
Podobno kot pri prejšnjih spremembah poloţaja mobilnega telefona lahko z zasukom
telefona v smeri gledanja, prikličemo informacije o posamezni izbrani lokaciji iz
padajočega seznama.
Slika 9: Poloţaji telefona, ki proţijo podane akcije
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 19
5.3 Uporaba kamere
Sodobni mobilni telefoni imajo kvalitetne kamere, ki omogočajo zajemanje in prikaz
videa[10]. Te kamere so zadostno podprte ţe s strani operacijskega sistema, saj so ena
izmed redkih naprednih lastnosti, ki jih omogočajo mobilni telefoni, ki jih je moč uporabiti
brez dodatnih programov. Vsak telefon, ki ima na hrbtni strani kamero, namreč omogoča
zajemanje slik, večina tudi zajemanje videa, kar pa ne velja za GPS naprave in
pospeškometre.
Za delo s podatki zajetimi iz kamere je potrebno v programu vključiti dshow.h
(DirectShow) [11]. DirectShow je posredna arhitektura, ki zagotavlja prenos za
predvajanje medijev in zajemanje le-teh. DirectShow API omogoča predvajanje lokalne
multimedijske vsebine in iz pretočnih virov preko omreţja ali interneta. Arhitektura je
namenjena podpori virom, formatom, kodekom in strojni opremi.
Filtri DirectShow se uporabljajo za upravljanje in vodenje multimedijskih podatkov. Ti
filtri opravljajo naloge, kot so razčlenjevanje, dekodiranje ali oblikovanje na
multimedijskem toku. Moţna je razširitev DirectShow medijske podpore s pisanjem lastnih
filtrov.
Microsoft DirectShow omogoča kakovostno predvajanje večpredstavnostnih tokov s
podporo kodekov za različne formate.
Spodnji primer prikazuje uporabo kamere v programu.
IGraphBuilder *pFilterGraph;
ICaptureGraphBuilder2 *pCaptureGraphBuilder;
IBaseFilter *pVideoCaptrueFilter;
IPersistPropertyBag *pPropertyBag;
IMediaControl *pMediaControl;
IAMVideoControl *pVideoControl;
CoInitialize(NULL);
CoCreateInstance(CLSID_CaptureGraphBuilder,NULL,CLSCTX_INPROC_SERVER,IID_ICaptu
reGraphBuilder2,(void**)&pCaptureGraphBuilder);
Stran 20 Camera Navi - Navigacija s pretočno vsebino v ţivo
CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void*
*) &pFilterGraph);
CoCreateInstance(CLSID_VideoCapture,NULL,CLSCTX_INPROC,IID_IBaseFilter,(void**)
&pVideoCaptrueFilter);
pCaptureGraphBuilder->SetFiltergraph(pFilterGraph);
pVideoCaptrueFilter->QueryInterface(&pPropertyBag);
wchar_t deviceName[MAX_PATH]=L"\0";
DEVMGR_DEVICE_INFORMATION di;
GUID guidCamera = {0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A, 0x93, 0x3E,0x4D, 0x7E, 0x3C,
0x86};
di.dwSize = sizeof(di);
FindFirstDevice(DeviceSearchByGuid,&guidCamera,&di);
StringCchCopy(deviceName,MAX_PATH,di.szLegacyName);
CComVariant comName = deviceName;
CPropertyBag cPropertyBag;
cPropertyBag.Write(L"VCapName",&comName);
pPropertyBag->Load(&cPropertyBag,NULL);
pFilterGraph->AddFilter(pVideoCaptrueFilter,L"VIdeo Capture Filter Source");
IVideoWindow *pVidWin;
pFilterGraph->QueryInterface(IID_IMediaControl,(void**)&pMediaControl);
pFilterGraph->QueryInterface(IID_IVideoWindow,(void**)&pVidWin);
pVideoCaptrueFilter->QueryInterface(IID_IAMVideoControl,(void**)&pVideoControl);
pCaptureGraphBuilder-
>RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,pVideoCaptrueFilter,NULL,
NULL);
CRect rect;
long width,height;
GetClientRect(this->GetSafeHwnd(),rect);
pVidWin->put_Owner((OAHWND)( this->GetSafeHwnd());
pVidWin->put_WindowStyle(WS_CHILD|WS_CLIPSIBLINGS);
pVidWin->get_Width(&width);
pVidWin->get_Height(&height);
height = rect.Height();
pVidWin->put_Height(height);
pVidWin->put_Width(rect.Width());
pVidWin->SetWindowPosition(0,0,rect.Width()-113,height);
pMediaControl->Run();
Zajete podatke lahko prikaţemo na zaslonu v poljubni velikosti in ob poljubnem času. Na
tak način omogočamo uporabniku pregled nad okolico in nemoteno upravljanje z
mobilnim telefonom.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 21
6 INTERAKCIJA S PROGRAMOM
Za preprosto interakcijo s programom smo med drugim uporabili tudi informacije
pospeškometra, s pomočjo katerega lahko uporabnik po zagonu aplikacije laţje izvede
določene akcije, ki jih ponuja program. Pospeškometer ima zmeraj vsaj na eni izmed osi
prisoten gravitacijski pospešek. Premik telefona povzroči spremembo porazdelitve
pospeška na oseh in nam s tem omogoča nadzor prekoračitve mej, ki so zastavljene za
izvedbo posamične akcije v programu in so razvidne iz spodnje tabele (Tabela 2).
Akcija Potreben pospešek
za izvedbo akcije
Potreben pospešek
pred ponovno
izvedbo akcije
Izhod iz aplikacije manj kot -0.7 ni potrebno
Pridobivanje
informacij o izbranih
lokacijah
več kot 0.7 manj kot 0.3
Sprehod po
padajočem seznamu
lokacija, navzdol
manj kot -0.7 več kot -0.3
Sprehod po
padajočem seznamu
lokacija, navzgor
več kot 0.7 manj kot 0.3
Tabela 2: Mejne vrednosti pospeškov za izvajanje posamičnih akcij
Za uporabo programa je potrebno ob zagonu izbrati navigacijsko datoteko, da lahko
pridobimo in izberemo lokacije, ki jih uporabimo kot končne lokacije. V navigacijski
datoteki so shranjene lokacije in podatki o lokacijah, ki se iz datoteke preberejo in shranijo
v razred lokacij, s pomočjo katerega lahko nato pridobivamo posamezne podatke.
Stran 22 Camera Navi - Navigacija s pretočno vsebino v ţivo
Po izbiri navigacijske datoteke se program poveţe z GPS sprejemnikom mobilnega
telefona in prične z iskanjem satelitov, na kar opozori tudi uporabnika. Ko se poveţemo z
zadostnim številom satelitov [5], se na zaslonu mobilnega telefona izrišeta naša trenutna in
končna lokacija, izpisuje se tudi distanca med tema dvema lokacijama. Kakor hitro je na
razpolago (pre)majhno število satelitov, nas program opozori, da ponovno išče satelite in to
počne, dokler ni zadostnega števila satelitov.
Slika 10: Bistveni koraki za uporabo programa
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 23
7 REZULTATI
V navigacijskim programu, ki je nastal v okviru diplomskega dela, smo zdruţili več
naprednih funkcionalnosti mobilnih telefonov in s tem ustvarili program, ki omogoča
drugačen način interakcije in doda novo, vizualno perspektivo.
Zajemanje slike s pomočjo kamere mobilnega telefona in predvajanje te slike na delu
zaslona je imelo za posledico moţnost pregleda nad okolico, v kateri smo se gibali ob
uporabi programa, in dejansko vizualizacijo okolja, ki smo ga na zaslonih mobilnih
aplikacijah v drugih programih, spremljali samo v dvodimenzionalni obliki.
Moţnost, uporabe navigacije med hojo brez potrebe po odmiku pogleda od mobilnega
telefona se je izkazala za zelo koristno, saj smo po ulicah lahko postopali, ne da bi naleteli
na ovire, na katere se sicer ob spremljanju zaslona pri drugih navigacijskih programih
lahko naleti.
Dodatno smo s pomočjo predvajanja pretočnega videa v ţivo, dosegli spremljanje poti na
zaslonu mobilnega telefona v dejanskem okolju, zaradi česar smo se laţje znašli pri
uporabi navigacije.
Izkoriščanje pospeškometra nam je omogočilo bistveno hitrejšo in enostavnejšo interakcijo
s programom, kot jo omogočajo običajni programi na mobilnih telefonih. Pritiskanje
gumbov na zaslonu in ţe samo iskanje teh, kot tudi iskanje menijskih postavk, je časovno
bistveno bolj potratno kot preprost gib roke.
Za izhod iz programa brez uporabe pospeškometra smo v povprečju potrebovali štiri
sekunde, z izkoriščanjem podatkov pospeškometra smo lahko ugasnili program v eni
sekundi. Za najbolj zamuden del interakcije s programom - premik po padajočem seznamu,
smo brez pomoči pospeškometra v povprečju porabili deset sekund, medtem ko smo s
Stran 24 Camera Navi - Navigacija s pretočno vsebino v ţivo
pomočjo pospeškometra to utegnili storiti v eni sekundi. Tudi pridobivanje podatkov o
trenutno izbrani lokaciji smo s pomočjo pospeškometra uspeli pridobiti v roku ene
sekunde, brez pospeškometra pa smo potrebovali pet sekund, kot je razvidno iz spodnje
slike (Slika 11).
0123456789
10
Ča
s p
otr
eb
en z
a i
zved
bo
ak
cije
Izhod iz
porograma
Premik po
padajočem
seznamu
Pridobivanje
informacij o
izbrani lokaciji
Interakcija s pogramom brez
pomoči pospeškometra
Interakcija s programom s
pomočjo pospeškometra
Slika 11: Prikaza porabe časa pri interakciji s programom
Izkoriščanje podatkov pridobljenih iz GPS sprejemnika mobilnega telefona, nam je
omogočilo enostavno in zanesljivo določanje naše pozicije in razdalje med našo in izbrano
pozicijo in s tem preprostejše navigiranje uporabnika.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 25
8 SKLEP
Uporaba pretočne vsebine v ţivo je izboljšala delovanje programa, saj je doprinesla k
uporabnosti programa in načinu dojemanja okolice z mobilnim telefonom.
Iz pridobljenih rezultatov je razvidno, da lahko uporaba pospeškometra pri napravah kot
so mobilni telefoni, ki imajo relativno majhne zaslone, pomeni velik korak naprej pri
interakciji z uporabnikom. Čas, ki ga porabimo za interakcijo z uporabnikom v našem
programu brez uporabe pospeškometra, je lahko tudi do desetkrat slabši, kot z uporabo
pospeškometra.
Povezava večjih naprednih funkcionalnosti mobilnih telefonov se je tako izkazala za
učinkovit način za izboljšavo in nadgradnjo ţe obstoječih programov, predvsem pa za
načrtovanje in uporabo v novih programih, ki lahko uporabniku delo s programom olajšajo
in popestrijo.
Moţnosti za izkoriščanje kamere telefona, pospeškometra in GPS senzorja, je še veliko
več. Za delo s poljubnim programom je mogoče uporabiti vsako posamezno funkcionalnost
mobilnih telefonov ali seveda v poljubno kombinacijo le-teh.
Pospeškometer se lahko kot vmesnik med uporabnikom in programom, uporabi za bolj
kompleksne ukaze, ki bi jih bilo ob pravilni interpretaciji moţno izvesti na zelo preprost
način, brez potrebe po izbiranju in iskanju raznih vsebin. Lahko bi na primer
implementirali dodatno funkcionalnost programa, ki bi uporabniku omogočila s pomočjo
rahlega nagiba mobilnega telefona drsenje po poljubni vsebini, kar bi programu dalo
prednost pred ostalimi podobnimi programi.
Stran 26 Camera Navi - Navigacija s pretočno vsebino v ţivo
Pri uporabi pretočnih vsebin, ki jih predvajamo v ţivo, je veliko moţnosti nadgradnje. Ena
izmed teh moţnosti je seveda risanje na pretočno vsebino, s čimer bi lahko programu
dodali veliko dodatnih vizualnih lastnosti in funkcionalnosti.
Seveda pa ne smemo pozabiti, da napredne funkcionalnosti mobilnih telefonov, ki smo jih
uporabili v diplomski nalogi še, zdaleč niso vse napredne funkcionalnosti, ki jih ponujajo
sodobni mobilni telefoni. Moţnosti kombiniranja različnih naprednih funkcionalnosti
mobilnih telefonov veliko.
Program z vključenimi knjiţnicami nam predstavlja platforno za razširitev funkcionalnosti
uporabljenega telefona, ter nam daje moţnost za razne posplošitve programa za uporabo na
podobnih mobilnih telefonih.
Camera Navi - Navigacija s pretočno vsebino v ţivo Stran 27
9 VIRI, LITERATURA
[1] ARS technica (http://arstechnica.com/apple/news/2010/01/apple-responsible-for-994-
of-mobile-app-sales-in-2009.ars, zadnji obisk: 24.08.2010 ).
[2] Slovenska tiskovna agencija
(http://mojevro.finance.si/238848/V_povpre%E8ju_ima_vsak_Slovenec_mobilni_telef
on, zadnji obisk: 24.08.2010)
[3] F. Mée (http://www.digitalversus.com/mobile-os-iphone-and-android-most-popular-
particularly-in-the-us-news-13627.html, zadnji obisk: 24.08.2010)
[4] Samsung Electronics: Samsung Mobile Innovator -Windows Mobile API
Specifications
(http://innovator.samsungmobile.com/cms/cnts/knowledge.detail.view.do?cntsId=5361
&platformId=2, zadnji obisk: 24.08.2010)
[5] J.M.Zogg: GPS Basics - Introduction to the system Application overview
(http://geology.isu.edu/geostac/Field_Exercise/GPS/GPS_basics_u_blox_en.pdf, zadnji
obisk: 24.08.2010)
[6] Texas Instruments: Accelerometers and How they Work
(http://www2.usfirst.org/2005comp/Manuals/Acceler1.pdf, zadnji obisk: 24.08.2010)
[7] Google Goggles (http://www.google.com/mobile/goggles/#text, zadnji obisk:
24.08.2010)
[8] Symbian resources
(http://symbianresources.com/tutorials/general/mobileos/MobileOperatingSystems.pdf,
zadnji obisk: 24.08.2010)
[9] Samsung mobile (http://innovator.samsungmobile.com , zadnji obisk: 24.08.2010)
[10] M. Rohs, B.Gfeller
(http://www.photogrammetry.ethz.ch/general/persons/devrim/2008SL_Akca_Gruen_H
andy_Colombo08_ID-426.pdf, zadnji obisk: 24.08.2010)
[11] Microsoft (http://msdn.microsoft.com/en-us/library/aa930379.aspx, , zadnji obisk:
24.08.2010)
Stran 28 Camera Navi - Navigacija s pretočno vsebino v ţivo
10 PRILOGE
10.1 Naslov študenta
Bojan Ţlahitč
Spodnja Korena 13
2241 Spodnji Duplek
Telefon: (031) 386-976
e-Mail: [email protected]
10.2 Kratek življenjepis
Rojen: 13.06.1982 v Mariboru
Šolanje:
Osnovna šola Tone Čufar, Maribor, 1989
Osnovna šola Tabor 2, Maribor, 1990-1992
Osnovna šola Duplek, Duplek, 1993-1996
Srednja Gradbena Šola, Maribor, 1997-2000
Fakulteta za elektrotehniko, računalništvo in informatiko, Maribor, 2007-2009