VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ
FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
PROGRAMOVÁNÍ MOBILNÍCH TELEFONŮ MOBILE PHONE PROGRAMMING
BAKALÁŘSKÁ PRÁCE BACHELOR´S THESIS
AUTOR PRÁCE
JÁN OCHODNICKÝ
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2009
Ing. TOMÁŠ MÁCHA
ABSTRAKT
Bakalářská práce je zaměřena na možnosti v programování mobilních telefonů. Teoreticky rozebírá nejrozšířenější operační systémy a programovací jazyky na operační systém Symbian. Dále teoreticky popisuje technologii GSM, komunikaci mezi mobilní stanicí a základovou stanicí a přenášené parametry spojení. Práce obsahuje dva programy pro operační systém Symbian. Program FDSearch je vytvořen v programovacím jazyku Python for S60. Aplikace slouží na vyhledávání složek a souborů v mobilních telefonech. Druhý program About Net je vytvořen v programovacím jazyku Symbian C++ a je zaměřen na zachytávání systémových informací ze sítě. Klíčová slova: OS, programovací jazyk, GSM, Python, Symbian, C++
ABSTRACT This bachelor thesis is focused on mobile phone programming. The paper theoretically analyzes most expanded operating systems and Symbian operating system programming languages. Also theoretically describes the GSM technology, communication between mobile station and base station and transferred parameters of connection. Bachelor thesis includes two programs for Symbian operating system. Program FDSearch is created in Python for S60 programming language. This application serves to search directories and files in the mobile phone. The second program About Net is created in Symbian C++ programming language and is intent on capturing system information from network. Keywords: OS, programming language, GSM, Python, Symbian, C++
PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma Programování mobilních telefonů jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení § 152 trestního zákona č. 140/1961 Sb. V Brně dne ......
.................... podpis autora
PODĚKOVÁNÍ Děkuji vedoucímu bakalářské práce Ing. Tomáši Máchovi, za metodickou pomoc a cenné rady při zpracování bakalářské práce. V Brně dne ......
.................... podpis autora
Programování mobilních telefonů
Seznam zkratek AAC ALP AMPS AMR API ARM BCC BER BSC BSIC BSS BTS CDC CDMA CGI CID CLDC CRO D-AMPS DBMS DFRD DRM EDGE EV-DO GCN GIF GPRS GPS GSM HTML ICS IDE iDEN IM IMEI IMSI IrDA IS JRE LAC MCC MIDI MIDP MIDP MIK MNC MPEG MSIN NCC NMT NSS OPL OS OSS PACE PDA
Advanced Audio Coding Access Linux Platform Advanced Mobile Phone System Adaptive Multi-Rate Application Programming Interference Advanced RISC Machine Broadcast Color Code Bit Error Rate Base Station Controller Base Station Identity Code Base Station Subsystem Base Transceiver Station Connected Device Configuration Code Division Multiple Access Cell Global Identity Cell IDentifier Connected Limited Device Configuration Cell Reselect Offset Digital AMPS Database Management System Device Family Reference Designs Digital Rights Management Enhanced Data rates for GSM Evolution Evolution-Data Optimized GPRS Core Network Graphic Interchange Format General Packet Radio Service Global Positioning System Groupe Spécial Mobile, Global System for Mobile communication HyperText Markup Language Internet Connection Sharing Integrated Development Environment Integrated Digital Enhanced Network Instant Messenger International Mobile Equipment Identity International Mobile Subscriber Identification Infrared Data Association (komunikační rozhraní) Interim Standard Java Runtime Environment Local Area Code Mobile Country Code Musical Instrument Digital Interface Mobile Information Device Profile Mobile Information Device Profile Mobile Internet Kit Mobile Network Code Moving Picture Experts Group Mobile Station Identification Number Network Color Code Nordic Mobile Telephony Network and Switching Subsystem Open Programming Language Operating System Operation Support Subsystem Palm Application Compatibility Environment Personal Digital Assistant
Programování mobilních telefonů
PDC PIE PNG PPTP VPN QVGA RAM ROM SDK SIM SMS SSL/TLS STL TA TCP/IP TDMA TMSI TS UI UMTS USB VoIP WAP XML
Personal Digital Cellular Pocket Internet Explorer Portable Network Graphic Point-to-Point Tunneling Protocol, Virtual Private Network Quarter Video Graphic Array (320x240 pixelů) Random Access Memory Read Only Memory Software Development Kit Subscriber Identity Module Short Message Service Secure Socket Layers/ Transport Layer Security Standard Template Library Timing Advance Transmission Control Protocol/ Internet Protocol Time Division Multiple Access Temporary Mobile Station Identification Time Slot User Interface Universal Mobile Telecommunications System Universal Serial Bus Voice over Internet Protocol Wireless Application Protocol (mobilní internet) Extensible Markup Language
Programování mobilních telefonů
Obsah ÚVOD .............................................................................................................................................. 11 1
Operační systémy pro mobilní zařízení ................................................................................. 12 1.1
1.2
PalmOS ........................................................................................................................... 13
1.1.1
Prvotní verze PalmOS ............................................................................................... 14
1.1.2
Současnost a PalmOS ............................................................................................... 14
Windows Mobile ............................................................................................................... 15
1.2.1
Pocket PC verze ........................................................................................................ 16
1.2.2
Windows Mobile verze ............................................................................................. 16
1.3
Android ............................................................................................................................ 17
1.4
Symbian ........................................................................................................................... 18
1.4.1
EPOC verze ............................................................................................................... 19
1.4.2
Symbian OS v6.0 až 8.1 ............................................................................................. 20
1.4.3
Verze 9.0 a novější ................................................................................................... 20
1.5
Jiné používané OS ........................................................................................................... 21
1.6
Porovnání OS .................................................................................................................. 21
1.7
Serie Symbian OS ............................................................................................................ 23
1.7.1 2
Výběr verze OS Symbian ........................................................................................... 24
Programovací jazyky .............................................................................................................. 25 2.1
PalmOS, Windows Mobile, Android .................................................................................. 25
2.2
Programovací jazyk C++ .................................................................................................. 26
2.3
2.4
2.2.1
Základní principy ...................................................................................................... 26
2.2.2
Vývoj ........................................................................................................................ 26
2.2.3
Knihovna C++ ........................................................................................................... 27
2.2.4
Rysy jazyka ............................................................................................................... 27
2.2.5
Symbian C++ ............................................................................................................ 28
Java ................................................................................................................................. 28
2.3.1
Vývoj ........................................................................................................................ 28
2.3.2
Filozofie ................................................................................................................... 29
2.3.3
Java ME .................................................................................................................... 29
Python ............................................................................................................................. 30
2.4.1
Vývoj ........................................................................................................................ 30
2.4.2
Standardní knihovna ................................................................................................ 30
2.4.3
Vlastnosti ................................................................................................................. 31
2.4.4
Python for S60.......................................................................................................... 31
Programování mobilních telefonů
3
2.5
Další programovací jazyky................................................................................................ 31
2.6
Výběr programovacího jazyku .......................................................................................... 32
2.7
SDK ................................................................................................................................. 33
2.8
Shrnutí ............................................................................................................................. 33
Program FDSearch ................................................................................................................. 34 3.1
Vývojové prostředí............................................................................................................ 34
3.2
Vytvoření rámce programu ............................................................................................... 34
3.3
Jádro programu ................................................................................................................ 35
3.4 4
5
3.3.1
Zadávání požadavků ................................................................................................. 35
3.3.2
Vyhledávání ............................................................................................................. 35
Výpis nalezených kořenů.................................................................................................. 37
Síť GSM a její základní parametry .......................................................................................... 39 4.1
Technologie GSM............................................................................................................. 39
4.2
Komunikace mezi BTS a mobilní stanicí v GSM................................................................ 40
4.2.1
Idle mód................................................................................................................... 41
4.2.2
Dedicated mód ......................................................................................................... 42
Program About net ................................................................................................................. 43 5.1
Vývojové prostředí............................................................................................................ 43
5.2
Uživatelské rozhraní ......................................................................................................... 44
5.3
Jádro programu ................................................................................................................ 45
5.4
5.3.1
Idle mód................................................................................................................... 46
5.3.2
Dedicated mód ......................................................................................................... 49
About Net shrnutí ............................................................................................................. 49
Závěr ............................................................................................................................................... 50
Programování mobilních telefonů
Seznam obrázků Obrázek 1: Nokia N95 ............................................................................................................................. 12 Obrázek 2: Přiklad UI pro PalmOS........................................................................................................... 13 Obrázek 3: Příklad UI pro OS Windows Mobile 6.1 Standard ................................................................... 15 Obrázek 4: T-Mobile G1 s OS Android..................................................................................................... 18 Obrázek 5: Vrstvový model OS Symbian ................................................................................................. 19 Obrázek 6: Příklad UI pro OS Symbian .................................................................................................... 21 Obrázek 7: Okno zadávání hledaného výrazu v programu FDSearch....................................................... 35 Obrázek 8: Výpis prohledávaného adresáře v hlavičce programu FDSearch ............................................ 36 Obrázek 9: Plocha výběru způsobu výpisu v programu FDSearch ........................................................... 37 Obrázek 10: Kompletní a zkrácený výpis nalezených kořenů v programu FDSearch ................................ 38 Obrázek 11: Možnost třídění nalezených kořenů v programu FDSearch .................................................. 38 Obrázek 12: Bloková architektura sítě GSM............................................................................................. 40 Obrázek 13: Vývojové prostředí Carbide.c++ ........................................................................................... 43 Obrázek 14: Úvodní obrazovka aplikace About Net ................................................................................. 44 Obrázek 15: Menu aplikace About Net ..................................................................................................... 45 Obrázek 16: Zobrazení hodnoty CGI v aplikaci About Net ........................................................................ 46 Obrázek 17: Zobrazení hodnoty RXLevel v aplikaci About Net ................................................................. 47 Obrázek 18: Anonymizované zobrazení hodnoty IMSI a TMSI v aplikaci About Net ................................. 48
Seznam tabulek Tabulka 1: Tabulka parametrů daných OS ............................................................................................... 22 Tabulka 2: Tabulka parametrů programovacích jazyků ............................................................................ 32
Programování mobilních telefonů
ÚVOD Rozmach telekomunikačních služeb v posledních letech zvyšuje požadavky i na mobilní telefony. Stejně jako integrací funkcí z jiných zařízení tak i přidáváním nových aplikací se možnosti mobilních telefonů blíží běžným počítačům. Právě tvořením nových aplikací je možné ze zařízení s běžnými funkcemi vytvořit multifunkční zařízení. V první části jsou popsány OS pro mobilní telefony. Výběr vhodného OS je důležitou součástí při rozhodování se jaký typ programovacího jazyka a samotného programu zvolím. OS jsou základním programem inteligentních mobilních zařízení, které vykonávají obsluhu zařízení a řídí přístup k jeho zdrojům. Každý výrobce řeší tyto problémy jiným způsobem. Taky je rozdíl v jejich rozšíření ve světě. V práci je proto kladen důraz na zhodnocení kladů a záporů jednotlivých OS. I sebelepší program určený pro nevhodný OS může skončit jako průměrný produkt. Druhá kapitola pojednává o programovacích jazycích. Programovací jazyky jsou nástroje, které umožňují člověku nadefinovat pomocí algoritmů a postupů, jak se má zařízení chovat. V krátkosti jsou shrnuty programovací jazyky pro OS, které nebyly vybrány v této práci. Podrobněji jsou popsány tři základní jazyky pro vybraný OS. Dále jsou uvedeny alternativy a jiné možnosti programování. Získání přehledu pak usnadňuje rozhodování volby nejvhodnějšího programovacího jazyku. Vhodnou volbou programovacího jazyku pro cílovou aplikaci je možné ušetřit čas, potřebný na jeho vývoj. Taky ne každý programovací jazyk je vhodný na daný typ aplikace. Práce tedy popisuje různé OS a programovací jazyky na tvorbu aplikací pro mobilní zařízení. V druhé části obsahuje příklad aplikace na vyhledávání souborů. Jedná se o jednoduchý vyhledávač souborů, který může být později rozšířen o komplexní vyhledávání současně v paměti a menu telefonu, a tak nahradí manuální hledání souborů a funkcí. Aplikace po zadání hledaného výrazu prohledá paměť a zobrazí cesty k jednotlivým výsledkům. Nalezené cesty k soborům aplikace umí použít a tedy soubor otevřít. Třetí kapitola popisuje samotnou aplikaci a k tomu použité součásti. Cílem je demonstrovat použití daného jazyka a naznačit možnost, jak řešit vyhledávaní v mobilním telefonu. Popsaná jednoduchá aplikace má možnost být dále rozšiřována o nové funkce a zpříjemnění ovládaní bez nutnosti měnit již napsaný zdrojový kód. Vyhledávání a selekce vhodných dat je v dnešní době, která je prosycena informacemi, klíčem k širšímu poznání. Proto jsou důležité i vyhledávací prostředky. A právě vyhledávání a selekce dat je v praxi aplikováno v třetí části práce, která popisuje možnosti získávání parametrů ze sítě GSM a jejich přehledné zobrazení. Ve čtvrté kapitole je rozebrána technologie GSM, zejména komunikace mezi mobilní stanicí a základnovou stanicí. Popisuje aktivní a pasivní hovorový mód prostřednictvím jejich parametrů. V poslední kapitole je navržena a popsána aplikace zaměřena na sběr popsaných parametrů ze čtvrté kapitoly. Cílem kapitoly je nejen navrhnout jednoduchou ukázku aplikace ve zvoleném jazyku ale i analýza možností získávání informací ze sítě.
11
Programování mobilních telefonů
1 OPERAČNÍ SYSTÉMY PRO MOBILNÍ ZAŘÍZENÍ Současně se vznikem nové třídy mobilních zařízení, takzvaných inteligentních telefonů (smartphone), byly vyvinuty operační systémy (OS) pro tyto zařízení. Právě OS je základním prvkem inteligentních telefonů. Umožňuje jednoduchou rozšiřitelnost o nové funkce a aplikace, a stejně tak synchronizaci s kompatibilním počítačem. Nové aplikace jsou schopny vytvořit z mobilního zařízení jak manažerský přístroj pomocí kancelářských aplikací, tak i multimediální zařízení, na kterém je možné sledovat video, poslouchat hudbu nebo hrát hry. Svými parametry se smartphone blíží osobnímu počítači. Nevýhodou těchto telefonů je naopak poměrně vysoká cena, velké rozměry a slabá výdrž baterie. Klasickým příkladem inteligentního telefonu je Nokia N95 (Obrázek 1 [http://www.mobileguerilla.com/images/nokia-n95-closed.jpg]).
Obrázek 1: Nokia N95
Základním parametrem OS pro mobilní zařízení je tedy jejich možnost rozšíření o nové aplikace. Například souborové manažery na práci se soubory uloženými v paměti zařízení nebo na paměťové kartě, kancelářské balíčky na editaci a psaní dokumentů, vytváření tabulek nebo prezentací. Dále často obsahují zařízení na vytváření archívů, internetové prohlížeče, emailové manažery, multimediální přehrávače na přehrávání hudby a videa, hry a nebo Instant messaging klienty atd. Samozřejmě trh s operačními systémy je otevřený, a tak došlo k vývoji nových OS. Ty jsou stavěny buď jak mobilní verze OS pro počítače, nebo samostatné OS určené přímo pro inteligentní zařízení. Nejpoužívanější a nejznámější jsou Symbian od Symbian Ltd., iPhone OS od Apple Inc., BlackBerry OS od RIM BlackBerry, Windows Mobile od Microsoft Corp., Linux, který nevyvíjí konkrétní společnost, PalmOS od Palm Inc. a Android od Google Inc. Vyjmenování začíná nejpoužívanějším a končí nejméně používaným pro první kvartál roku 2009. Představitelem inteligentního telefonu s PalmOS je například Palm Centro. Windows Mobile využívá například mobilní telefon HTC Touch Diamond. Se Symbian pracuje například už zmíněná Nokia N95, s OS Android T-Mobile G1 atd. [13] 12
Programování mobilních telefonů
1.1 PALMOS PalmOS je operační systém pro zařízení vyšší třídy vázané na danou platformu. Byl vytvořený v roce 1996. Primárně je určený pro zařízení PDA a používá se nejen v komunikátorech, ale i v náramkových hodinkách, kapesních hracích konzolách, čtečkách čárových kódů, anebo GPS zařízeních. Pracuje s dotykovým displejem, podporuje multimédia, paměťovou kartu a technologie Bluetooth, infračervený přenos a Wifi. OS dokáže v jednom okamžiku pracovat jen s jednou aplikací, což znamená, že nepodporuje skutečný multitasking. Při přepínaní aplikací se aktuální stav aplikace uloží a při jejím následném zvolení tak uživatel nepozná, že se aplikace spouští znovu. Tento fakt znamená, že OS má nízké nároky na paměť, výkon, a tedy i na výdrž baterie. Samozřejmě v dnešní době by byl tento model mírně omezující, a tak od verze 5 dokáže pracovat se dvěma rezidentními aplikacemi, což umožňuje například poslouchání hudby na pozadí. Aktuální verze PalmOS (Obrázek 2), která vznikla na konci roku 2006, nabízí tedy jednoduchý single-tasking upravený o možnost běhu některých aplikací na pozadí, nebo běh aplikací na celé obrazovce, přičemž podporované rozlišení začínají u monochromatických obrazovek a končí při barevných obrazovkách o rozlišení 480x320 obrazových bodů (pixelů). Využívá protokol TCP/IP. Dále pracuje s rozhraním Graffiti 2. Graffiti technologie umožňuje přes vrstvu, pracující na principu dotykového displeje, psát písmena a znaky, a tím urychlit psaní na zařízení. Na správu a synchronizaci mobilního zařízení s počítačem slouží technologie HotSync. Také umožňuje, jak už bylo uvedeno, přehrávání a nahrávání videa a audia. Bezpečnost zařízení je řešena zamknutím pomocí hesla a možností nastavit vybrané aplikace jako soukromé. Na komunikaci s okolím může využívat serial port, USB, IrDA, Bluetooth nebo Wifi. Paměť může být rozšířená o paměťovou kartu. Také kromě základních aplikací umožňuje práci i s aplikacemi třetích stran. [5]
Obrázek 2: Přiklad UI pro PalmOS
13
Programování mobilních telefonů
1.1.1 Prvotní verze PalmOS Podobně jako jiné OS i PalmOS má několik generací. První verze PalmOS 1.0 a všechny verze do 5. generace jsou stavěny na jádře Dragonball (AXM 68000). V této verzi OS nerozlišuje mezi RAM a pamětí na ukládání souborů. Aplikace byly instalovány do paměti RAM. Jelikož systém nepodporoval přídavnou paměť, a jeho vnitřní paměť měla velikost od 0,5 MB do 1 MB, byl systém závislý od obnovovacích impulzů RAM, které udržovaly informace v paměti. Verze podporovala monochromatické displeje o rozlišení 160x160 pixelů. Komunikace s uživatelem probíhala přes rozhraní Graffiti nebo přes virtuální klávesnici. Na synchronizaci s PC se používal HotSync přes serial port. Obsahovala předem instalované aplikace Address (telefonní seznam), Date Book (kalendář), Memo Pad (poznámky), a To Do List (program pro práci s kancelářskými dokumenty). Ve verzi PalmOS 2.0 byla operačnímu systému přidaná práce prostřednictvím TCP/IP, síťový HotSync a podsvícení displeje. Objevily se aplikace jako Mail (poštovní klient) a Expense (správa financí). Verze PalmOS 3.0 spuštěna se zařízeními Palm III series přidává podporu IrDA a rozšířených fontů. Nabízí vylepšené předem instalované aplikace a vylepšené spouštění aplikací. Tato verze obsahuje několik podverzí. PamOS 3.1 přinesl minimum nových funkcí. Například větší podporu síťového HotSync. PalmOS 3.2 přidává Web Clipping, řešení umožňující práci se soubory na internetu ze zařízení, čímž se šetří jeho kapacity a paměť. V PalmOS 3.3 je zrychlený HotSync a je možnost použít jej i přes IrDA. Ve verzi PalmOS 3.5 je poprvé použita podpora 8bitových barevných displejů. Také zpříjemňuje ovládání menu, rozšiřuje Datebook. PalmOS 4.0 poprvé přidává podporu externí paměti, jako jsou například paměťové karty. Zásadně změnila práci s pamětí. RAM se využívá už jen na běh aplikací. Zavedena schopnost práce s rozhraním USB. Mobile Internet Kit, který pozůstává z Web Clipping a MultiMail (mailová schránka), je tu už součástí systému. MIK byl později k dispozici i pro PalmOS 3.5. Dále verze obsahuje nový manažer na koordinaci informací z různých aplikací a možností upozornit uživatele pomocí zvuku, blikání LED diody anebo vibracemi. Podporuje už 16bitovou barevnou obrazovku a různé časové zóny. Také je rozšířená bezpečnost. Ve verzi PalmOS 4.1 je později doplněno vylepšené rozhraní Graffiti 2 z PalmOS 5.2. 1.1.2 Současnost a PalmOS PalmOS 5 je už vystavěn na procesorech ARM. S aplikacemi pracujícími na základech Dragonball pracuje pomocí PACE emulátoru. Na nových základech systém teď běží spolehlivěji a rychleji. Objevuje se PalmSource Web Browser na prohlížení internetových stránek. Verze PalmOS 5.2 podporuje rozlišení 480x320. Je přidáno rozhraní Graffiti 2. Verze PalmOS 5.3 přidává podporu QVGA rozlišení. Následuje ještě stále poměrně hodně rozšířená verze PalmOS Garnet. Podporuje různé rozlišení displeje od 160x160 do 480x320 pixelů. Přidává knihovny pro Bluetooth. Jako poslední se zahájil vývoj Garnet OS 5.5 kompletně postavený na Linuxu. Někde se uvádí název ALP OS. Nikdy však nebyla vydána. Nejvyšší verze je Garnet OS 5.4.9. Palm OS Cobalt je další generací vyvíjenou před Garnet OS 5.5. Je to už moderní OS postavený na novém jádře podporujícím multitasking, práci s pamětí, multimediální a grafické programy a podobně. Dokáže pracovat s Bluetooth i Wifi. 14
Programování mobilních telefonů
V únoru 2009 bylo prezidentem a výkonným ředitelem společnosti Palm Inc. ohlášeno ukončení vývoje a podpory PalmOS a vydávaní nových přístrojů s tímto OS. Je však možné, že se tento OS objeví na zařízeních třetích stran. PalmOS v současnosti sice stále používaný, ale prakticky již mrtvý, můžeme považovat za OS, který určil směr, kterým se inteligentní zařízení budou ubírat. Společnost se chce dále věnovat pouze vývoji zařízení s Windows Mobile a WebOS. U WebOS jde o OS postavený na linuxu. Bude využívat běžné prostředky na vývoj aplikací, čím ulehčí vývojářům práci. Taky bude přizpůsoben moderním zařízením s dotykovými displeji apod. [5] [12]
1.2 WINDOWS MOBILE Windows Mobile je operační systém s integrovanou sadou základních aplikací pro mobilní zařízení postavený na Microsoft Win32 API. Dnes Windows Mobile běží na kapesních počítačích (Pocket PC), inteligentních telefonech, zařízeních Portable Media Center, ale i v automobilech. Je navržen tak, aby byl podobný stolové variantě Microsoft Windows. Samozřejmě je možné systém doplňovat o software třetích stran. OS měl původně jméno Pocket PC, ale v třetí generaci si změnil jméno na současné. OS Windows Mobile nezobrazuje jako uživatelské prostředí pracovní plochu, jak je to u stolní varianty, ale obrazovku Dnes (Today; Obrázek 3 [http://www.multicellphone.com/images/How%20to%20Customize%20Sliding%20Pan el%20home%20screen%20in%20Windows%20Mobile%206.1%203.jpg]). Na obrazovce Dnes je zobrazený aktuální čas a datum, informace o uživateli, následující události, emailové zprávy a úkoly. Na dolní liště se nachází nabídka start a kontakty. OS dále obsahuje sadu Office mobile, která je ekvivalentem Microsoft Office a Outlook Mobile, pracující nejen s poštou, ale i s kontakty nebo úkoly. Také je integrovaný Internet Explorer Mobile, Windows Media Player, klient pro PPTP VPN na tvorbu privátních virtuálních sítí, a taktéž je integrovaný ICS, umožňující využívat služby telefonu prostřednictvím počítače.
Obrázek 3: Příklad UI pro OS Windows Mobile 6.1 Standard
Jak bylo uvedeno na začátku, tak Windows Mobile běží na několika typech zařízení. Původně byl ale vyvíjený pro Pocket PC. Ty se dělily na dvě skupiny, s integrovaným telefonním modulem, anebo bez tohoto modulu. Další platformou, kde přešel Windows Mobile, jsou inteligentní telefony. Ze začátku konstruované bez dotykových obrazovek, aby se dali dobře ovládat jednou rukou. Následující platformu 15
Programování mobilních telefonů
představoval Portable Media Center. Jedná se o multimediální zařízení zaměřené na zábavu, a proto byl kladen důraz na integrované Windows Media Center a Windows Media Player. V automobilech se Windows Mobile objevil nejpozději. Tam sdružuje mnoho funkcí jako například informace, komunikaci a také zábavu. Vychází ve dvou verzích. V základní je integrovaná Bluetooth a USB technologie na přepojení se zařízeními a přehrávání hudby. Ve standardní verzi je možnost připojení GPS modulu, GSM telefonu. Systémy pracují na procesorech ARM o frekvenci 300 MHz, 32 MB RAM a obsahují integrovaný mikrofon. [6][11] 1.2.1 Pocket PC verze Na začátku vývoje se OS pro mobilní platformy od Microsoft jmenoval Pocket PC. Pracovali na principech systému Windows CE 3.0 a byli graficky skromné. Neměli ještě standardní procesorovou architekturu, a proto využívali různých architektur (ARM, SH-3, MIPS, atd.). První verze OS nesla název Pocket PC 2000. Byl zčásti následovníkem systému pro Palm-Size PC. Unikátní zařízení, kde Microsoft dělal první pokusy s mobilní verzí jakéhosi OS. OS Pocket PC 2000 byl vyvíjen jen pro Pocket PC bez telefonního modulu, ale na několik zařízení Palm-Size PC se dal systém zpětně nahrát. OS podporoval jen rozlišení 240x320 bodů (QVGA). Podporoval také přídavnou paměť, konkrétně paměťové karty typu CompactFlash a MultiMediaCard, a možnost IrDA přenosu. Verze obsahovala Pocket Office (balík aplikací Pocket Word, Pocket Excel, Pocket Outlook), Pocket Internet Explorer, Windows Media Player, Microsoft Reader (program na čtení elektronických knih), Microsoft Money (správa financí), Notes (poznámky). Funkce Character recognition umožňovala systému učit se různé typy psaného písma. Následovala verze Pocket PC 2002. OS využíval jen rozlišení QVGA, ale pracoval už i v Pocket PC s telefonním modulem a poprvé se objevil i na inteligentních telefonech, zatím ve většině GSM. Zčásti uvolněné licenční podmínky vývojářům umožnili vyvíjet širší spektrum lepších programů. Také se objevila podpora témat a rozšířilo se uživatelské rozhraní. Mezi další nové prvky patří synchronizace složek, oprava chyb a počítání slov v Pocket Word, WAP v PIE, podpora VPN, MSN Messanger (IM manažer od Microsoft), terminálové služby umožňující ovládání a spravování vzdáleného počítače přes síť, Windows Media Player 8 s možností streamování, Microsoft Reader 2 s DRM, vylepšený Pocket Outlook a podporu pro PalmOS pro sdílení souborů. 1.2.2 Windows Mobile verze Od třetí verze se OS Pocket PC přejmenoval na Windows Mobile. Stejně tak je OS už postavený na jedné architektuře. Objevilo se tu dělení pro dané typy zařízení a každý druh vychází pod jiným podnázvem. První verze pod novým označením se jmenovala Microsoft Mobile 2003. Vyšla ve čtyřech podverzích. Windows Mobile 2003 for Pocket PC Premium Edition a Windows Mobile 2003 for Pocket PC Professional Edition pro Pocket PC bez telefonního modulu, Windows Mobile 2003 for Smartphone pro inteligentní telefony a Windows Mobile 2003 for Pocket PC Phone Edition pro Pocket PC s telefonním modulem. Oproti předešlým verzím je tu přidaná podpora Bluetooth na 16
Programování mobilních telefonů
komunikaci, přenos údajů a používání bezdrátového headsetu, také podpora přídavné klávesnice. Mezi aplikacemi byl přidaný manažer na prohlížení, úpravu a sdílení obrázků, další rozšíření Pocket Outlook, vylepšený PIE, Windows Media Player 9.0 s optimalizovaným streamovaním. Ve verzi Phone Edition ještě odpověď na SMS a podpora MIDI vyzváněcích tónů. O rok později vydaná verze Windows Mobile 2003 SE obsahovala ještě přidané funkce na přepínaní displeje na výšku a na šířku, na zobrazení internetové stránky v PIE v jednom sloupci, Wifi a také podporu více rozlišení displeje (VGA, 240x240 a 480x480 pixelů). Následovala verze Windows Mobile 5. Obsahuje přístup k službám Microsoft Exchange Server. Díky této verzi OS se zvýšila výdrž baterie tím, že energie z něj je přerozdělovaná rovnoměrně. Předtím byla víc než polovina vyhrazená na udržování dat v RAM. Stejně tak tu už není jako hlavní paměťové médium jen RAM, ale i flash paměť. Ve verzi je také přidaná funkce Adaption kit upgrades, prostřednictvím které probíhají aktualizace. Mezi aplikacemi je doplněn Windows Media Player 10 Mobile, nová verze Office pod novým názvem Office Mobile (Obsahuje PowerPoint Mobile, podporu grafů v Excel Mobile a podporu tabulek a grafů ve Word Mobile), identifikaci volajícího se zobrazením fotografie, podpora DirectShow, QWERTY klávesnic, rozšířená podpora Bluetooth, GPS rozhraní a hlášení chyb podobně jako v stolové verzi Windows. Na synchronizaci dat s počítačem přidává ActiveSync 4.2. Zatím poslední generace OS je Windows Mobile 6. Má tři různé podverze. Windows Mobile 6 Standard pro inteligentní telefony bez dotykové obrazovky, Windows Mobile 6 Professional pro Pocket PC s telefonním modulem Windows Mobile 6 Classic pro Pocket PC bez telefonního modulu. Je silně provázaný se službami Windows Live a Exchange 2007. Přinesl podporu Office mobile pro inteligentní telefony. Může pracovat na rozlišeních 320x320 a 800x480 (WVGA). Spolupracuje se službou Live Update. Pro Pocket PC vylepšuje dálkový přístup. Podporuje VoIP, rozšiřuje možnosti Bluetooth, kódování paměťových karet, stahování z internetu. Obsahuje vyhledávač v programech v zařízení. V Outlook Mobile přidává podporu HTML emailů. Internet Explorer mobile podporuje JavaScript, AJAX a XMLDOM. Je možné používat Microsoft SQL Server 2005 a .NET Compact Framework. Office mobile 6.1 dokáže pracovat už s formátem dokumentů z Office 2007 (docx, xlsx, pptx). Také upravuje obrazovku Dnes i na horizontální provedení. Nejnovější verze Windows Mobile 6.5 obsahuje nový Internet Explorer Mobile, založen na IE6 engine, služby My Phone a Marketplace a Lock screen, která zobrazuje jen nejzákladnější informace. Obrazovka Dnes je významně změněna, aby bylo zařízení snadnější ovládat prostřednictvím dotykové obrazovky. Na snazší dotykové ovládání jsou zaměřeny i další změny. Windows Mobile 6.5 se objeví na nových zařízeních přibližně v druhé polovině roku 2009.[6][11][14]
1.3 ANDROID Andoroid (Obrázek 4 [http://www.sciam.com/media/inline/91052290-CE4736C5-6628F34FC51E972C_1.jpg]) je softwarová platforma a operační systém pro mobilní zařízení, založená na OS Linux. Je nejmladší z uvedených OS a první zařízení, které s ním pracují, momentálně přicházejí na trh. OS začal vyvíjet Google sám, ale později vytvořil Open Handset Alliance. Aliance sdružuje momentálně 47 společností. Kromě jiných Intel, Qualcom, Nvidia, Motorola, HTC, Samsung, LG, 17
Programování mobilních telefonů
T-Mobile, Vodafone, Telefónica a samotný Google. Aplikace do OS se programují v programovacím jazyku Java ve vývojovém prostředí Android SDK. Z jiných jazyků můžou být neoficiálně aplikace konvertované do ARM nativního kódu. Android je OS s otevřeným zdrojovým kódem.
Obrázek 4: T-Mobile G1 s OS Android
Dnes OS Android nabízí konektivitu přes GSM, EDGE, CDMA, EV-DO, UMTS, Bluetooth a Wifi. Nepodporuje však IrDA. Při zobrazovaní si poradí s VGA, 2D grafickými knihovnami, 3D grafickými knihovnami založenými na OpenGL ES 1.0, ale i s klasickými formáty inteligentních telefonů. Na ukládání se využívá SQLite. Textovou komunikaci přes SMS a MMS dokáže řadit do vláken. Internetový prohlížeč je založen na Web-kit. Mezi multimediálními formáty pracuje s MPEG-4, MP3, AAC, OGG, AMR, JPEG, PNG, GIF. OS plně podporuje nahrávání videa prostřednictvím zabudované kamery, dotykový displej, GPS, akcelerometr, a akcelerovanou 3D grafiku. Obsahuje nativní podporu pro multi-touch, ale není využívána. Mezi základními aplikacemi v OS se nachází emailový klient, SMS program, kalendář, mapy, internetový prohlížeč, kontakty. V současné době se objevují snahy přesadit Android i na poli malých notebooků, takzvaných netbooků. Tato snaha je zejména ze strany společnosti Asus, kde by byl nahrazen OS Microsoft Windows XP. Také může Android obsluhovat například elektronický papír. Podobné testy a pokusy odkrývají potenciál tohohle OS a jeho možné široké uplatnění a rozšíření v budoucnu. [7] [15]
1.4 SYMBIAN OS Symbian ( Obrázek 6) je operační systém s otevřeným zdrojovým kódem, navrhnutý pro mobilní zařízení (inteligentní telefony). Doplňují jej knihovny, grafické uživatelské prostředí a další nástroje. Je následovníkem OS EPOC, který fungoval na zařízeních Psion s ARM procesory. OS je vyvíjen společností Symbian Ltd., která se zformovala uzavřením partnerství společností Ericsson, Nokia, Motorola a Psion. OS je strukturovaný podobně jako jiné stolové OS, teda obsahuje ochranu paměti a preemptivní multitasking. Zakládá si na třech principech. Nesmí se plýtvat časem uživatele, integrita a bezpečnost uživatelských dat jsou prioritou a jakákoliv aktivita je omezená. OS je optimalizovaný pro zařízení, které nemají silné baterie, tedy je vhodný 18
Programování mobilních telefonů
pro mobilní zařízení, a na systémy orientované na ROM. Je kladen důraz na to, aby se šetřili zdroje systému a také paměť. OS zabezpečuje, aby aplikace, které nejsou právě obsluhované, procesor odpojil. Tento systém správy procesů se nazývá Active objects. OS Symbian se skládá z několika vrstev (Obrázek 5). Nejvyšší je vrstva uživatelského grafického rozhraní, následuje vrstva aplikačních služeb, vrstva služeb OS (obsahuje komunikační služby, všeobecné služby OS, multimediální a grafické služby a služby na zabezpečení konektivity), vrstva základních služeb a nejnižší je vrstva služeb jádru a ovládání hardware. Vrstva základních služeb je nejnižší dosažitelná vrstva ze strany uživatele. Zahrnuje souborový server a uživatelské knihovny, rozhraní zásuvných modulů obsluhujících všechny zásuvné moduly, centrální úložiště, DBMS a kryptografické služby. Obsahuje také textovou konzolu (terminál), z které může být systém kompletně ovládán bez použití vyšších vrstev. OS je designovaný s důrazem na kompatibilitu s ostatními zařízeními, zvlášť na odnímatelné zařízení. Symbian OS, stejně tak jako předcházející systémy, se postupně vyvíjel a měl několik generaci. Na začátku nesl název EPOC a později změnil své jméno na současné. [4][8]
Obrázek 5: Vrstvový model OS Symbian
1.4.1 EPOC verze Pro úplnost je ještě nutné dodat, že úplně první pokus o vytvoření jakéhosi OS se jmenoval Psion. Vznikl už v roce 1980. Teprve o víc jak deset let později se objevuje první verze tohoto OS se jménem EPOC16. Podporoval jednoduchý programovací jazyk OPL a IDE OVAL. Následovali EPOC OS Releases 1-4. 32bitové verze OS, a proto se označují také EPOC32 OS. Obsahovali grafické uživatelské rozhraní. Následující verzi EPOC Release 5, představenou na CeBIT v roce 1999, používalo více zařízení (Psion Series 5mx, Series 7, Psion Revo, net Pad, GeoFox One, Ericsson MC218, atd.), přesto však nešlo o komerční verzi. Dále se nedistribuovala a zpětně byla pojmenovaná jako Symbian OS 5. Poslední z těchto verzí se jmenovala ER5u. „u“ v názvu znamená, že podporuje Unicode. Poprvé se použila na zařízení Ericsson R380, ale jelikož nešlo o otevřený telefon tak na něj nemohl být doinstalovaný žádny software. Několik později uvedených prototypů telefonů další generace s touto verzi OS nikdy nebylo vydaných. [8]
19
Programování mobilních telefonů
1.4.2 Symbian OS v6.0 aţ 8.1 V dalším vývoji se OS přejmenoval, i když se při první verzi s novým jménem ještě v některé literatuře můžeme setkat se jménem ER6. Systém se v tomto momentě začal ve velkém soustředit na třídu inteligentních telefonů. První telefon s novou generací tohoto otevřeného OS, Nokia 9210, byl představen v roce 2001. OS nesl název Symbian OS v6.0. Podporoval už i Bluetooth. Vývoj UI pro inteligentní telefony a komunikátory dělené ještě podkategoriemi vedli k dvěma hlavním UI, Quartz a Crystal. UI jsou označované i jako DFRD. S dizajnem Ronneby od Ericssonu vytvořený základ pro rozhraní UIQ se později přejmenoval na Nokia Series 80 UI. Následovali Sapphire, Ruby a Emerald DFRD. Do prodeje se dostal jen Sapphire, který změnil jméno na Pearl a nakonec na Nokia Series 60 UI. Poprvé se objevil na Nokia 7650 v Symbian OS 6.1. Stejně tak se tu poprvé objevila zabudovaná kamera s VGA rozlišením. Později se od DFRD upustilo, rozdělili se mezi firmy Nokia a Ericsson a Quartz byl přejmenovaný na QIU Technology AB. Důležitá verze OS je Symbian OS 7.0, protože právě od této verze se OS začal dělit podle uživatelského rozhraní na UIQ, Series 80, Series 90 a Series 60. Přidával podporu IPv6 a EDGE. Podpora programování v Java byla zaměřena na verzi Java ME. Verze Symbian OS 7.0s měla lépe řešenou zpětnou kompatibilitu s Symbian OS 6.x, částečně kvůli kompatibilitě komunikátora 9500 a 9210. V těchto verzích se vyskytuje i první červ, Cabir. Symbian OS 8.0 nabízel výběr ze dvou odlišných jader EKA1 a EKA2. Jádra se na uživatelské straně chovali velmi podobně, ale odlišně v přístroji. EKA1 měl dobrou kompatibilitu se staršími zařízeními a EKA2 bylo jádrem real-time. V těchto verzích se přidala podpora CDMA, 3G, obousměrný datový přenos, DVB-H, a OpenGL ES. Následující podverze nesla pro různá jádra odlišné názvy. Pro EKA1 Symbian OS 8.1a a pro EKA2 Symbian OS 8.1b. Verze „b“ podporovala jednočipové zařízení, ale neobsahovala bezpečnostní vrstvu a nepodporovala instalaci otevřených aplikací. Verzi „a“ používala Nokia N90. Poprvé se objevila „N“ třída. V zabudované kameře se začalo používat optika Carl-Zeiss Tessar. Rozlišení měl 2 Mpx a možnost natáčet video ve VHS kvalitě. V tom čase používal obrovský displej s 352x416 pixelů. [8] 1.4.3 Verze 9.0 a novější Verze Symbian OS deváté generace jsou aktuální verze OS. První se jmenovala Symbian OS 9.0. Byla používaná jen pro vnitřní potřeby Symbian. Přestalo se tu rozlišovat mezi jádry a u EKA1 skončil vývoj. Systém vyřešil definitivně kompatibilitu s binárním kódem. Vevnitř systému se vykonalo více změn s ohledem na bezpečnost a nastavitelnost. Přechod na ARMv5 nezabraňoval ve zpětné kompatibilitě. Verze Symbian OS 9.1 přináší mnoho nových bezpečnostních vylepšení, naneštěstí dotáhnutých do takových rozměrů, že zabraňují používaní některých aplikací a omezují vývojáře. Verzi používají zařízení s S60 3rd Edition. V prvních vydáních se vyskytla kritická chyba, která způsobovala pád zařízení po odeslání několika sto SMS. Později se to u těchto zařízení vyřešilo malým programem. Přidaná je podpora Bluetooth 2.0. Symbian OS 9.2 se objevil na zařízeních s S60 3rd Edition Feature Pack 1 a přinesl podporu pro OMA Device Managment. Používají jej Nokia E90, E66, E63, E71, E51, N95, N82, N81, 6290, 6120 classic a Nokia 500. Verze Symbian OS 9.3 20
Programování mobilních telefonů
přináší upravenou správu paměti, podporu Wifi 802.11, HSDPA a některé další úpravy. Je přidávaná do nových zařízení jako Nokia N96 a Nokia N78. Verze Symbian OS 9.4 se poprvé objevila na zařízeních Nokia 5800. Stránkování je převzaté z verze 9.3, ale některé aplikace můžou běžet rychleji. Podpora SQL je zabezpečená SQLite. Symbian OS 9.5 přináší podporu pro mobilní digitální televizi v DVB-H a ISDB-T formáte. Jde o nejnovější verzi OS Symbian. [4][8]
Obrázek 6: Příklad UI pro OS Symbian
1.5 JINÉ POUŢÍVANÉ OS Na trhu je, jak je popsáno v úvodě, ještě několik dalších OS. Nemá však smysl, a ani není cílem této práce popsat je všechny. Některé mají malý podíl na trhu, používají se jen v jistých částech světa, nebo jen na jistých zařízeních. Popsané jsou nejrozšířenější u nás a nejvhodnější k cílům této práce. Také jsou jakýmsi vzorkem stávajících OS pro mobilní zařízení. Pro úplnost jsi blíže nepopsané OS, alespoň stručně vyjmenujeme. Na zařízeních iPhone je použitý iPhone OS. Vyvinutý je společností Apple Inc.. OS úzce spojený s Java se jmenuje SavaJE OS. Je určený pro mobilní telefony vyšších tříd. BlackBerry OS je OS pro byznys třídu mobilních zařízení. V Číně má silné zastoupení OS Linux. Mezi OS ještě můžeme řadit i BREW (Binary Runtime Enviroment for Wireless), který je populární hlavně v Severní Americe. Vyvinutý je společností Qualcomm Inc.
1.6 POROVNÁNÍ OS Podle výše uvedených faktů a parametrů jednotlivých OS je sestavená následující tabulka (Tabulka 1), ve které jsou porovnávané vlastnosti zajímavé pro tuto práci. V položce displej jsou uvedeny podporované rozlišení displeje, v ovládání jsou zahrnuty možnosti a složitost jeho ovládání. Položka programy hodnotí podporu programů třetích stran. V programovacím jazyku se rozumí programovací jazyky, ve kterých je možné tvořit aplikace pro daný OS. Rozšířenost hovoří o celkové a tuzemské rozšířenosti OS na mobilních zařízeních. A v neposlední řadě v položce zařízení je uvedeno s jakým typem zařízení si OS nejlépe rozumí. 21
Programování mobilních telefonů
Tabulka 1: Tabulka parametrů daných OS
OS
PalmOS
Windows Mobile
Android
Symbian
Displej
do 480x320 px dotykový
do 800x480 px dotykový
480x320 dotykový
360x640 px 800x352 px dotykový
Ovládání
- primárně QWERTY - sekundárně alfanumerické - funkční tlačítka - dotykové
- QWERTY - alfanumerické - funkční tlačítka - dotykové
- QWERTY - funkční tlačítka - dotykové (T-mobile G1)
- QWERTY - alfanumerické - alternativní - funkční tlačítka - dotykové
- systém je silně zaměřen na podporu cizích aplikací
- několik opensource aplikací speciálně pro Symbian OS - OS není otevřený, ale poskytuje části svého zdrojového kódu vývojářům - certifikuje cizí software
- Java - možnost použití SDK
- C++ - OPL - Python - Visual Basic - Simkin - Perl - možnost použití SDK
Programy
Prog. jazyk
Rozšířenost
Zařízení
- několik aplikací považovaných za základné/ jádrové - víc jak 50000 dalších, od opensource, uzavřených až po placené - C/C++ - kompilátory CodeWarrior, PRC-tools - teoreticky možnost programovat v jakémkoliv jazyku - rozšířený především na vlastních zařízeních - omezená rozšířenost daná rozšířeností daných zařízení - výskyt na zařízeních Palm PDA
- běžná podpora cizích aplikací - licencované, neoficiální i malé aplikace
- Visual C++ - .NET Compact Framework - Internet Explorer Mobile - možnost použití SDK - čtvrtý nejrozšířenější na světě (Q3 2008) - celosvětová rozšířenost - silné zastoupení v Asii - silná pozice v zařízeních Palm a HTC smartphone
- nově vyvinut - předpoklad nárůstu podílu na trhu s novými zařízeními - zatím jenom na zařízení T-Mobile G1 smartphone
- největší světový podíl na trhu (Q3 2008) - celosvětová rozšířenost - v Japonsku slabá pozice - nejrozšířenější na zařízeních NOKIA smartphone
Je zjevné, že pro cíle této práce je nejvhodnější OS Symbian. Největší kritérium jsem totiž kladl na rozšířenost u nás, protože je cílem naprogramovat aplikaci s co nejširším uplatněním. Stejně tak výběr OS podtrhuje zaměření na inteligentní telefony. O jednoduchosti programovacích jazyků je možné podle různých kritérií diskutovat, ale vzhledem na to že například Python for S60 vydává samotná Nokia, se opět jeví OS Symbian jako nejvhodnější. Podpora programů třetích stran, rozlišení displeje a ovládání je u porovnatelných zařízení porovnatelné.
22
Programování mobilních telefonů
1.7 SERIE SYMBIAN OS Podle objektivních parametrů jsem pro tuto práci vybral tedy Symbian OS. Pro úplnost ale třeba ještě popsat jeho několik distribuovaných verzí a stejně tak vybrat nejvhodnější. Symbian OS se podle sérií může dělit na Series 60, S60 3rd Edition, UIQ, UIQ 3, N-Gage, Series 80, Series 90. Každá je určená pro odlišný typ zařízení, i když se stále jedná o inteligentní telefony. Series 60 je vlastně původní název pro sérii nyní označovanou S60. Od třetí edice ale nastalo několik změn a můžeme ji považovat za částečně samostatnou sérii. S60 je tedy softwarová platforma nebo uživatelské rozhraní pro mobilní zařízení s OS Symbian. Momentálně je nejrozšířenější platformou na světě, protože je použitá na největším počtu zařízení. Pozůstává ze sady knihoven a standardních aplikací jako například telefonie, jádrové programy, a multimediální přehrávače. Vývoj nových aplikací je možný pomocí Java MIDP, C++, Python a Adobe Flash. Podporuje Java a Symbian C++ aplikace a má několik standardizovaných tlačítek. Tlačítko menu, levé a pravé funkční tlačítko, joystick a „clear“ tlačítko. S60 má 4 edice. Series 60, Series 60 Second Edition, Series 60 3rd Edition a S60 5th Edition. Každá edice ještě může mít několik „Feature pack“-ů, podle kterých se liší. V první edici S60 bylo rozlišení displejů pevně stanovené na 176x208 pixelů. Od druhé edice Feature Pack 3 už systém podporuje různé rozlišení. Třetí edice není binárně kompatibilní s předešlými a při instalaci nových aplikací vyžaduje certifikát. V říjnu 2008 byla spuštěná S60 5th Edition, která už podporuje dotykové displeje a přináší několik dalších menších změn. Series 80 je určená pro firemní a profesionální telefony Nokia. Jde o UI Crystal. Používá displej o rozlišení 640x200 px a QWERTY klávesnici. Podporuje práci s kancelářskými dokumenty, SSL/TLS, VPN a obsahuje integrovanou myš na navigaci a kompletní webový prohlížeč. Používají jej telefony Nokia 9210, 9210i, 9290, 9300, 9300i a 9500. Series 90 je používaný momentálně jen na zařízení Nokia 7710. Je stavěn na Psion Eion GUI Series 5, 5mx,7 a netBook. Podporuje dotykovou obrazovku. Je nekompatibilní s UIQ a Series 60. N-Gage je platforma založená na Series 60 určená pro hry a multimédia. Spojuje kapesní herní konzolu a mobilní telefon. UIQ je poslední platformou Symbian OS. UI je nazývané také Quartz. Podporuje aplikaci třetích stran, které můžou být psané v C++ a též Java aplikace. Verze 2.x a 3.x jsou určeny pro zařízení 2.5 a 3 generace s perem. Podporují dotykové obrazovky o rozlišení 208x320 a 240x320 px. Má jednotný SDK model a dobrou podporu vývojových nástrojů. Stejně jako u série 60 přinesl UIQ 3 několik větších změn, a proto je uvedený jako jakási další verze. V UIQ 3 se vyřešil problém se současnou podporou dotykových a obyčejných displejů, byla přidaná možnost stahovat mediální soubory přes webový prohlížeč a podobně. UIQ používá hlavně značka Sony Ericsson (např. modely P800, P910, M600, W9600), ale i Motorola (např. A1000), Benq (např. P30), Nokia (6708) a další. [4]
23
Programování mobilních telefonů
1.7.1 Výběr verze OS Symbian Na základě výše uvedených skutečností jsem tedy vybral Series 60, protože má největší podporu ze strany společnosti Nokia, jejíž telefon budu používat. Series 80 se používá jen na několika poměrně zastaraných komunikátorech a Series 90 dokonce jen na jednom zařízení. UIQ jsem vyloučil z důvodu menší podpory ze strany Nokia. Některé další rozdíly mezi Series 60 a UIQ popisuje článek http://www.fony.sk/index.php?podstranka=recenzie&cislo_kategorie=15&cislo_clanku =571.
24
Programování mobilních telefonů
2 PROGRAMOVACÍ JAZYKY Programovací jazyk je nástroj na zápis algoritmů a postupů, prostřednictvím kterých se potom zařízení, nejčastěji počítač, chová. Algoritmus napsaný v programovacím jazyku se nazývá program. Překladač, který slouží na překlad z programovacího jazyka do zdrojového kódu tak, aby jej pochopil počítač, se jmenuje kompilátor. Forma programu srozumitelná pro člověka nese název zdrojový kód. Byly vytvořené na přesný, jednoznačný a systémový opis daného algoritmu. Mají vlastní gramatiku a syntax, kterou je nutné vždy dodržet. Množství programovacích jazyků vychází z anglického jazyka, a tak i jména příkazů nebo konstant jsou často anglické, případně odvozené z angličtiny. Programovací jazyky se navzájem liší mnohými způsoby a je možné je dělit podle různých kritérií. Například na nižší, pracující s elementárními operacemi, a vyšší, kterých je dnes většina. Dále je můžeme rozlišovat podle toho, zda při překladu a spuštění jsou kompilované, nebo implementované. Jestli se přímo překládají do zdrojového kódu. Jazyky mohou tyto skupiny kombinovat, anebo vycházet ve verzích pracujících odlišně. Vyšší programovací jazyk se ještě dále dělí na procedurální a neprocedurální. Procedurální může být strukturovaný, kde se jeden celek rozdělí na dílčí úlohy, nebo objektově orientovaný pracující s objekty. Neprocedurální programovací jazyk může být funkcionální, prakticky funkce s vstupními parametry a jedním výstupem, nebo logický, který používá matematickou logiku.
2.1 PALMOS, WINDOWS MOBILE, ANDROID Všechny z uvedených operačních systémů více či méně podporují vývoj nových aplikací třetích stran a používají k tomu různé prostředky. Buď volbou vhodného programovacího jazyku, nebo připravením dobrého rozhraní na samotnou tvorbu. V případě, že by se někdo chtěl věnovat jinému OS, než je vybrán v této práci, jsou v následujících stručných odstavcích vyjmenované jejich možnosti. Pro PalmOS se používá jazyk C++ a kompilátory CodeWarrior a PRC-tools. Vlastnosti a možnosti C++ jsou popsané níže v samostatné kapitole. CodeWarrior je vývojové prostředí (IDE) pro Macintosh, Microsoft Windows, Linux, Solaris a jednoúčelové systémy. V mírně upravené podobě jako speciální verze je určen pro Sony PlayStation2, Nintendo, GameCube, Nintendo DS, PalmOS a Symbian OS. Jeho jádrem je C a C++ kompilátor. Verze ale mohou obsahovat kompilátory Pascal, Object Pascal, Objective-C a Java. Je to poměrně drahý komerční produkt. Alternativou mu je prostředí PRC-Tools. Pozůstává z kolekce GNU kompilátorů, assembleru, linkeru a symbolického debuggru. Dále modifikace nástrojů na podporu funkcionality samotného PalmOS, nástroje pro práci se soubory .PRC a dokumentaci k uvedenému. Je open-source a proto je u nás rozšířený. Na vývoj nových aplikací Windows Mobile používá Visual C++. Ve spolupráci s vývojovým nástrojem Visual Studio pracuje Microsoftem vydáván SDK. Dokáže emulovat aplikace už v průběhu jejich tvorby. Microsoft Visual C++ je IDE vyrobeno přímo Microsoftem pro C, C++, C++/CLI. Obsahuje nástroje na vývoj a debugging kódu C++, obzvlášť pro Microsoft Windows API, DirectX API a rámec Microsoft .NET. 25
Programování mobilních telefonů
Při představovaní nového OS Android, se hovořilo o vytváření aplikací v Java. Dnes se však prakticky využívá Android SDK integrující všechny důležité nástroje na vývoj. Obsahuje debugger, knihovny, emulátor, dokumentaci, příklady jednoduchých programů, a návody. Podporuje vývoj na OS Linux, Mac OS X, Windows XP nebo Vista. Dále obsahuje Java Development Kit, Apache Art a Python. Oficiální IDE je Eclipse, používající Android Development Tools. Java a XML soubory může vývojář editovat v prakticky jakémkoli textovém editoru. Na tvorbu svých aplikací může být v neposlední řadě použit také příkazový řádek. [7]
2.2 PROGRAMOVACÍ JAZYK C++ C++ je objektově orientovaný programovací jazyk střední úrovně. Spojuje některé prostředky z vyšších a nižších úrovní. Podporuje procedurální programování, datovou abstrakci, objektově orientované programování a generické programování. Vznikl jako vylepšení jazyka C a současné jméno vzniklo po přejmenování se z C with Classes (C s třídami). Při jeho vývoji byli nejprve přidané třídy a následně, kromě jiného, další funkce dělající z něj moderní programovací jazyk. Mezi jinými, virtuální funkce, překrývání operátorů, vícenásobná dědičnost, šablony a ošetření výjimek. V současnosti je jedním z nejrozšířenějších programovacích jazyků. Je standardizovaný jako ISO/IEC 14882:xxxx, přičemž xxxx značí rok vydání standardu. Má široké možnosti na uplatnění. Například jako programovací jazyk videoher, systémového software, ovladačů zařízení, klientských aplikací a podobně. [1] 2.2.1 Základní principy Tak jako jakýkoli jiný i tento jazyk je možné v základě popsat několika pravidly nebo principy. Ty dovolí pochopit práci a funkci jazyka. Základním principem je to, aby byl C++ kompatibilní s jazykem C v maximální možné míře. Dalším důležitým principem je, že funguje bez složitého programovacího prostředí. Musí být efektivní a lehce přenositelný jako C. Je jazykem se statickou typovou strukturou. Je navržen, aby co nejšíře podporoval různé programovací styly. Například procedurální programování, datovou abstrakci, objektově orientované programování a generické programování. Dále dává programátorovi možnost výběru. Dokonce má možnost rozhodnout se i nesprávně. C++ se vyhýba platformově závislým, nebo neuniverzálním prostředkům. Řídí se principem nulové režie nepoužitých prostředků. 2.2.2 Vývoj Prvotním cílem vývoje programovacího jazyka C++ bylo rozšíření jazyka C o črty, jako měl Simula, programovací jazyk zaměřen na programování simulačních programů. C byl vybrán kvůli své rychlosti, portabilitě a všeobecnému použití. Kromě těchto dvou jazyků C++ vycházel také z programovacích jazyků ALGOL 68, Ada, CLU a ML. Pomocí nástroje Cfront byly postupně přidané třídy, dědičnost tříd, silná typová kontrola, inline funkce a standardní hodnoty jazyka C. V roce 1985 je poté vydaná první verze. V roce 1983, ještě před samotným vydáním první verze, se objevili virtuální funkce, přetěžování funkcí a operátorů, konstantní proměnné, reference, zlepšená typová 26
Programování mobilních telefonů
kontrola a psaní komentářů za dvě lomítka. V roce 1989 přibyly vlastnosti jako vícenásobná dědičnost, abstraktní třídy, funkce třídy, konstantní členské funkce, neveřejné funkce. V pozdějších vydáních potom ještě doplněné například šablony, výjimky, měnné prostory, přetypování a datový typ boolean. 2.2.3 Knihovna C++ S postupným vývojem jazyka se vyvíjeli a přidávali i knihovny. První přidaná knihovna byla knihovna vstupně-výstupních operací jazyka. Velmi významnou je později přidaná STL. Současný standard C++ se skládá z jazykového jádra a C++ standardní knihovny. STL je z velké časti obsáhnuté v C++ standardní knihovně. Také obsahuje standardní knihovnu jazyka C a samozřejmě ještě mnoho jiných knihoven. Nové knihovny se mohou psát například i v samotném C, nebo jazycích Fortran, Pascal a Basic. Standardní knihovna obsahuje nástroje jako kontejnery, iterátory, asociativní pole (multimapy), multimnožiny. S použitím šablon je možné napsat generické algoritmy pracující s libovolným kontejnerem, nebo libovolnou postupností definovanou iteráty. 2.2.4 Rysy jazyka Jazyk C++ má několik rysů, kterými se odlišuje, nebo právě podobá jiným programovacím jazykům. Zásadním rysem je přetěžování funkcí a operátorů. Umožňuje deklarovat víc funkcí se stejným názvem. Správné použití se potom určí podle počtu a typů parametrů. Přetěžování operátorů nemění jejich váhu při výpočtech a také počet jimi používaných operandů. Dalším rysem jsou šablony. Umožňují generické programování. Kód může být napsán s neurčitým datovým typem. Neméně důležitým rysem jsou objekty. Jsou to instance tříd vytvořených při běhu programu. Poskytují čtyři vlastnosti. Abstrakci, enkapsulaci, dědičnost a polymorfizmus. Dědičnost je jednou ze základních výhod objektově orientovaného programování. Umožňuje definovat nové třídy na základě jiných, už definovaných tříd. Zmenšuje se tak množství kódu, protože některé funkce a proměnné definované ve vyšší třídě je možné použít. Dědění může být veřejné, neveřejné a soukromé. Zabezpečuje se tak přístupnost a viditelnost vlastností pro jiné oblasti kódu. Základní třídy mohou být deklarovány jako virtuální, a tehdy mluvíme o virtuálním dědění. Také je možné mnohonásobné dědění umožňující třídění, aby byla odvozená z vícera základních tříd. Enkapsulace je vlastně skrývání informací. Dovoluje členům třídy, aby mohli být deklarovány veřejně, neveřejně a soukromně. Veřejný člen je dosažitelný jakoukoliv funkcí. Neveřejný člen je dostupný jen funkcemi v dané třídě nebo funkcemi s přístupovými právy od dané třídy. Soukromý člen je dosažitelný těmi členy třídy, kteří jsou zdědění. Programovací jazyk toto dělení podporuje, ale nevyžaduje. Polymorfizmus dovoluje běžnému rozhraní víc implementací a objektům chovat se odlišně v odlišných podmínkách. C++ obsahuje několik druhů polymorfizmu. Statický, který nedovoluje rozhodovat při běhu, a dynamický, který má chyby při vykonávání funkcí. Statický polymorfizmus se blízko dotýká přetěžování funkcí, tak jak bylo popsané výše. Dynamický polymorfizmus má dvě vlastnosti dědičnosti a funkce virtuálních členů. Při dědičnosti se jedná o to, že přeměnné ukazovatele základní třídy mohou ukazovat na jakoukoli z něj vytvořenou třídu tohoto typu. Umožňuje to kontejnerům obsahovat ukazovatele na objekty různých typů. Funkce virtuálních členů umožňují specifičtější implementaci volaných funkcí, podle aktuálního typu objektu. 27
Programování mobilních telefonů
2.2.5 Symbian C++ Symbian C++ je natívni programovací jazyk určen pro zařízení s OS Symbian. Podle UI přístroje se liší i verze SDK Symbian C++. K samotnému SDK se často přidává i IDE Carbide.c++. Je postaven na Eclipse IDE, ale obsahuje extra moduly. Aby mohl Symbian C++ zachovat efektivní ošetřování výjimek a management paměti v zařízeních s omezenými zdroji, nabízí některé základné prvky odlišné od standardního C++. Poskytuje také komplexní přístup k funkcím přístroje. Snaží se zahrnout všechny funkce jiných programovacích jazyků pro OS Symbian a ještě je obohatit. [16]
2.3 JAVA Java je objektově orientovaný programovací jazyk, vyvinutý společností Sun Microsystems Inc. Syntax jazyku přebírá mnoho z C a C++, ale má jednodušší model objektů. Aplikace jsou kompilované do bytového kódu, což umožňuje platformovou nezávislost. Pracuje na jakémkoli zařízení s takzvaným Virtual Machine. Původně je Java programovací jazyk s uzavřeným zdrojovým kódem, ale v roce 2006 Sun Microsystems uvolnila velkou část zdrojového kódu pod licencí GNU General Public Licence. V polovině roku 2008 potom uvolnila prakticky zbytek kódu a Java se stala open source. Java se dělí na tři základní verze, aby dokázala lépe pokrýt specifika dané oblasti. Java, která je vlastně původní vyvíjenou verzí a je běžnou na domácích počítačích, nese název Java SE (případně J2SE, Standard Edition). Na ní postavená verze určená pro firemní řešení, jako jsou podnikové informační systémy a aplikace, se jmenuje Java EE (také J2EE, Enterprise Edition). Nejzajímavější pro tuto práci je však Java ME (J2ME, Micro Edition), určena pro mobilní telefony a zařízení s omezeným výkonem. Verzím J2SE a J2EE se proto dále nebudu věnovat a v případě zájmu o tyto verze můžete navštívit stránky Sun Microsystems. [1] 2.3.1 Vývoj Vývoj jazyku Java začal v roce 1991 ještě pod jménem Oak. Později změnil název na Green a až na konec se přejmenoval na Java. Cílem bylo vytvořit programovací jazyk pro spotřební elektroniku a jako základ se použil syntax a styl C a C++. Druhým cílem bylo vytvořit aplikaci, která bude fungovat na jakémkoli zařízení bez nutnosti opakované konfigurace na rozdíl od C nebo C++. Java je poměrně bezpečná s jednoduchým měněním nastavení bezpečnosti, čehož si všimli internetové společnosti, a začali ji používat na svých stránkách. Dokázala na nich běžet stabilně a bezpečně. Po vydání verze Java 2, kde se objevilo dělení na už zmíněné verze, se začala masově šířit. Ačkoli původní zaměření tomu nenasvědčovalo, Java se udomácnila v internetových aplikacích. Roku 1997 se objevila snaha Javu standardizovat podle mezinárodních norem, ale nakonec se od toho upustilo. Postupně se na webu dostávala z klientské strany na serverovou stranu, kde poskytuje další možnosti využití. Ještě před otevřením zdrojového kódu Sun Microsystems uvolnila SDK a JRE, což je prakticky podverze SDK. JRE se liší hlavně v tom, že nemá dostatek kompilátorů, nástrojových programů a potřebných hlavičkových souborů.
28
Programování mobilních telefonů
2.3.2 Filozofie Podobně jak tomu bylo u jazyku C++ i při jazyku Java je několik zajímavých základních vlastností. Vlastnosti popisují cíle, proč byl jazyk vytvořen a odkrývají jeho podstatu. Nejzákladnějšími jsou jednoduchost, odstraněním nedostatků jazyka C++ a přidání rozšíření, orientace na objekty a všeobecnost, která zabezpečuje pohodlnou práci a možnost rychle se naučit s jazykem pracovat. Kromě osmi jsou všechny datové typy objektové. Další neméně důležité vlastnosti jsou přenosnost, bezpečnost, chránící počítač v síťovém prostředí, robustnost, umožňující psaní vysoce spolehlivého software a nezávislost na architektuře zařízení, které z jazyku dělají univerzální, lehko rozšiřitelný software. Dále mezi jeho vlastnosti patří vysoká výkonnost, přičemž je interpretovaný (používá byte kód a teda je lehko přenosný). Do strojového kódu se překládá právě ta část kódu, s kterou se aktuálně pracuje. Jako poslední základní vlastnost můžeme jmenovat jeho dynamiku, což umožňuje jeho nasazení v prostředí, které se stále vyvíjí. 2.3.3 Java ME Java ME je jedna ze tří verzí programovacího jazyku Java určená pro specifické zařízení s malým výkonem. Primárně je určena pro mobilní telefony, PDA a set top boxy. Rozhraní se skládá ze dvou částí. Z konfigurace a profilů. Java ME se stala rozšířenou, protože je možné v ní tvořit hry do mobilních telefonů. Problém ale nastal v tom, že jsou různé požadavky zařízení s různou hardwarovou architekturou. Vedlo to k vytvoření profilů. Mezi nejznámější patří MIDP, určen pro mobilní telefony a Personal Profile, zaměřený na spotřební zařízení, set top boxy, PDA a podobně. Profily jsou vlastně podmnožinou konfigurací. Konfigurace se dělí v současnosti na dvě, CLDC a CDC. Konfigurace CDC je určená pro výkonnější zařízení jako CLDC, tedy například několikrát jmenované PDA. Má proto i více knihoven a prostředků na správu. Obsahuje tři základní profily. Foundation Profile určen pro zařízení, které potřebují kompletní implementaci Java Virtual Machine a obsahují Java SE API. Další profil Personal Basis Profile rozšiřuje předcházející o lehkou podporu GUI ve formě Abstract Window Toolkit. Poslední, Personal Profile, zas rozšiřuje Personal Basis Profile o komplexnější Abstract Window Toolkit a podporu apletů. Konfigurace CLDC je určená pro ty nejméně výkonné zařízení s minimem dostupných zdrojů, nejčastěji napájených z baterie s fixní konfigurací. Poskytuje minimální potřebný počet knihoven a prostředků Virtual Machine na chod. Naproti tomu vývojářům poskytuje velmi dobré vlastnosti a možnosti na vytváření aplikací. Nejčastěji operuje s pamětí do 512 kB a 16 nebo 32 bitovými procesory o taktovací frekvenci 25 MHz. Může pracovat s připojením na nějaký druh sítě a požaduje minimálně dvojbarevný displej s rozlišením 96x54 px. Má dva základní profily. Information Module Profile je určený pro pevné, často automatické zařízení firemních potřeb. Nejzajímavější pro tuto práci je však profil Mobile Information Device Profile. Je určen pro mobilní telefony. Obsahuje GUI API a základní 2D hrací API. Aplikace psané v tomto profilu se nazývají MIDlets. Jelikož prakticky všechny nové mobilní telefony vycházejí s implementovaným MIDP, stal se tento profil reálně standardem pro přenosná zařízení. [1] 29
Programování mobilních telefonů
2.4 PYTHON Python je dynamický objektově orientovaný programovací jazyk, který může být použitý na vývoj různých druhů software. Umožňuje vytvářet aplikace mnohem rychleji než při programování v tradičních jazycích, jako jsou C, C++ nebo Java. Jedná se o platformově nezávislý programovací jazyk. Je open source a zdarma. Umožňuje systémové volání. Syntax jazyku a sémantika je minimalistická, ale má poměrně velkou a komplexní standardní knihovnu. Python jako multiparadigmový programovací jazyk umožňuje programátorovi používání více stylů programování. Podporuje objektově orientované, strukturované i funkcionální programování. Může být jednoduše rozšiřován pomocí nových modulů, které mohou být napsány v C nebo C++. Mezi jeho vlastnosti patří automatická správa paměti, tedy není nutné zabývat se alokací a dealokací paměti. Typy jsou spojeny s objekty a ne s proměnnými. Proměnné může být přiřazená hodnota libovolného typu, respektive seznam může obsahovat objekty různých typů. Není třeba deklarovat proměnné. Operace jsou prováděny na vyšší úrovni abstrakce. Mezi další výhody jazyka Python patří dynamické psaní, vhodnost pro vývoj rozsáhlých projektů i psaní skriptů, dostatečná rychlost, snadný přístup k vývojovým nástrojům, pro tvorbu grafických uživatelských rozhraní, výkonné knihovny pro numerické výpočty, manipulace s obrázky, uživatelská rozhraní, webové skripty a podobně. [1][9][10] 2.4.1 Vývoj Programovací jazyk Python byl vyvinutý koncem 80. let, jako následovník programovacího jazyka ABC. První zmínka se objevila v roce 1991. Poskytoval třídy s děděním, systémové volání a některé jádrové datové typy. V roce 1994 se objevila verze 1.0. Hlavní vylepšení spočívalo v přidání nástrojů na programování. Ve verzi 1.4 se přidaly takzvané keyword arguments umožňující volání parametrů funkce bez samotného volání funkce a podporu komplexních čísel. Verze 2.0 přinesla garbage collector, která má za úkol určit nepoužívanou část paměti a připravit ji na další znovupoužití. Vložená pole se poprvé objevili až ve verzi 2.1, ale ve verzi 2.2 se již nevyskytovala jako přednastavená. Největší změnou ve verzi 2.2 je sjednocení typů a tříd do jedné hierarchie. Tato inovace změnila Python na striktně objektově orientovaný. Jako poslední byly přidány generátory. [9][10] 2.4.2 Standardní knihovna Standardní knihovna jazyku Python je rozsáhlá. Nové moduly mohou být kromě C napsány i v samotném Pythonu. Standardní knihovna podporuje množství standardních internetových formátů a protokolů, a proto je vhodná na psaní aplikací pracujících s internetem. Kromě toho obsahuje moduly na vytváření GUI, připájení k relačním databázím a manipulování s regulárními výrazy. Velká část knihovny je platformově nezávislá.
30
Programování mobilních telefonů
2.4.3 Vlastnosti Programovací jazyk Python má několik více či méně specifických vlastností. Mezi specifické patří zejména to, že proměnná je pojmenovaným odkazem na objekt. To znamená, že příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem. Další vlastností je uchování funkce jako objektu, dokud není volána. Python pracuje s datovými strukturami tak, že do nich neukládá objekty, ale jen odkazy na ně. Typ objektu není vázán na odkaz, ale je svázán až s odkazovaným objektem. Do jednoho seznamu je možno současně uložit odkazy na objekty libovolného typu. Vlastnost, která v Pythonu značně ulehčuje psaní zdrojového kódu a omezuje chyby při psaní je ta, že proměnné není nutno deklarovat. Proměnná je pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt a ne na jméno. Za běhu aplikace se nad objekty provádí silná typová kontrola, a tedy není možné typy libovolně míchat. Podobně členské proměnné tříd mohou vznikat až za běhu. Základní společná vlastnost s jinými běžnými programovacími jazyky je ortogonalita operátorů. To znamená, že operátory nejsou vázány na datové typy. Python je možné spustit v interaktivním režimu zvlášť hodícím se pro rychlé pokusy. [1][2][3][9][10] 2.4.4 Python for S60 Společnost Nokia si na základě programovacího jazyka Python vytvořila svůj port, který pojmenovala Python for S60. Je založen na Python 2.2.2 a určen pro platformu OS Symbian S60. Na začátku měl uzavřený zdrojový kód a málo funkcí, ale po jeho uvedení jako open source získal obrovskou podporu od vývojářů a začal se rozšiřovat. Umožňuje přístup k funkcím inteligentních telefonů, jako jsou například TCP/IP a Bluetooth komunikace, kamera, kontakty, kalendář, přehrávání audia a videa, a taky i jednoduché telefonii. Podporuje mnoho ze standardů programovacího jazyku Python 2.2, ale pro snížení velikosti instalačního balíku nejsou všechny moduly obsaženy. Je možné je později jednoduše získat. Dále podporuje Python/C API, pomocí kterého je možné vytvořit vlastní moduly a rozšířit tak funkcionalitu. Port vytvořila a dále vyvíjí společnost Nokia a tak je mimořádně vhodný na programování aplikací právě do mobilních zařízení této značky s OS Symbian S60. Na vývoji se také podílejí vývojáři v rámci veřejnosti a tak kromě oficiálních součástí je k dispozici i mnoho jiných, často specifických rozšíření. Je vydán i SDK, který umožňuje práci s Python for S60 na počítači a potom překopírování do mobilního telefonu jako zdrojový kód nebo jako hotovou aplikaci. [1][2][3][9][10]
2.5 DALŠÍ PROGRAMOVACÍ JAZYKY Samozřejmě výše uvedené programovací jazyky nejsou všechny, které můžou být použité. K dispozici je ještě několik jazyků pro OS Symbian, nemusí však být určeny pro Symbian S60 primárně. Příkladem může být například OPL. OPL je programovací jazyk určený pro mobilní zařízení s OS Symbian vyšších tříd. Používá se na komunikátorech Nokia, Sony Ericsson a Psion. Dalším kvalitním programovacím jazykem je Visual Basic, událostmi řízený jazyk s IDE od Microsoft. Je nástavbou programovacího jazyka BASIC. Poměrně jednoduchý na naučení a má vlastnosti všech 31
Programování mobilních telefonů
uvedených programovacích jazyků, ale není tak populární a používaný v této oblasti. Třetí jazyk Perl je méně vhodný, ale taky používaný. Jedná se o dynamický programovací jazyk vyšší úrovně určený na všeobecné použití. Posledním z používaných jazyků může být, i když minoritně, Simkin. Jedná se o skriptovací jazyk, který bývá často součástí Java nebo C++ aplikací. Může být uložen v různých formátech souborů. [1]
2.6 VÝBĚR PROGRAMOVACÍHO JAZYKU Na základě rozboru a vlastností výše vyjmenovaných programovacích jazyků je sestavena následující tabulka (Tabulka 2). Jejím cílem je shrnout důležité parametry na jednom místě a umožnit tak lepší výběr vhodného programovacího jazyku. Položka komplexnost poukazuje na možnosti uplatnění daného jazyku v softwarové oblasti. Cílová oblast blíže specifikuje položku komplexnost tak, že popisuje konkrétní zařízení nebo typ platformy. Rozšířenost v České Republice, shrnuje položka rozšířenost. Je-li k dispozici verze speciálně určená pro mobilní zařízení, je toto popsáno v položce Verze pro MZ. Podpora výrobců a podpora vývojářů popisuje oblíbenost daného programovacího jazyku u odborné veřejnosti a společností. Tabulka 2: Tabulka parametrů programovacích jazyků
Komplexnost
Cílová oblast
Rozšířenost
Verze pro MZ
Podpora výrobců
Podpora vývojářů
C++ - široké uplatnění, bez konkrétní cílové skupiny - spojuje prostředky nižších i vyšších programovacích jazyků - nespecifikovaná
- silné zastoupení
- ano - Symbian C++ - SDK - Symbian C++ přímo port firmy Nokia - možnost využívat na většině běžného software - silné zázemí a tradice - široká oblíbenost - výuka na školách
Java
Python
- platformová nezávislost - různé potřeby pokryty třemi verzemi
- malé i komplexní software - možnost používat více druhů programování
- nespecifikovaná - daná jednou ze tří verzí
- nespecifikovaná
- silné zastoupení
-
ano Java ME SDK
- zastoupení u menšího počtu vývojářů, na úkor známějších programovacích jazyků - ano - Python for S60 - SDK
- přímá podpora ne - možnost využívat na některém software
- podpora Python u výrobců ne Python for S60 přímo port firmy Nokia
- zvětšující se zázemí - oblíbenost pro jej vlastnosti - výuka na školách
- postupně získávající oblibu 32
Programování mobilních telefonů
Pro výběr vhodného programovacího jazyku pro tuto práci mělo největší váhu možnost programovat aplikace přímo v určeném software. Druhým nejdůležitějším kritériem je komplexnost jazyka, protože pro vývojáře je velice komplikované vyvíjení určité části software v různých jazycích. Z těchto pohledů mají všechny tři programovací jazyky výborné vlastnosti. Posledním z nejdůležitějších kritérií je podpora výrobců, protože dokáže značně ulehčit práci a aplikaci software na daný typ zařízení. U všech ostatních kritérií jsou vlastnosti více či méně vyrovnány. Po posouzení tří nejdůležitějších kritérií se jeví jako nejvhodnější Programovací jazyk Python případně C++. V této práci proto bude použit Python for S60 a Symbian C++, kvůli zabezpečení kompatibility na námi použitém zařízení. V případě hlubšího zájmu o programování v OS Symbian v Java je dobrý popis na stránkách http://Java.sun.com/Javame/index.jsp.
2.7 SDK SDK není programovací jazyk, ale do této kapitoly byl zahrnut, kvůli tomu, že toto prostředí se používá na vytváření aplikací pomocí daných programovacích jazyků bez samotného surového programování v daném jazyce. Je to teda sada vývojových nástrojů umožňující vývojářům vytvářet aplikace do daných software balíků, soustav, hardwarových platforem, počítačových systémů, herních konzol, operačních systémů a podobně. Můžou být poměrně jednoduché, ale naopak i komplexní a složité. Obsahují nástroje na debugging a další, prezentované v IDE. Taky se v nich vyskytují vzorové zdrojové kódy na lepší pochopení funkce. Často jsou poskytovány zdarma přímo od výrobců cílové softwarové platformy.
2.8 SHRNUTÍ V této práci bude použit mobilní telefon Nokia N95 s OS Symbian 9.1, S60 3rd Editon Feature Pack 1. V telefonu bude instalovaný programovací jazyk Python for S60 1.4.4 3rd Edition. V počítači bude funkce telefonu pro program Python simulovat emulátor Series 60 2nd Edition SDK. Druhý program, vytvořen v programovacím jazyku Symbian C++ nevyžaduje žádné další programy v mobilním telefonu. Na programování v počítači bude využit IDE Carbide.c++ v2.0, který obsahuje i vlastní emulátor mobilního zařízení.
33
Programování mobilních telefonů
3 PROGRAM FDSEARCH Po teoretickém rozboru a selekci vývojových prostředků je možné začít samotné programování mobilního telefonu. Cílem je vytvořit aplikaci na vyhledávání souborů v paměti mobilního zařízení. Aplikace bude schopna po zadání požadovaného výrazu nebo jeho části postupně skenovat paměť a hledat shodu. V případě, že vyhledávání bude neúspěšné, program vypíše zprávu o neúspěšnosti. V případě úspěšného hledání program ve vyskakovací zprávě oznámí počet nalezených cílů, nabídne způsob výpisu cílů a následně vypíše přesné, nebo zkrácené cesty k cílům. Hledané cíle můžeme přímo z výpisu otevírat a opakovaně prohlížet. Jméno programu nemá vliv na funkci a může být zvoleno libovolně. Vhodné je ale programy pojmenovávat tak, aby bylo podle názvu zřejmé jejich zaměření. Pro námi navrhovanou aplikaci je zvoleno jméno FDSearch. Vychází s anglických názvů pro soubor (Folder), adresář (Directory) a vyhledávání (Search).
3.1 VÝVOJOVÉ PROSTŘEDÍ Na psaní zdrojového kódu do programovacího jazyku Python může být použit libovolný textový editor. Soubor se zdrojovým kódem musíme pojmenovat a přidat příponu .py. V emulátoru na počítači potom soubor najdeme a spustíme. Emulátor by měl přesně simulovat mobilní zařízení, ale v našem případě se přistupuje k některým zdrojům tak, že tato možnost se nedá použít. Druhou možností je test běhu aplikace na samotném zařízení. Možnost vyžaduje na zařízení nainstalovaný programovací jazyk Python. Na vývoj cílové aplikace byly použity následující nástroje. Program PS Pad na psaní zdrojového kódu. Program, podobně jak u jiných jazyků, zvýrazňuje syntax jazyka Python a je přehledný. Soubor se zdrojovým kódem byl do mobilního zařízení importován rozhraním Bluetooth. Následně jej program Python for S60 v zařízení dokázal přečíst a spustit.
3.2 VYTVOŘENÍ RÁMCE PROGRAMU Aplikace napsaná v jazyku Python na svoji práci používá jenom knihovny, které jsou do ní importovány. Knihovny se tu nazývají moduly. Používá se k tomu výraz import název_modulu. Šetří se tím velkost výsledné aplikace. V programu FDSearch jsou použity moduly appuifw, na obsluhu UI, e32, poskytující připojení dalších funkcí pro UI, sysinfo, poskytující informace o systému a os, umožňující jednotný přístup k funkcím OS Symbian. Název aplikace nemusí být stejný jako název souboru programu. Na volbu názvu se používá funkce appuifw.app.title= jméno_aplikace. Text se v jazyku Python píše do dvojitých nebo jednoduchých uvozovek. Výpis textu do konzoly programu umožňuje příkaz print. Shrneme-li popsané funkce, vytvoříme základní rámec programu, který importuje potřebné moduly, pojmenuje aplikaci a do konzoly vypíše parametr funkce print.
34
Programování mobilních telefonů
3.3 JÁDRO PROGRAMU V následující části bude postupně po souvisejících úsecích popsáno jádro programu. Skládá se z úvodní dotazovací funkce, načtení paměťových disků v zařízení a podprogramu listujícím v záložkách. 3.3.1 Zadávání poţadavků Pomocí funkce appuifw.query(u‘popis’,’text’) se vytvoří okno (Obrázek 7), kde bude možné zadávat text, v našem případe hledaný výraz. Popisný text (parametr popis) bude „Hledat:“. Zadaný textový výraz přiradí proměnné slovo, přičemž parametr text určuje, že vkládaný výraz je právě řetězec znaků. Symbol „u“ na začátku popisu značí, že text bude v stylu Unicode. Vytvoříme prázdné pole pole, do kterého později budeme vkládat hodnoty. Do proměnné dlzkaS uložíme délku hledaného výrazu pomocí funkce len(slovo). Po zadání výrazu a odeslání požadavku vyvoláme informační vyskakovací zprávu s textem „Vyhledávám…“ pomocí příkazu appuifw.note(u"Vyhledavam...",'info').
Obrázek 7: Okno zadávání hledaného výrazu v programu FDSearch
3.3.2 Vyhledávání Použitím cyklu for přejdeme k samotnému vyhledávání, protože způsobí opakování daných funkcí, do doby kdy bude splněna požadovaná podmínka. Příkaz e.drive_list() v argumentu poskytne všechny dostupné disky zařízení. Pro každý z nich se pak budou opakovat následující odsazené řádky. Odsazením program tedy zjišťuje, které příkazy patří cyklu. Do proměnné folder uložíme název disku a přidáme opačné lomítko. Je nutné jej zdvojit, protože samotné znamená vyjmutí následujícího znaku z textu. Může následovat samotná funkce na prohledávání složek, nebo odkaz na funkci, umístněnou v jiné části kódu, které musíme poslat proměnnou folder. V našem programu je pro přehlednost použit odkaz na funkci. Začátek funkce definujeme příkazem def nazev_funkce (cesta). Do připravené proměnné cesta funkce, se uloží poslaná hodnota při volání funkce. Pomocí funkce try zabezpečíme program 35
Programování mobilních telefonů
před chybami vyjmenovanými za výrazem except. V případě, že nebude možné vykonat část try kvůli chybě, vykoná se příkaz následující za položkou except, a program pokračuje dál. Ošetříme tak program před nechtěnými pády, způsobenými ve většině případů chybějícím vstupním parametrem. Funkce files=os.listdir(cesta) zabezpečí načtení všech souborů a adresářů v složce cesta do proměnné files. Do proměnné count uložíme počet prvků proměnné files. Zabezpečí to funkce len(). Funkcí appuifw.app.title = u"FDSearch\n"+cesta do hlavičky k názvu programu přidáme výpis aktuálně prohledávaného adresáře (Obrázek 8).
Obrázek 8: Výpis prohledávaného adresáře v hlavičce programu FDSearch
Vložíme další cyklus, který pro každou položku v adresáři bude vykonávat všechny následující příkazy a cykly. Cyklus samozřejmě ošetříme příkazy try a except. Do proměnné prehladavany uložíme jméno právě jedné položky z adresáře a délku jména do proměnné dlzkaA. Vytvoříme si další prázdné pole kombslovo. Využijeme jej na uložení všech písmenných kombinací slova v proměnné prehladavany. Po nadefinování předešlých tří příkazů opět vložíme cyklus for, v kterém budeme pro každý znak z řetězce prehladavany vykonávat další operace. Nejdřív si uložíme aktuálně vybrané písmeno do proměnné pis a vytvoříme si řetězec abcd s nulovou délkou. Vložíme cyklus while, který bude v případě, že délka slova v proměnné len je menší jako dlzkaA cyklicky vykonávat skupinu odsazených výrazů. Výrazem abcd=abcd+prehladavany[pis] způsobíme, že do k obsahu proměnné abcd se na konec přidá písmeno pis. Každé takovéto slovo vložíme do pole kombslovo příkazem kombslovo.append(abcd.lower()). V poli kombslovo budeme tedy mít všechny kombinace za sebou následujících písmen možných vytvořit z názvu skenované položky. Funkcí abcd.lower() změníme všechny velká písmena na malé, čímž dosáhneme, že vyhledávání nebude case sensitive (závislé na velikosti písma). Abychom urychlili vyhledávání, nebudeme do pole kombslovo ukládat kombinace kratší než zadaný výraz slovo. Dosáhneme to vložením příkazu kombslovo.append(abcd.lower()) do cyklu if v kterém budeme porovnávat délku slova slovo a abcd. Na konci cyklu while zvětšíme délku pis o 1. Předešlými kroky jsme si vše připravili na samotné porovnávání. Do proměnné countKS si uložíme počet položek v poli kombslovo a pomocí příkazu for pro každou položku budeme porovnávat, zdali se shoduje se zadaným výrazem. V tom přímo při porovnávání změníme velká písmena na malé, aby vyhledávání nebylo závislé na velikosti písma. Porovnávat budeme pomocí podmínky if. V případě, že platí shoda, budou se vykonávat příkazy ve funkci if. Výraz os.path.join(cast1, cast2) spojí výrazy cast1 a cast2. Využijeme ji při spojení názvů cest, na které se nacházíme a adresáře, v kterém se našla shoda. Následně se funkcí pole.append(cesta_k_cílu) na konec pole pole připojí přesná cesta k nalezenému cílu. Přidáním volání break na konci zabráníme dalšímu porovnávání výrazu, v kterém již byla nalezena shoda. Další podmínkou používající funkci os.path.isdir() zjistíme, či vložená cesta poukazuje na složku, nebo soubor. V případě, že se jedná o složku, bude se prohledávat rovnaným způsobem, jako bylo popsáno pro vyšší úroveň. Takto se funkce do sebe opakovaně noří, až kým se nedostane na složku, v které už nejsou další složky. Poté se přejde na další složku. Dosáhne se tím kompletní prohledání paměti. 36
Programování mobilních telefonů
3.4 VÝPIS NALEZENÝCH KOŘENŮ Poslední část programu pozůstává z výpisu kolik, zda vůbec bylo nalezených kořenů a jejich případného výpisu s kompletními cestami, případně výpisu jen jejich názvů. Ve výsledku je možné listovat, nebo třídit jej a zvolený cíl otevřít. Je tu dáno jakési UI, které má výše popsané vlastnosti. Celá poslední část programu se vykoná, jenom když je nějaký kořen nalezen. V případě, že není, program vypíše ve vyskakovacím oknu (funkce appuifw.note(‘zobrazeny_text’,’error’)), že položka slovo nebyla nalezena. Parametr error udává typ vyskakovacího okna. V případě nalezení kořenů se vykonají následné příkazy. Funkce str() změní typ proměnné, v tomto případě číslo udávající počet nalezených cílů, na typ string. Následuje vyskakovací okno se zprávou o nalezení a počtu nalezení hledaného slova. V dalším vyskakovacím okně se zobrazí výzva ke zvolení způsobu výpisu. Výběr je možné provést na tomu určené výběrové ploše (Obrázek 9). Je možnost vybrat kompletní výpis nalezených cest. Druhou možností je zkrácený výpis, kde se vypíšou jen názvy nalezených cílů, bez cest. Plochu vyvoláme příkazem appuifw.selection_list([u"Kompletni",u"Zkraceny"],search_field=0), kde poslední parametr značí, že v seznamu nebude možné další vyhledávání.
Obrázek 9: Plocha výběru způsobu výpisu v programu FDSearch
Po vybrání způsobu výpisu se zobrazí plocha, na které jsou již vypsány jednotlivé kořeny (Chyba! Nenalezen zdroj odkazů.). Zobrazení plochy zabezpečuje funkce vypisD, které jsou poslány parametry pole a zoznam. Funkce vypisD vypíše v hlavičce, že se jedná o výpis nalezených položek. Pomocí příkazu if rozliší, zdali byl vybrán zkrácený výpis nebo ne. Jestli byl zvolen kompletní výpis, tak podobně jako u plochy výběru způsobu zápisu vypíše všechny nalezené kořeny i s jejich kompletními cestami. Změnou je nastavení parametru search_field na hodnotu 1, aby bylo možné výsledky dále třídit (Obrázek 11). Výpis zůstane zobrazen do doby, než uživatel zadá další pokyn. V případě, že zkrácený výpis zvolený byl, musíme z nalezených kořenů v proměnné pole extrahovat jenom názvy souborů, respektive adresářů. Nové názvy budeme ukládat do pole shortpole. Funkcí shortpole.append(os.path.basename(pole[p])) pro každou položku v poli pole 37
Programování mobilních telefonů
(cyklus for) dosáhneme kýženého výsledku. Stejně jako v již popsaných případech vypíšeme výsledky. Když je počet nalezených výsledků větší než výška obrazovky mobilního telefonu, na její straně se zobrazí posuvná lišta, která zobrazuje, v které části výpisu se nacházíme.
Obrázek 10: Kompletní a zkrácený výpis nalezených kořenů v programu FDSearch
Zobrazení můžeme kdykoliv vypnout pomocí volby Zruš, nebo může volbou OK přejít na výsledek. Přejít na výsledek je možné tehdy, jedná-li se o soubor. Jestli se budeme pokoušet otevřít adresář, program nám ve vyskakovacím okně oznámí, že to z aplikace není možné. Rozlišení zabezpečuje funkce if s parametrem os.path.isfile(pole[vypis]). V případě zvolení souboru program ve vyskakovacím okně zobrazí přesnou cestu k souboru a pomocí funkce open_standalone(pole[vypis]) soubor otevře. Po zavření zvoleného souboru se aplikace vrátí na seznam nalezených kořenů. Spojíme-li všechny části do jednoho celku, dostaneme požadovaný program. Rozmístnění jednotlivých úseků může být různé, ne však náhodné.
Obrázek 11: Možnost třídění nalezených kořenů v programu FDSearch
38
Programování mobilních telefonů
4 SÍŤ GSM A JEJÍ ZÁKLADNÍ PARAMETRY Bezdrátové sítě jako komunikační prostředek, jsou významnou součástí dnešní společnosti. Usnadňují předávání informací a dovolují odpoutat se od jednoho místa. Postupně nahrazují pevné telekomunikační sítě. Pevné a bezdrátové (mobilní) sítě jsou navzájem propojeny, a tak nejen že mohou účastníci spolu komunikovat, ale se i doplňují. Už přibližně v roce 1970 se začali objevovat první pokusy s bezdrátovými telefonními přenosy. Ze začátku se jednalo o analogovou technologii. Generaci označujeme jako nultou generaci, neboli 0G. V osmdesátých letech byla nahrazena technologiemi NMT a AMPS. Označujeme ji jako 1. generaci nebo 1G. Digitální mobilní systémy nastupují od 2. generace (2G). V současnosti druhou generaci postupně začíná nahrazovat třetí generace (3G). Její rozšířenost se liší v každé zemi. Umožňuje přenášet hlas i data. Hlavním symbolem jsou videohovory. Po ní pravděpodobně nastoupí čtvrtá generace, která je momentálně ve stádiu standardizace. Dnes se ještě stále ve velké míře využívají technologie druhé generace. Nejrozšířenější je GSM založena na TDMA. Je rozšířená celosvětově. [17]
4.1 TECHNOLOGIE GSM Technologie GSM patří do druhé generace mobilních telekomunikací. Původně byla určena jenom na hlasový přenos, ale nyní umožňuje i přenos dat. Je nejrozšířenější technologií mobilních telefonů. Pracuje ve frekvenčních pásmech 850 a 1900 MHz v USA a Kanadě a 900 a 1800 MHz ve zbytku světa. Jedná se o otevřený standard, vyvinutý v Evropě. Phase 1 je první část doporučení GSM, které bylo vydáno v roce 1991. V této době se systém využíval pouze na hlasové hovory. Díky flexibilitě systému byly do systému přidány nové technologie, které umožnily přenos dat. V roce 1995 bylo vydáno doporučení Phase 2. Tím, že se jedná o technologii digitální, se odstranily nebo omezily nedostatky sítí pracujících na bázi analogového přenosu. Mezi hlavní takovéto přínosy patří zvýšení kvality spojení. Teda kromě jiného možnost opravit chyby vzniklé při přenosu. Též se zvýšila efektivita přidělování frekvenčních pásem, snížily se náklady na provoz sítě a teoreticky spojení není možné odposlechnout. Přechod na digitální technologie dále umožnil integraci hlasových a datových sítí. Jedním způsobem je přenos hovorů v datové síti, jako jakákoliv jiná data, druhý způsob je naopak přenos dat v telefonní síti. GSM je buňková síť. Znamená to, že mobilní stanice (mobilní telefony) se do sítě připojují prostřednictvím buněk. Telefon při přihlášení do sítě hledá nejbližší buňku nebo buňku s nejsilnějším signálem. Každou buňku tvoří anténa, která svým umístněním a výkonem určuje její velikost pokrytí. Pokrytí se taky mění s měnícími se vnějšími podmínkami šíření. Podle velikosti pokrytí můžeme pak buňky dělit na makro, mikro, piko, femto a stínové (deštníkové). Makrobuňka vzniká tehdy, když je její anténa umístněná nad úrovní střech. O mikrobuňce mluvíme tehdy, když je tato anténa umístněná pod úrovní střech. Typicky v městské zástavbě. Pikobuňky se používají většinou uvnitř budov a mají dosah jen pár desítek metrů. Můžou sloužit i při navýšení hovorové kapacity v daném bodě. Blízko k nim mají femtobuňky. Mají taktéž dosah jen pár desítek metrů. Rozdíl je v tom, že jsou určeny pro domácí nebo malé 39
Programování mobilních telefonů
firemní řešení připojení do sítě širokopásmovým připojením. Stínové buňky se umísťují do stínu jiné buňky nebo vyplňují malý prázdný prostor mezi buňkami. Anténa, o které byla řeč v předchozím textu se v GSM sítích nazývá BTS, neboli základnová stanice. Umožňuje komunikaci mobilních zařízení mezi sebou, protože představuje vstupní bod do telekomunikační sítě. BTS tvoří skupiny, které řídí základnová řídící jednotka (BSC). Tyto skupiny se nazývají subsystém základnových stanic (BSS). Výše postavěn v hierarchii je síťový a spínací subsystém (NSS). Tvoří jej již víc elementů a struktura je nejvíc podobná struktuře pevné telefonní síti. Obsahuje registry a databáze účastníků a jejich stavů, ústředny a centra na ověření autentičnosti. Další částí GSM sítě je jádrová síť GPRS (GCN). Tato se v struktuře nutně vyskytovat nemusí, ale dnes je to běžné protože umožňuje paketový přístup na internet. Dalo by se říct, že nejvýše postavenou strukturou je operační subsystém (OSS), který koordinuje funkci celého systému, zajišťuje jeho servis a podporu procesů. Obsahuje centra pro management a administraci sítě, a též provozní a servisní centrum. [17]
Obrázek 12: Bloková architektura sítě GSM
4.2 KOMUNIKACE MEZI BTS A MOBILNÍ STANICÍ V GSM Mobilní stanice komunikuje se sítí nejen, když probíhá hovor, ale i v klidovém stavu. Přenášejí se informace o poloze, síle signálu, prostředcích, které jsou k dispozici a podobně. Primárně se většina informací běžnému uživateli nezobrazuje, protože pro něj nejsou důležité. Je ale možné je pomocí vhodného softwaru zobrazit. Informace mezi mobilní stanicí a BTS jsou přenášeny v přiděleném kmitočtovém pásmu. Pro GSM, jak již bylo uvedeno, jsou to 890-960 MHz pro GSM 900 a 1710-1880 MHz pro GSM 1800. Komunikační pásmo je rozděleno na dvě části. Část 890-915 MHz (1710-1785 MHz) pro komunikaci od mobilní stanice k BTS, neboli uplink. Druhá část 935-960 MHz (1805-1880 MHz) pro komunikaci od BTS k mobilní stanici, neboli downlink. Každé pásmo je rozděleno na kanály o šířce 200 kHz, teda na 124 kanálů u GSM 900 a 374 u GSM 1800. Kanály se stejným číslem ve směru uplink i downlink tvoří duplexní pár. U GSM 900 je to 45 MHz, u GSM 1800 95 MHz. Komunikace mobilního zařízení běžným způsobem však není možná bez speciálního modulu obsaženého v zařízení. Označuje se jako SIM karta. Obsahuje systémové i uživatelské informace. Je možné ji používat ve více zařízeních, a tak zachovat stejné parametry. Zjednodušeně můžeme říct, že SIM karta umožňuje mobilní stanici komunikovat v síti. Komunikaci mezi BTS a mobilní stanicí dělíme na idle mód, kdy neprobíhá hovor, ani přenos dat a dedicated mód, kdy existuje aktivní spojení. [17]
40
Programování mobilních telefonů
4.2.1 Idle mód V idle módu je mobilní telefon tehdy, když je připojen a přihlášen do sítě operátora a je připraven na uskutečnění hovoru nebo přenos dat. Probíhá pouze výměna parametrů mezi mobilní stanicí a BTS. Jeden ze základních parametrů přenášených v idle módu je CGI (Cell Global Idenity). Tato informace se nachází v BTS. Slouží k přesnému určení polohy telefonu v rámci světa. Skládá se z identifikátorů krajiny MCC (Mobile Country Code), operátora v dané zemi MNC (Mobile Network Code) a dané buňky LAC, CID (Local Area Code, Cell IDentifier). Část CID je v rámci daného operátora v dané krajině nejzajímavější. Jednoznačně identifikuje danou buňku, tedy nejpřesněji určuje polohu mobilního telefonu. Nejčastěji se zapisuje v decimálním tvaru. Parametr BSIC rozlišuje základnovou stanici vysílající na stejném kanále v jednom místě. Skládá se z identifikátoru BCC, rozlišující buňky ve stejné síti a identifikátoru NCC, rozlišující buňky různých operátorů. Parametr BSIC se v dané síti může opakovat, odlišuje pouze okolní buňky. Další důležitý parametr Channel určuje, na kterém kanálu je mobilní telefon připojen. Podle čísla kanálu se dá zjistit, jestli probíhá komunikace v standardu GSM 900 nebo GSM 1800. Pro GSM 900 jsou kanály číslovány od 1 do 124 a pro GSM 1800 od 512 do 885. RXLevel definuje sílu signálu základnové stanice přijímaného mobilním telefonem. Tento parametr si zjišťuje mobilní zařízení bez zásahu BTS. BTS jenom porovnává sílu signálů z okolních vysílačů a rozhoduje o handoveru. RXLevel je pětibitové číslo, které po převedení udává sílu signálu v jednotkách dBm. Hodnota 0 odpovídá hodnotě -110 dBm, hodnota 63 odpovídá -48 dBm. Následují parametry C1, CRO a C2. Parametr C1 udává o kolik dB je přijímaný signál vyšší od prahové úrovně, kterou třeba dosáhnout, aby bylo mobilnímu telefonu povoleno přihlášení do sítě. Parametr CRO (Cell Reselect Offset) udává zvýhodnění buňky před okolními. C2 přímo navazuje na předešlé dva parametry, protože je prakticky jejich součtem. Určuje, o kolik musí být signál sousední buňky silnější, aby se mobilní telefon připojil k ní. Jakousi obdobou CGI je u mobilního telefonu, respektive jeho SIM karty, parametr IMSI. Jedná se o jednoznačnou identifikaci zařízení. Opět, jako u CGI, se skládá z několika identifikátorů. Kód krajiny (MCC), kódu operátora (MNC) a kódu účastníka v síti (MSIN). Po přihlášení do sítě telefon odešle tuto hodnotu operátorovi a tím je identifikován. I když se skladba IMSI podobá telefonnímu číslu, jsou to dva rozdílné parametry. Pro větší bezpečnost se k IMSI přidává parametr TMSI. Číslo TMSI se vytváří v ústředně a je náhodné. Poté je přiděleno mobilnímu telefonu. Hodnota parametru se z bezpečnostních důvodů často mění. Kromě vyjmenovaných parametrů se v idle módu objevují i další. Ty však z hlediska zjišťování nastavení sítě nejsou tak důležité. Může se jednat o parametry určující důvod ukončení posledního hovoru, připojení mobilní stanice v roamingu, různé počítadla a podobně.
41
Programování mobilních telefonů
4.2.2 Dedicated mód O dedicated módu mluvíme tehdy, když jsou přenášena data nebo probíhá hovor mezi mobilní a základnovou stanicí. Jedná se tedy o aktivní spojení. Kromě samotných dat se přenášejí i okamžité hodnoty dynamických parametrů. Podle těchto hodnot se v reálném čase přizpůsobuje vzájemná komunikace. Mezi takovéto parametry patří též TX power. Volně můžeme název přeložit jako vysílací výkon vysílače. Vysílačem v tomto případě nazýváme mobilní telefon. Parametr může nabývat hodnot od 0 do 19, které se podle převodních tabulek přepočítávají na okamžitý vysílací výkon mobilního telefonu v dBm. Další důležitý parametr je RxQuality. Určuje BER (Bit Error Rate) přenosu, teda bitovou chybovost přenosu. Získanou hodnotu je nutno opět převést podle převodní tabulky. Tento parametr je zásadní při určování kvality hovoru. Na vyhodnocení kvality hovoru se ještě výraznou měrou podílí parametr RxLevel. Parametr TS (Time slot) nese informaci o timeslotu, v kterém probíhá komunikace. V GSM je možné komunikovat v jednom kanálu v jednom z osmi timeslotů. Parametr nabývá hodnot 0-7. Ze samotného principu mobilní komunikace vyplývá, že mobilní stanice se volně pohybuje, tedy může měnit svou vzdálenost od BTS. Pro správnou komunikaci je potřeba dodržet i při takovýchto podmínkách synchronizaci. Mobilní telefon je proto nucen vysílat informace dříve nebo později, v závislosti na vzdálenosti. Informaci o časovém předstihu nese parametr TA (Timing Advance). Jedná se o šestibitové číslo, pomocí kterého je možné určit přibližnou vzdálenost mobilního telefonu od BTS. Podobně jako u idle módu i u dedicated módu je možné zachytit několik dalších parametrů. Nejsou však pro tuto práci tak důležité a proto se jim nebudeme věnovat.
42
Programování mobilních telefonů
5 PROGRAM ABOUT NET Program About Net vytvořen pro tuto práci si klade za cíl sesbírat a v přehledné podobě zobrazit co nejvíce informací o připojené GSM síti. Primárně je zaměřen na zjišťování hodnot parametrů popsaných v předchozí kapitole. Aplikace nabídne jednoduché, ale přehledné prostředí. V menu bude k dispozici jmenný výběr parametrů k zobrazení, krátké informace o aplikaci a možnost aplikaci ukončit. Po zvolení požadovaného parametru se jeho hodnota s popisem zobrazí na displeji a zůstane zobrazena do chvíle, kdy bude přepsána jinou hodnotou. Jméno programu About net opět vychází z angličtiny a je vybráno podle zaměření aplikace.
5.1 VÝVOJOVÉ PROSTŘEDÍ Symbain C++ je univerzální programovací jazyk, protože je možné psát kód nejen v na to vytvořených programech nebo obyčejném C++ editoru, ale i v textovém editoru. Psaní v textovém editoru by však bylo zbytečně zdlouhavé a komplikované řešení. Programování v klasickém editoru C++ by vyžadovalo větší nároky na nastavení prostředí a pozornost programátora. Symbian C++ totiž obsahuje omezený počet funkcí oproti svému předchůdci a naopak mnoho nových, specifických přidává. V práci je proto vybrán jako nejvhodnější IDE určený přímo na programování pro OS Symbian.
Obrázek 13: Vývojové prostředí Carbide.c++ Na programování je tedy použit IDE Carbide.c++ (
Obrázek 13). Je přímo nabízen na stránkách společnosti Nokia na námi požadovaný účel. Jedná se přesně o IDE určen na vytváření aplikací C++ nebo C pro zařízení s OS Symbian. Je založen na Eclipse IDE a vývojových nástrojích C/C++ z Eclipse CDT Project. Program pro svou plnou funkčnost vyžaduje v počítači nainstalované programy Perl a .NET framework. Programovací prostředí Carbide.c++ 43
Programování mobilních telefonů
obsahuje integrovaný emulátor inteligentních telefonů. Tento byl využíván na kontrolu správné funkčnosti programu, ale vzhledem k tomu, že program sbírá informace o připojené síti skutečná funkčnost programu, byla testována na mobilním zařízení. V programovacím prostředí je možné vytvořit instalační soubor. Ten po podepsání, respektive autorizování společností Symbain nainstalujeme do mobilního telefonu, čím umožníme testování případně již samotné používání aplikace.
5.2 UŢIVATELSKÉ ROZHRANÍ Zdrojový kód programovacího jazyka Symbian C++ nelze tak jednoduše popsat jako to bylo u programovacího jazyku Python. Nebudeme proto zacházet do detailů. Po spuštění námi zvoleného IDE vybereme kromě názvu aplikace i počáteční UI aplikace. Pro jednoduchost proto zvolíme prázdnou plochu s nadpisem a položkami Menu a Exit. Po absolvování vstupního dialogu tedy program vytvoří potřebný zdrojový kód a rámec programu, do kterého následně budeme vkládat objekty a části námi napsaného kódu. Díky přátelskému ovládání IDE Carbide.c++ při vytváření samotného UI není nutno zasahovat do zdrojového kódu. Pracuje se pouze s objekty, které vybíráme z menu. Po vložení na správné místo jim v dialogovém okně nastavíme požadované parametry. Po takovémto vytvoření uživatelského rozhraní, do vybraných objektů vkládáme vlastní zdrojový kód, kterým docílíme požadované funkčnosti.
Obrázek 14: Úvodní obrazovka aplikace About Net
Uživatelské rozhraní aplikace About Net obsahuje nadpis, ve kterém je umístněno jméno aplikace. Uprostřed bílé plochy aplikace je umístněn objekt Label. Ten bude využíván na zobrazení zachycených hodnot a popisů k nim. Aplikace po spuštění zobrazuje text „Prosím zvolte položku z menu“. Na dolní ovládací liště jsou zobrazeny možnosti Menu a Exit (Obrázek 14). Výběr položky je možný na to určeným funkčním tlačítkem. Zvolením položky Exit bude aplikace ukončena. Po zvolení položky Menu se zobrazí menu, nabízející čtyři možnosti výběru. Možnost Exit má stejnou funkci jako položka Exit na hlavní liště. Dále je k dispozici položka O aplikaci. Po jejím zvolení se ve vyskakovací zprávě zobrazí několik informací o programu. Třetí možností volby je položa Idle. Po vybrání této položky se zobrazí submenu obsahující další možnosti volby. Jsou to CGI, BSIC, Channel, RXLevel, C1, C2, CRO a položka IMSI, TMSI. 44
Programování mobilních telefonů
Po vložení daných zdrojových kódů tyto položky budou zobrazovat stejnojmenné hodnoty na displeji zařízení. Obdobou volby Idle je volba Dedicted. Volba Dedicated obsahuje v submenu položky TX power, RxQuality, RxLevel a TS, TA (Obrázek 15).
Obrázek 15: Menu aplikace About Net
Vytvořili jsme tedy kompletní grafické rozhraní aplikace obsahující jak nadpis aplikace, její kompletní menu, tak i oblast na zobrazování informací. V následující kapitole přiřadíme jednotlivým položkám funkce.
5.3 JÁDRO PROGRAMU Jak je popsáno výše, v této části se nachází samotné funkční jádro programu. Z pohledu na čas vytváření aplikace pochopitelně zabírá největší díl, protože ji musí tvůrce kompletně vytvořit bez jakýchkoliv programových pomůcek nebo šablon. Programování v prostředí Carbide.c++ je pro přehlednost rozděleno na několik modulů. Tyto moduly jsou prakticky soubory nesoucí specifickou informaci o programu. Můžeme je rozdělit na tři základní skupiny. Systémové moduly, které jsou vytvořeny samotním programem a tvoří rámec programu. Při programování není nutno je měnit, nebo do nich zasahovat. Další skupinou jsou hlavičkové moduly. Mají příponu .h. Obsahují deklaraci funkcí, objektů, proměnných a dalších komponentů použitých v třetí skupině modulů, které můžeme nazvat běžné programové moduly. Tato skupina má příponu .cpp a obsahuje běžný zdrojový kód, objekty, funkce a proměnné deklarované v hlavičce. Též mohou obsahovat své lokální deklarace funkcí a proměnných. Hlavičkové a programové moduly, které patří k sobě, nesou obvykle stejné jméno. Vyvolání vyskakovací zprávy po vybrání položky O aplikaci je poměrně jednoduché. V programovém modulu StyPokusContainerView.cpp se po vybrání této položky spustí funkce HandleO_aplikaciMenuItemSelectedL. Do ní stačí vložit příkaz RunOaplikacinoteL();. Oaplikacinote je název objektu, vyskakovací zprávy, zobrazující stručné informace o aplikaci.
45
Programování mobilních telefonů
5.3.1 Idle mód Idle mód v programu obsahuje parametry mobilní stanice a základnové stanice v klidovém stavu, tedy neprobíhá hovor. Jedná se pouze o sběr a zobrazení hodnot, které si navzájem BTS a mobilní zařízení posílají. Hlavičkový soubor pro funkci CGI je pojmenován CGI.h. Pomocí příkazu #include
importujeme knihovny Etel3rdParty.h, e32base.h a e32std.h. Importované knihovny nám umožní používat funkce, které budeme pro zobrazení hodnoty CGI potřebovat. Hlavičkový soubor dále obsahuje definici dvou tříd. Třída MCellIdObserver obsahuje jenom deklaraci veřejné virtuální funkce CellIDL. Funkce CellIDL nevrací žádnou hodnotu (typ void), ale při jejím volání jí budou zaslány parametry aCountryCode, aNwId, aAreaCode a aCellId, z kterých se skládá CGI. Druhou třídou je CCellIDCheck. Obsahuje deklaraci několik veřejných a soukromých funkcí. Funkce vytvoření třídy, zpracování dat a povinné funkce RunL() a DoCancel(). Dále deklaruje několik proměnných. Při jejich deklaraci je využívána rodičovská třída CTelephony. Programový modul nese název CGI.cpp. Na jeho začátku pomocí importujeme vytvořený hlavičkový soubor CGI.h. Dále jsou obsaženy samotné funkce, které vytvoří třídu, inicializují proměnné, získají potřebné hodnoty a odevzdají je dále. Ve funkcí GetCGIInfo pomocí vytvořené proměnné typu směrník (ukazovatel, pointer) iTelephony použijeme funkci rodičovské třídy GetCurrentNetworkInfo funkce obsahuje proměnné iStatus a iIdV1Pkg. Proměnná iStatus je typu boolean, určuje stav funkce. Proměnou iIdV1Pkg je nutné dále zpracovat, protože se nejedná o běžnou proměnnou, ale o ukazovatele na funkci iIdV1. Tato funkce obsahuje metody iCountryCode, iNetworkId, iLocationAreaCode a iCellId, které vrací hodnoty MNC, NNC, LAC a CID, ze kterých se skládá CGI.
Obrázek 16: Zobrazení hodnoty CGI v aplikaci About Net
Dále použijeme hlavičkový a programový modul uživatelského rozhraní, které již byly vytvořeny na začátku. Do hlavičkového soboru StyPokusContainerView.h přidáme příkaz na importování souboru CGI.h a definujeme funkci CellIDL, která umožní použít parametry popsané u stejnojmenné virtuální funkce. Dále definujeme proměnnou typu směrník iCCellIDCheck, která umožní používat funkce třídy CCellIDCheck. V programovém modulu StyPokusContainerView.cpp vytvoříme funkci CellIDL. 46
Programování mobilních telefonů
Funkce vytvoří proměnnou buffer typu TBuf. Jedná se o pole znaků. Proměnnou buffer postupně naplníme textem „CGI:“ (příkaz (_L("CGI:\n", \n způsobí odřádkování)), a hodnotami aCountryCode, aNwId, aAreaCode a aCellId. Pomocí funkce TDesC str(buffer); změníme typ proměnné buffer na TDesC. Nakonec obsah proměnné zobrazíme na displeji (příkaz SetLabelTextL(buffer)). Aby celý proces proběhl, musíme ho vyvolat příkazem iCCellIDCheck->GetCGIInfo();, který vložíme do funkce spouštějící se po vybrání položky CGI v Menu aplikace (HandleCGIMenuItemSelectedL). Výsledek zobrazuje Obrázek 16. Zobrazení hodnoty RXLevel z Menu aplikace pracuje prakticky stejně jako zobrazení hodnoty CGI. V hlavičkovém soubore RXLevelH.h jsou definované dvě třídy. Prvá MNwSignalObserver obsahuje deklaraci veřejné virtuální funkce SignalStatus. Funkce nevrací žádnou hodnotu (typ void), ale při jejím volání jí budou zaslány parametry aStrength a aBars, což jsou síla signálu v dBm a v čárkách na telefonu. Druhá třída CNwSignalCheck je ekvivalentem třídy CCellIDCheck. V programovém modulu RXLevel.cpp ve funkci GetSignalInfo() prostřednictvím „rodičovské“ funkce GetSignalStrength získáme proměnné iStatus a iSigStrengthV1Pckg. iSigStrengthV1Pckg je ukazovatelem na funkci iSigStrengthV1, která obsahuje metody iSignalStrength a iBar. Metody vrací sílu signálu v dBm a v čárkách na telefonu (0-7). V hlavičkovém souboru StyPokusContainerView.h importujeme soubor RXLevlelH.h a definujeme funkci SignalStatus, která umožní použít parametry popsané u stejnojmenné virtuální funkce. Dále definujeme proměnnou typu směrník iNwSignalCheck, která umožní používat funkce třídy CNwSignalCheck. V programovém modulu StyPokusContainerView.cpp vytvoříme proměnnou KDisplayFormat typu _LIT, obsahující řetězec znaků „RXLevel:\n%d\n( %d dBm)“. Poté vytvoříme funkci SignalStatus. Funkce vytvoří proměnnou buffer typu TBuf. Jedná se o pole znaků. Dále vytvoříme proměnnou rxlev typu TInt. Do proměnné rxlev vložíme hodnotu 110 – aStrength. Proměnná aStrength může nabývat hodnot od -1 do -123. Obsah proměnné buffer vytvoříme pomocí příkazu buffer.Format(KDisplayFormat, rxlev, aStrength);, tedy do ní vložíme obsah proměnné KDisplayFormat ve kterém budou znaky %d nahrazeny obsahem proměnných rxlev a aStrength. Proměnná aBar není využita. Změníme typ proměnné buffer na TDesC její obsah zobrazíme na displeji (Obrázek 17). Celý proces vyvoláme příkazem iNwSignalCheck->GetSignalInfo(); ve funkci HandleRXLevelMenuItemSelectedL.
Obrázek 17: Zobrazení hodnoty RXLevel v aplikaci About Net
47
Programování mobilních telefonů
Funkce zobrazení informace IMSI a TMSI je oproti předešlým vytvořená jinak. Hlavičkový soubor (IMSIApp.h) definuje pouze jednu třídu. Třída CIMSIApp obsahuje deklaraci povinných funkcí, vytvoření třídy získání potřebných údajů a několika proměnných. Proměnné jsou odvozeny z třídy CTelephony a proměnná IMSI z TDes. V hlavičkovém souboru jsou ještě importovány knihovny e32base.h a Etel3rdParty.h. Zbytek procesu zobrazení je vložen do programového modulu StyPokusContainerView.cpp. Jsou tu vytvořeny funkce definované v hlavičkovém souboru IMSIApp.h. Funkce GetIMSI vytvoří třídu CIMSIApp a volá funkci ConstructL(). Při volání funkce GetIMSI je nutné jí odeslat prázdnou proměnnou, do které uloží skutečnou hodnotu IMSI a proměnnou vrátí. Ve funkci ConstructL() pomocí volání funkce GetSubscriberId dostaneme proměnné iStatus a iSubscriberIdV1Pckg. Proměnná iStatus má stejnou funkci jako u funkce GetCurrentNetworkInfo. Proměnná iSubscriberIdV1Pckg je ukazovatelem na funkci iSubscriberIdV1, která obsahuje metodu iSubscriberId. Ve funkci RunL() do proměnné IMSI pomocí této metody uložíme hodnotu IMSI.
Obrázek 18: Anonymizované zobrazení hodnoty IMSI a TMSI v aplikaci About Net
Po vybrání položky IMSI, TMSI z Menu aplikace se spustí funkce HandleIMSIMenuItemSelectedL. V této funkci vytvoříme proměnné typu TBuf. Jednu pojmenujeme iIMSI a druhou buffer. Do proměnné buffer vložíme text „IMSI:\n“. Poté voláme funkci GetIMSI s parametrem iIMSI. Hodnotu iIMSI následně připojíme na konec proměnné buffer. Hodnotu parametru TMSI jsme nezískali, protože hodnota TMSI tvoří jeden z bezpečnostních prvků a je tedy nepřístupný. Zpřístupnění tohoto parametru, by mohlo znamenat jeho neúčinnost. Proto na konec potom připojíme ještě text „\nTMSI:\nnepristupne“. Změníme její typ na TDesC a pomocí funkce SetLabelTextL(buffer) ji zobrazíme na displeji zařízení. Výsledné zobrazení parametru IMSI a TMSI zobrazuje Obrázek 18. Zobrazení parametrů BSIC, Channel a C1, C2, CRO v aplikaci není možné. Na zobrazení těchto parametrů v programovacím jazyku Symbian C++ nejsou integrovány žádné funkce. Projevuje se tu stáří samotného OS Symbian. Nové funkce jsou implementovány pomalu a komplikovaně. Přesto však umožňuje zobrazit velký počet dalších parametrů (IMEI, jméno operátora, časové údaje, stav aktivních spojení, čísla účastníků apod.). Nepřítomnost funkcí na zobrazení zmíněných parametrů obcházejí specializované placené programy jako například NetMonitor. 48
Programování mobilních telefonů
5.3.2 Dedicated mód Mód dedicated v aplikaci nezobrazuje hodnoty parametrů vybraných v Menu, ale pouze zobrazí vyskakovací zprávu „Mód dedicated není přístupný“. Je to způsobené z několika důvodů. Postupně od vrchu směrem dolů jsou tyto důvody popsány, jestli by po splnění podmínky výše aplikace nefungovala, je nutné splnit podmínku o řádek níž: -
Položkám nejsou přiřazeny funkce na odchytávání informací. Dedicated mód může fungovat, jenom při probíhajícím spojení. Vyžaduje hlubší a propracovanější zásah do OS ze strany aplikace. Vyžaduje speciální SIM kartu, případně jiné povolení od operátora.
Zvláště třetí a čtvrtý bod se navzájem doplňují a v případě pokračování v práci při řešení diplomové práce by bylo možné pokusit se nejen o zpřístupnění dedicated módu, ale i o drobné zásahy do sítě.
5.4 ABOUT NET SHRNUTÍ Aplikace About Net je demonstrativní ukázkou použití programovacího jazyka Symbian C++. Zaměřuje se na zachycení vybraných informací ze sítě. Konkrétně umožňuje zobrazit parametr RXLevel, IMSI a CGI. Výsledky přehledně zobrazí na displeji zařízení. Aplikace nevyžaduje žádný další prostředek na svou funkci. Stačí ji jednoduše nainstalovat do mobilního telefonu a je připravena k použití.
49
Programování mobilních telefonů
ZÁVĚR Mobilní zařízení se staly neoddělitelnou součástí života mnoha lidí, protože usnadňují velké množství úkonů. Tvorba nových kvalitních aplikací představuje jednoduchý a méně nákladný způsob jak inovovat mobilní zařízení. Aplikace mohou být vyvíjeny za různými účely, a tak i možnosti vývojářů nejsou omezeny. V práci jsou popsány nejpoužívanější operační systémy zařízení a programovací jazyky pro mobilní zařízení, díky kterým je možné tyto aplikace vytvářet. Operační systémy, jako základní programy jakéhokoli zařízení poskytují přístup a přerozdělování zdrojů. Vývoj operačních systémů mobilních zařízení byl různý, dnes však poskytují podobné vlastnosti a funkce. Výběrem OS Symbian v této práci je zajištěna možnost snadného rozšíření na mobilních zařízeních, protože patří mezi nejpoužívanější, jak u nás, tak i ve světě. Popsané programovací jazyky patří k nejrozšířenějším jazykům na programování mobilních telefonů. Vznikaly oddělením od mateřských jazyků nebo byly vyvíjeny přímo. Dnes se ve většině případů jedná o objektové programovací jazyky s množstvím dalších funkcí. Vybraný programovací jazyk Python for S60 umožňuje snadný přístup ke zdrojům mobilních zařízení a rychlé psaní zdrojového kódu. Má velkou podporu od společnosti Nokia. Druhý vybraný jazyk Symbian C++ zas nabízí komplexnější přístup k zdrojům zařízení a OS Symbian. Výměnou za jeho větší složitost je pak možnost vytváření propracovanějších aplikací. V práci byla naprogramována demonstrativní ukázka aplikace na vyhledávání souborů a složek v paměti mobilního telefonu. Program dokáže prohledat celou paměť telefonu v krátkém čase, což umožňuje uživateli zjednodušit práci. Zadaný výraz může být jak název souboru, tak i název složky. Program tak nenutí uživatele používat dvě rozhraní. Dále program umožňuje zadat jenom část názvu hledaného výsledku. Výsledky přehledně zobrazí ve zkrácené nebo úplné formě, v kterých je možné dále hledat. Vybraný kořen, kromě adresářů a soborů .mp3, dokáže přímo otevřít. Do programu se mohou jednoduše dopisovat nové části nebo vkládat nové moduly, čímž je možné rozšířit jeho stávající funkce nebo přidávat nové. Není nutno přepisovat stávající kód, nové části stačí jenom vložit na správné místo kódu, případně na ně odkázat. Výrazná vlastnost rozšiřitelnosti programu, jej předurčuje na pozdější úpravy s cílem zvyšování komfortu ovládání ze strany uživatele, zvětšení množství funkcí, případně i urychlení vyhledávání. V práci též byla popsána technologie GSM a způsob komunikace mezi mobilním telefonem a BTS. Jako důležité parametry jsou vybrány a rozebrány pro mód idle CGI, BSIC, Channel, RXLevel, C1, C2, CRO, IMSI a TMSI. Pro dedicated mód jsou to TX power, RxQuality, RxLevel, TS a TA. V návaznosti na popsané parametry byla naprogramována aplikace na jejich zobrazení. Při jejím rozboru a vytváření jsou analyzovány možnosti získání těchto parametrů. Aplikace je demonstrativní ukázkou možnosti přehledného zobrazení vybraných parametrů. Využívá prostředky programovacího jazyka Symbian C++. Aplikace má vytvořené příjemné, jednoduché a velice intuitivní uživatelské rozhraní, přičemž umožňuje zobrazit hodnoty CGI, RXLevel a IMSI. Na zobrazení dalších parametrů by programovací jazyk vyžadoval hlubší zásah do OS a speciální SIM kartu od operátora. Další možností získání dalších parametrů je volba jiného OS.
50
Programování mobilních telefonů
Použitá literatura [1]
FITZEK, Frank H.P., REICHERT, F. Mobile Phone Programming : and its Application to Wireless Networking. [s.l.] : Springer, 2007. 474 s. ISBN 978-1-4020-5968-1.
[2]
Python for Series 60 Platform API Reference. Python for Series 60 Platform. 2005, no. 1.2, s. 1-74.
[3]
PyS60 Library Reference. Python for Series 60 Platform. 2008, no. 1.4.4, s. 1-110
[4]
Symbian [online]. [2008] [cit. 2008-10-30]. www.symbian.com.
[5]
Palm [online]. [2008] [cit. 2008-11-15]. www.palm.com.
[6]
Microsoft [online]. [2008] [cit. 2008-11-22]. www.microsoft.com/slovakia/WindowsMobile/default.mspx.
[7]
Android [online]. [2008] [cit. 2008-11-23]. code.google.com/android/what-is-android.html .
[8]
All About Symbian [online]. [2008] [cit. 2008-11-30]. www.allaboutsymbian.com .
[9]
HERMS, D., MCDONALD, K. Začínáme programovat v jazyce Python 2. opravé vydání. [s.l.] : Computer Press a.s., 2008.
[10]
BEAZLEY, David M. Python. [s.l.] : Neocortex s.r.o., 2002.
[11]
Co nového u mobilních Windows: verze 6.1. PC World. 2008, 09.
[12]
The Inquirer [online]. [2009] [cit. 2009-23-02]. www.theinquirer.net/inquirer/news/971/1050971/palm-os.
[13]
Avilella [online]. [2009] [cit. 2009-17-02]. www.avilella.blogspot.com/.
[14]
MobilMania [online]. [2009] [cit. 2009-17-02]. http://www.mobilmania.sk/Dalsierubriky/AR.asp?ARI=10903.
[15]
Počítače.SME.sk [online]. [2009] [cit. 2009-23-02]. http://pocitace.sme.sk/c/4320586/asustestuje-android-na-netbookoch.html?vf=rss.
[16]
Forum.Nokia.com [online]. [2009] [cit. 2009-09-03]. http://www.forum.nokia.com/Resources_and_Information/Explore/Runtime_Platforms/Symbia n_C++/.
[17]
HANUS, Stanislav. Radiové a mobilní komunikace. [s.l.], [200-]. 85 s. Vysoké Učení Technické. Skripta.
51
Programování mobilních telefonů
Seznam příloh - CD: o o o o o o
bakalářská práce ve formátu pdf, zadání práce ve formátu pdf, zdrojový kód (respektive program) FDSearch, zdrojový kód aplikace About Net, nepodepsaný instalační soubor aplikace About Net, podepsaný instalační soubor aplikace About Net.
52