Toto zadání je podepsané d¥kanem a vedoucím katedry,
•
musíte si ho vyzvednout na studiijním odd¥lení Katedry po£íta£· na Karlov¥ nám¥stí,
•
v jedné odevzdané práci bude originál tohoto zadání (originál z·stává po obhajob¥ na kated°e),
•
ve druhé bude na stejném míst¥ neov¥°ená kopie tohoto dokumentu (tato se vám vrátí po obhajob¥).
i
ii
eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Mobilní aplikace pro ovládání úst°edny
Tomá² orejs
Vedoucí práce:
Ing. Pavel Strnad
Studijní program: Elektrotechnika a informatika, dobíhající, Bakalá°ský
Obor: Výpo£etní technika
24. kv¥tna 2012
iv
v
Pod¥kování Rád bych pod¥koval v²em, jenº mi pomohli p°i tvorb¥ této práce. P°edev²ím vedoucímu Ing. Pavlu Strnadovi za cenné rady a Bc. Martinu Sethovi za pomoc, kdykoliv to bylo pot°eba. Dále nesmím zapomenout pod¥kovat rodin¥ a v²em svým blízkým za jejich podporu.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
Abstract This work sumarizes options and features of the phone call in Android operating system. Features of the phone call can be extended by ability to use a gsm exchange. This work discusses advantages and disadvantages of this solution. Second half of this work covers desing, implementation and testing the gsm exchange application.
Abstrakt Tato práce shrnuje moºnosti a funkce spojené s telefonním hovorem na opera£ním systému Android. Moºnosti telefonu jsou dále roz²í°ené voláním p°es telefonní úst°ednu a práce se zabývá výhodami a nevýhodami tohoto °e²ení. Navrºení, realizaci a testování aplikace pro telefonní úst°ednu pak popisuje druhá £ást práce.
Úvod Pro v¥t²inu lidí je dnes samoz°ejmostí pouºívání mobilních telefon·. Ze zavazadlových prostor automobil· se telefon dostal do kapsy kaºdého z nás. Krom¥ volání, byl postupným vývojem obohacen o spoustu dal²ích funkcí. Práv¥ díky rozvoji funkcí se v poslední dob¥ stalo z mobilního telefonu n¥co víc neº jen p°ístroj pro telefonování a pro mnoho lidí uº tato, moºná zastaralá funkce, není primárním ú£elem pro jeho po°ízení. Velkými událostmi pro mobilní telefon pak bylo jeho p°ipojení k internetu a první opera£ní systémy, které pozd¥ji umoºnily ve°ejnosti programování vlastních aplikací. My jsme se tak od jednoduchého telefonního hovoru dostali k antivirovým aplikacím, jenº b¥ºí na za°ízení s více jádry a výpo£etním výkonem srovnatelným s b¥ºným stolním po£íta£em p°ed deseti lety. Tato bakalá°ská práce se ale vrací k základní funkci mobilního telefonu, £ímº je telefonní
1
hovor. Z ²irokého výb¥ru dostupných opera£ních systém· byl vybrán Android , na kterém vám bude ukázáno, jaké má dnes uºivatel moºnosti práce s telefonním hovorem. Tyto moºnosti jsou následn¥ porovnány s °e²ením p°i volání pomocí telefonní úst°edny. V dal²í £ásti práce se seznámíte s aplikací, která byla navrºena pro telefonování a ovládání úst°edny pomocí telefonu s opera£ním systémem Android.
1
Mobilní platforma, více v kapitole 3.2.1
1
2
KAPITOLA 1.
ÚVOD
Kapitola 2
Popis problému, specikace cíle 2.1 Popis °e²eného problému P°íchod moderních opera£ních systém· a hlavn¥ moºnosti pro programování vlastních aplikací do mobilních telefon· zap°í£inilo velké mnoºství omezení pro práci s telefonním hovorem. Klasické funkce jako nap°íklad blokování nebo nahrávání telefonního hovoru jiº nejsou samoz°ejmostí základní výbavy mobilního telefonu a v n¥kterých p°ípadech o n¥ systém jiº ani nejde obohatit. Existuje ale spousta uºivatel·, kte°í n¥které z t¥chto funkcí pot°ebují. Jim se nabízí vyuºít omezené moºnosti n¥které z dostupných aplikací nebo pouºít pro tyto poºadavky telefonní úst°ednu, p°es kterou budou vykonávat své telefonní hovory.
2.2 Specikace cíle Cílem této práce je shrnout moºnosti práce s telefonním hovorem na platform¥ Android jak pro uºivatele, tak pro programátory. Dále pak srovnat výhody a nevýhody pro °e²ení s pouºitím telefonní úst°edny. Hlavním cílem je návrh, realizace a otestování aplikace pro ovládání telefonní úst°edny, která umoº¬uje volání p°es úst°ednu a nastavení jednotlivých parametr· úst°edny. Velký d·raz by m¥l být kladen na snadnou roz²i°itelnost aplikace bez nutnosti její aktualizace.
2.3 Struktura práce Práce je rozd¥lena na dv¥ £ásti. V té první se zabývá problematikou týkající se práce s telefonními hovory na platform¥ Android, jako je nap°íklad nahrávání hovor·. Jsou popsány defaultní moºnosti systému a jejich nalezené moºnosti roz²í°ení pomocí aplikací. Dále je zahrnuta problematika jejich implementace a vlastní poznatky s prací okolo programování aplikací tykajících se telefonního hovoru na Androidu. Moºnosti samotného telefonu jsou následn¥ porovnány s roz²í°ením pomocí telefonování p°es vlastní telefonní úst°ednu.
3
4
KAPITOLA 2.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
Druhá £ást práce se pak v¥nuje návrhu a realizaci samotné aplikace pro ovládání b¥ºné telefonní úst°edny. Je popsáno navrºení a realizace aplikace. Nakonec je aplikace otestována a v²echny poznatky jsou shrnuty v záv¥ru práce.
Kapitola 3
Vymezení základních pojm· a zkratek V této kapitole je up°esn¥no n¥kolik základních pojm· a zkratek, které jsou pouºity v celé práci.
3.1 Technologie a zkratky týkající se telefonních hovor· 3.1.1 Telefonní hovor Tato práce se v¥nuje mobilním telefon·m, proto pokud není uvedeno jinak, se pod tímto pojmem rozumí telefonní spojení pomocí standardu GSM.
3.1.2 Telefonní úst°edna Tímto pojmem není v práci ozna£ena ºádná konkrétní telefonní úst°edna. Je jím my²lena telefonní úst°edna podporující GSM volání a základní funkce úst°edny, které jsou shrnuty v sekci 4.2.1.
3.1.3 DTMF Dual-tone Multi Frequency je tón, který je sloºen ze dvou sinusových signál· o p°esn¥ dané frekvenci. Hodnoty jednotlivých frekvencí jsou voleny tak, aby nebylo p°íli² sou£ástkov¥ náro£né vytvo°it frekven£ní ltry a zárove¬, aby bez problém· pro²ly telekomunika£ními telefonními cestami. Standard DTMF p°enosu je 50ms trvání tónu ku 50ms "ticha". DTMF je základní kámen °ízení hlasových komunikací. Sou£asná telefonie pomocí DTMF vytá£í, nastavuje úst°edny atd. DTMF umí generovat tém¥° kaºdý mobilní telefon po navázání spojení. DTMF bylo hned od po£átku vymy²leno tak, aby bylo moºno pouºít i zvukový p°enos a kódy bylo moºno zachytit jakýmkoliv mikrofonem.[3]
3.1.4 Moºnosti telefonních hovor· Moºností práce s telefonním hovorem je velmi mnoho. Vybrány byly proto ty, u kterých by z názvu nemuselo být jasné jejich pouºití.
5
6
KAPITOLA 3.
VYMEZENÍ ZÁKLADNÍCH POJM A ZKRATEK
3.1.4.1 Parkování hovor· Znamená p°idrºení probíhajícího hovoru po stisknutí tla£ítka na telefonu nebo vyto£ením kódu, který se ode²le pomocí DTMF na úst°ednu. Hovor ve stavu zaparkován je stále aktivní, ale "zaparkovaný"ú£astník hovoru nevysílá ºádná data a druhá strana pomocí telefonu £i úst°edny vysílá defaultní tón nebo melodii pro zaparkovaný hovor. Zaparkovaný hovor je pak znovu vyzvednut tím samým ú£astníkem, který hovor zaparkoval v p°ípad¥ parkování na telefonu. V p°ípad¥ uºití úst°edny m·ºe zaparkovaný hovor p°evzít i jiný ú£astník.
3.1.4.2 Druhý hovor Jedná se v¥t²inou o situaci, kdyº p°i navázaném spojení vyto£í jednoho z ú£astník· dal²í £íslo. Ú£astník má pak p°i aktivovaném druhém hovoru moºnost nový hovor spravovat.
3.2 Technologie a zkratky týkající se programovací £ásti 3.2.1 Android Android je mobilní opera£ní systém zaloºený na modikované verzi Linuxu. Spole£nost Android Inc. vznikla v roce 2003 a nejv¥t²ím zlomem byl rok 2005, kdy byla odkoupena spole£ností Google Inc. Pokud není ur£eno jinak, je v této práci psáno o poslední verzi Android 4.0.4 Ice Cream Sandwich, pro kterou je také vyvinuta popisovaná aplikace.[4]
3.2.2 Java Objektov¥ orientovaný jazyk, který je velice oblíbený pro svou bezpe£nost a platformovou nezávislost. Jazyk Java se pouºívá pro vývoj aplikací na platform¥ Android.
3.2.3 JSON JavaScript Object Notation je odleh£ený formát pro vým¥nu dat. Je jednodu²e £itelný i zapisovatelný £lov¥kem a snadno analyzovatelný i generovatelný strojov¥. Je zaloºen na podmnoºin¥ Programovacího jazyka JavaScript. JSON je textový, na jazyce zcela nezávislý formát, vyuºívající v²ak konvence dob°e známé programátor·m jazyk· rodiny C (C, C++, C#, Java, JavaScript, Perl, Python a dal²ích). Díky tomu je JSON pro vým¥nu dat opravdu ideálním jazykem.[1]
3.2.4 SQL Structured Query Language je dotazovací jazyk navrºený pro práci s daty v rela£ních databázových systémech. P·vodn¥ byl zaloºený na rela£ní algeb°e. Jeho rozsah zahrnuje vkládání dat, dotazování, update a mazání, vytvá°ení a úpravy schématu a kontrolu p°ístupu k dat·m.[7]
3.2.
TECHNOLOGIE A ZKRATKY TÝKAJÍCÍ SE PROGRAMOVACÍ ÁSTI
7
3.2.5 MySQL MySQL je multiplatformní rela£ní databáze navrºená pro komunikaci pomocí jazyka SQL.
3.2.6 PHP Je skriptovací programovací jazyk. Je ur£ený p°edev²ím pro programování dynamických internetových stránek a webových aplikací nap°íklad ve formátu HTML, XHTML £i WML. PHP je nejroz²í°en¥j²ím skriptovacím jazykem pro web. Oblíbeným se stal p°edev²ím díky jednoduchosti pouºití a bohaté zásob¥ funkcí.[5]
3.2.7 HTTP Hypertext Transfer Protocol je protokol aplika£ní vrstvy pro p°enos hypertextových informací, který je pouºíván od roku 1990 dodnes.
3.2.8 REST Representational State Transfer je architektura rozhraní, navrºená pro distribuované prost°edí, kterou navrhnul a popsal v roce 2000 Roy Fielding(jeden z autor· HTTP specikace). Pouºívá se pro jednotný a snadný p°ístup ke zdroj·m. Zdrojem jsou my²lena data i stavy aplikace, pokud jdou datov¥ popsat.[6]
3.2.9 API Application Programming Interface ozna£uje rozhraní pro programování aplikací. Jedná se o knihovnu procedur, funkcí a t°íd. V souvislosti s API je v práci nejvíce zmi¬ována Android API, konkrétn¥ jeho sou£asná verze 15 s kódovým ozna£ením ICE_CREAM_SANDWICH_MR1.
3.2.10 SDK Software development kit je soubor nástroj· pro vývoj aplikací. V této práci bude nejvíce zmi¬ován Android SDK pomocí jehoº verze 15 byla popisovaná aplikace realizována a testována.
8
KAPITOLA 3.
VYMEZENÍ ZÁKLADNÍCH POJM A ZKRATEK
Kapitola 4
Zpracování existujících °e²ení V této kapitole se seznámíte se základními moºnostmi práce s hovorem v Androidu, s jejich moºným roz²í°ením pomocí aplikací a moºnostmi, které pro telefonní hovor poskytuje API. Dále se podíváme na moºnosti s pouºitím telefonní úst°edny a nakonec shrneme výhody a nevýhody tohoto °e²ení.
4.1 Moºnosti práce s hovorem v Androidu 4.1.1 Základní funkce opera£ního systému: •
vyto£ení £ísla manuáln¥ nebo z adresá°e
•
manuální odmítnutí hovoru
•
odmítnutí s sms
•
parkování hovoru
•
druhý hovor
•
konferen£ní hovor
1
Ovládání základních funkcí b¥hem hovoru ukazuje obrázek 4.1
4.1.2 e²ení dal²ích funkcí pomocí nalezených aplikací 4.1.2.1 Nahrávání hovoru Nahrávání hovor· jiº zdaleka není takovou samoz°ejmostí, jako tomu bylo u mobilních telefon· d°íve. Android tuto moºnost v základním prost°edí neobsahuje, a dokonce jádro systému
Dá se spustit pouze v situaci, kdy uºivatel zahajující konferenci zaparkuje probíhající hovor nebo konferenci, vytvo°í druhý hovor s novým ú£astníkem a p°idá hovor k zaparkovanému hovoru £i konferenci. 1
9
10
KAPITOLA 4.
ZPRACOVÁNÍ EXISTUJÍCÍCH EENÍ
Obrázek 4.1: Ovládání základních funkcí b¥hem hovoru v systému Android
brání vytvo°ení podobné aplikaci, coº je vysv¥tleno v dal²í kapitole o problematice naprogramování aplikace pro práci s telefonním hovorem 4.1.3.3.
Zákon Android Inc., respektive Google Inc., sídlí ve stát¥ Kalifornia, proto by se aplikace, které
2
m·ºeme naleznout na Google Play , m¥ly °ídit zákony státu Kalornie. Stát Kalifornie poºaduje potvrzení obou stran s nahráváním hovoru[8], coº je t¥ºké u aplikace zaru£it.
e²ení Aplikace, které cht¥ly být legální, proto implementovaly do hovoru p°i nahrávání pípání, jenº m¥lo nahrávané ú£astníky upozornit na skute£nost nahrávání hovoru. Pravidlo v²ak nebylo vzhledem k po£tu aplikací udrºitelné, proto byla i tato moºnost zakázána. Dnes m·ºeme pro Andriod sehnat aplikaci, která funguje tak, ºe uºivatel p°i nahrávání hovoru zvolí hlasitý odposlech a oba ú£astníci jsou pak nahráváni p°es mikrofon telefonu. Toto °e²ení v²ak nejde dost dob°e pouºít pro uºití ve rm¥ £i získání kvalitní nahrávky. Aplikacemi pro nahrávání telefonních hovor· nap°íc opera£ními systémy se nejvíce zabývá spole£nost Killer Mobile, která se svoji aplikaci Total Recall snaºí p°izp·sobit pro v²echny nejnov¥j²í telefony a opera£ní systémy. Jelikoº nahrávání blokuje jádro systému, tak poskytuje v rámci stejné verze Androidu 3.2 více °e²ení práv¥ pro jednotlivé tipy mobilních telefon·. Na Android 4.0.4. v²ak v tuto dobu je²t¥ neposkytuje ºádné °e²ení.
2
Obchod pro stahování aplikací pro Android
4.1.
MONOSTI PRÁCE S HOVOREM V ANDROIDU
11
4.1.3 Problematika naprogramování aplikace pro práci s telefonním hovorem Pro práci s telefonním hovorem v Androidu slouºí hlavn¥ t°ídy balí£ku android.telephony PhoneStateListener a TelephonyManager.
4.1.3.1 Odchytávání p°íchozího a odchozího hovoru K odchytávání informací o hovorech se pouºívá metoda
onCallStateChanged (int state, String incomingNumber) t°ídy PhoneStateListener, která je zavolána v p°ípad¥ zm¥ny hodnoty state, jenº v sob¥ nese informaci o stavu telefonu. P°etíºením této metody dostaneme aktuální kód stavu telefonu s konstantami:
•
CALL_STATE_IDLE - výchozí hodnota do které se telefon vrací po £innosti, ºádná aktivita
•
CALL_STATE_OFFHOOK - existuje alespo¬ jeden hovor, který je vytá£ený, aktivní nebo zaparkovaný a ºádné £ekající
•
3 nebo vyzván¥jící hovory
CALL_STATE_RINGING - vyzvání nebo £eká nový hovor a ºádný dal²í hovor není aktivní
Pomocí porovnání aktuálního a p°edchozího stavu proto m·ºeme odchytit stavy volání, coº nazna£uje kus kódu, pro vypisování informací o hovoru:
PhoneState Listener listener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { String stateString = "N/A"; switch (state) { case TelephonyManager.CALL_STATE_OFFHOOK : { if (lastState == TelephonyManager.CALL_STATE_IDLE) { stateString = "zahájeno volani"; } else if (lastState == TelephonyManager.CALL_STATE_RINGING) { stateString = "p°ijat hovor od volajiciho"; } else { stateString = "hook to hook"; //nem¥l by nastat } lastState = TelephonyManager.CALL_STATE_OFFHOOK; } break; . . 3
4.1.3.2 Vytvo°ení hovoru Vytvo°ení hovoru zaji²´uje událost s parametrem ACTION_CALL, kterou vytvo°íme jednoduchým zp·sobem:
public void makeCall(String number) { Intent callInt = new Intent(Intent.ACTION_CALL); callInt.setData(Uri.parse("tel:" + phonenumber)); startActivity(callInt); }
4.1.3.3 Nahrávání hovoru Pro nahrávání hovoru by se m¥la pouºít t°ída MediaRecorder z balí£ku android.media, které bychom nastavili nahrávání na vstup VOICE_CALL, jenº nahrává sou£asn¥ mikrofon a vstup sluchátka telefonu. Bohuºel systém z°ejm¥ od verze Android 2.1 Eclair
4 vynutí restart
aplikace, pokud spustíme nahrávání s tímto parametrem. O dal²ím °e²ení je jiº psáno vý²e - 4.1.2.1, p°epnutím nahrávání vstupu na hodnotu MIC, m·ºeme nahrávat zvuk z mikrofonu. Hovor bychom museli na telefonu ru£n¥ p°epnout na hlasitý odposlech.
4.1.3.4 Odmítnutí hovoru a p°esm¥rování hovoru Základní API nepodporuje tyto funkce s hovorem. Android má ale dv¥ dal²í API, které nejsou dostupné p°es defaultní Android SDK. Jedná se o internal a hidden API. P°i p°idání internal API, máme k dispozici metody, s jejichº pomocí bychom mohli implementovat funkce jako blokování hovoru nebo p°esm¥rování. Pouºívání skrytých API ale není doporu£eno a nezaru£uje se, ºe by aplikace byly funk£ní i po aktualizaci systému a ºe systém p°i jejich pouºití bude fungovat správn¥. Proto se jejich pouºití pro jiné neº testovací ú£ely nedoporu°uje. 4
Záleºí spí²e na verzi jádra, ale ociáln¥ nebyla tato informace vydána.
4.2.
MONOSTI PRÁCE S HOVOREM S POUITÍM TELEFONNÍ ÚSTEDNY
13
4.2 Moºnosti práce s hovorem s pouºitím telefonní úst°edny 4.2.1 Sluºby Telefonní úst°edny poskytují celou ²kálu r·zných sluºeb. B¥ºné úst°edny disponují 12 - 128 GSM kanály. Standartními sluºbami jsou:
5
•
auto clip routing
•
callback
•
fax
•
hlasová schránka
•
IVR
•
konferen£ní hovor
•
LCR
•
mobility extension
•
nahrávání hovoru
•
parkování hovoru
•
propojení se standartními emailovými a groupwarovými klienty nap°. MS Outlook
•
SMS
•
webové rozhraní úst°edny
6
7
8 9
10
4.2.2 Ovládání úst°edny mobilním telefonem V¥t²ina telefonních úst°eden ukládá nastavení a data svých sluºeb do rela£ní databáze. Moºnosti komunikace s úst°ednou proto máme p°i pouºití telefonu s Androidem dv¥. Jednak m·ºeme data odesílat pomocí datového p°enosu nap°íklad p°es http protokol serveru, který nastaví p°íslu²né tabulky v rela£ní databázi. Druhou moºností je posílat data pomocí DTMF. V praxi se v¥t²inou pouºívá datový p°enos pro v¥t²í objem dat nap°íklad nastavení vlastností úst°edny. DTMF tónem potom nastavujeme d·leºité hodnoty p°i zahájení volání. Levn¥j²í variantou pro p°enos dat je ur£it¥ datový p°enos, DTMF ale zaru£uje p°enos i tam, kde není pokrytí datových sítí
11 a pro malý objem dat je p°i navázaném hovoru rychlej²í.
GSM brána ukládá informace o odchozích hovorech a p°i volání zp¥t je volající p°epojen na linku, ze které byl volán. 6 Po vyto£ení £ísla úst°edny úst°edna odmítne hovor a zavolá zp¥t, volající pak zadá £íslo volaného p°es DTMF. Toto °e²ení zna£n¥ sniºuje náklady na volání hlavn¥ p°i volání ze zahrani£í. 7 Interactive Voice Response - úst°edna pomocí DTMF rozpozná zadaný kód a na jeho základ¥ dále pracuje s hovorem 8 Least Cost Routing - volba nejlevn¥j²í cesty odchozího hovoru. 9 Hovor m·ºe sou£asn¥ vyzván¥t na mobilní i pevné lince 10 Odesílání a p°íjem sms, odesílání sms p°es p°es email. 11 GPRS, EDGE, 3G, UMTS, HSDPA, HSUPA, HSPA+, LTE 5
14
KAPITOLA 4.
ZPRACOVÁNÍ EXISTUJÍCÍCH EENÍ
4.2.3 Volání p°es telefonní úst°ednu Volání p°es telefonní úst°ednu je realizováno tak, ºe volající vyto£í £íslo úst°edny a p°edá jí parametry hovoru (£íslo, povolení nahrávání, nastavení dal²ích sluºeb atd.). Úst°edna pak sama nastaví pot°ebné parametry a naváºe hovor. Úst°edna m·ºe disponovat více telefonními £ísly, proto m·ºe být zp¥tný hovor realizován naprosto stejn¥ jako p°i pouºití samotného mobilního telefonu. Dále m·ºe úst°edna na základ¥ uloºených dat a nastavení p°epojit hovor kamkoliv v rámci úst°edny. Hodn¥ je pouºíván model, kdy je uloºeno, kam které £íslo volalo a pokud volá volané £íslo zp¥t, je hovor p°epojen na linku s kterou byl uskute£n¥n p°echozí hovor.
4.3 Shrnutí obou °e²ení Android, potaºmo v²echny ostatní moderní opera£ní systémy, jiº nemají tak rozsáhlé moºnosti práce s telefonním hovorem jako tomu bylo d°íve u mobilních telefon· a prvních opera£ních systém·. A´ uº v základní výbav¥ nebo v moºnostech, které nám poskytuje API
12 .
Srovnávat výhody a nevýhody °e²ení je velice obtíºné, protoºe telefonní úst°edna disponuje mnoha funkcemi, které Android nemá a ani nejdou implementovat. N¥které vlastnosti, které by se nám mohly zdát jako výhoda, nap°. ºe p°i °e²ení s Androidem máme v²echna data a nastavení uloºená p°ímo v telefonu a p°i pouºití úst°edny k nim musíme p°istupovat p°es internet, by se p°i jiných poºadavcích na systém mohly jevit nevýhodou a naopak. Proto záleºí hlavn¥ na tom, jaké má uºivatel poºadavky. Výhody pouºití telefonní úst°edny:
•
mnoho sluºeb a funkcí pro práci s telefonním hovorem
•
dopl¬ující sluºby, jako nap°íklad ovládání zámku dve°í a podobn¥
•
moºnost levn¥j²ího volání p°edev²ím pro mezistátní hovory nebo z GSM na pevnou linku
•
detailn¥j²í p°ehled o volání
•
data p°ístupná online
•
°e²ení pro více telefon· najednou
Nevýhody a obtíºe pouºití telefonní úst°edny:
•
po°izovací a provozní cena
•
nutnost volání p°es úst°ednu
•
správa úst°edny
•
systém pro práci s daty a ovládání úst°edny
v porovnání nap°íklad s Symbian S60 3rd Edition C++ API z roku 2009 nebo Windows Mobile API z roku 2008 12
Kapitola 5
Analýza a návrh °e²ení mobilní aplikace pro ovládání úst°edny Tato kapitola popisuje analýzu problému s návrhem °e²ení mobilní aplikace CallMaker pro opera£ní systém Android, která zaji²´uje volání pomocí telefonní úst°edny a její ovládání mobilním telefonem.
5.1 Analýza a návrh °e²ení na stran¥ klienta Aplikace je koncipována jako klient-server. Klientem se zde rozumí za°ízení s opera£ním systémem Android, které vysílá dotazy na server a dostává od serveru data nebo informace o výsledku dotazu. Systém by m¥l uvaºovat pouºití více za°ízení pro jednoho uºivatele, tudíº je velký d·raz kladen na ukládání v²ech dat na server.
5.1.1 Funk£ní poºadavky •
automaticky p°idat do databáze nového uºivatele
•
zadat vytá£ené £íslo pomocí klávesnice nebo vyhledat £íslo v seznamu kontakt·
•
zaloºit nový hovor na úst°ednu a pomocí DTMF vloºit £íslo volaného
•
nastavení sm¥rování hovor·, hlavn¥ pak jednoduché sm¥rování na mobilní telefon a telefon v kancelá°i
•
implementace jednoduchého nastavení, které se bude automaticky generovat pro dal²í moºné vlastnosti telefonní úst°edny
5.1.2 Nefunk£ní poºadavky •
v²echna data uchovávat na stran¥ serveru
•
aplikace musí být implementovaná pro Android 4.0.4 s verzí SDK 15
15
16KAPITOLA 5. ANALÝZA A NÁVRH EENÍ MOBILNÍ APLIKACE PRO OVLÁDÁNÍ ÚSTEDNY
•
rozli²ování android za°ízení dle unikátních £ísel
•
RESTový p°enos dat
5.1.3 Defaultní a dodate£né vlastnosti úst°edny Kaºdá úst°edna, kterou bude aplikace podporovat, bude mít defaultn¥ moºnost nastavení p°esm¥rování (povolení a nastavení £ísla) a volbu pro výb¥r mezi p°esm¥rováním na mobilní telefon a telefon v kancelá°i. Dal²í parametry úst°edny mohou být libovoln¥ denovány.
5.1.4 Volba pouºitých technologií 5.1.4.1 Vývojové prost°edí a za°ízení Jako vývojové prost°edí bylo vybráno Eclipse Java EE IDE v poslední verzi Indigo s pluginem ADT Plugin for Eclipse. Eclipse jsem volil práv¥ proto, ºe má velice dobrý plugin pro práci s Androidem, který spole£nost Android p°ímo spravuje a doporu£uje na svých referen£ních stránkách. Jako dal²í prost°edí se naskýtalo Netbeans IDE. Pro spou²t¥ní a testování aplikace bylo pouºito Android Virtual Device, které je sou£ástí SDK. V hlavní °ad¥ byl ale pouºit Nexus S s verzí Androidu 4.0.4 a jádra 3.0.8-g6656123. Telefon nemá odblokované ºádné dodate£né funkce systému, proto je zaru£ena funk£nost aplikace na v²ech za°ízeních s verzí Androidu 4 a vý². Na star²ích verzích Androidu aplikace nebyla testována, proto její funk£nost není zaru£ena, ale po úprav¥ manifestu a zkompilování pro niº²í verzi by m¥la být v po°ádku.
5.1.4.2 Formát pro p°enos dat Základní poºadavek pro p°enos dat byla RESTová architektura formátu p°ená²ených dat. I kdyby nebyl vznesen tento poºadavek, z°ejm¥ by stejn¥ bylo implementováno toto °e²ení. Android API poskytuje funkce pro XML a JSON. Nakonec byl vybrán JSON, protoºe se jeho pouºití zdálo jednodu²²í. Jeho p°edností je nezávislost na datovém typu p°ená²ených dat a nespornou výhodou jsou i PHP funkce pro práci s JSON objekty, které jsou zmín¥ny pozd¥ji.
5.1.5 Pr·chod aplikací Pr·chod a b¥h aplikace modeluje diagram aktivit na obrázku 5.1. Zelen¥ jsou ozna£eny aktivity p°istupující do databáze. Po spu²t¥ní aplikace se aktualizují automaticky generovaná nastavení a poté se zkontroluje, zda je za°ízení vedeno v databázi. Pokud se jedná o první spu²t¥ní aplikace a za°ízení v databázi tak není, vytvo°í se nová poloºka v databázi. Dále se aktualizují hodnoty v²ech nastavení a uºivateli se vykreslí hlavní pohled.
5.1.6 Vzhled aplikace Aplikace striktn¥ dodrºuje zásady Android Design[2]. V²echny barvy jsou pouºité z doporu£ené palety barev a ovládací prvky jsou rozmíst¥né dle tohoto standardu.
5.1.
ANALÝZA A NÁVRH EENÍ NA STRAN KLIENTA
17
Obrázek 5.1: Diagram aktivit
5.1.7 Navigace v aplikaci a seznam pohled· Aplikace je rozd¥lena do t°í pohled·.
5.1.7.1 Hlavní pohled V hlavním pohledu má uºivatel moºnost pomocí tla£ítek vyvolat události pro vyto£ení £ísla z adresá°e nebo pro zadání £ísla pomocí klávesnice. Pokud není aktivní jiné p°esm¥rování má moºnost povolit sm¥rování na telefon v kancelá°i.
5.1.7.2 Nastavení p°esm¥rování Po vyvolání pohledu pro nastavení p°esm¥rování z defaultního menu pro nastavení má uºivatel moºnost povolit nebo zakázat p°esm¥rování a nastavit £íslo pro p°esm¥rování. Nastavené
18KAPITOLA 5. ANALÝZA A NÁVRH EENÍ MOBILNÍ APLIKACE PRO OVLÁDÁNÍ ÚSTEDNY
hodnoty poté m·ºe uloºit nebo vrátit zp¥t bez uloºení pomocí tla£ítek. Ob¥ akce ho vrátí do hlavního pohledu.
5.1.7.3 Automaticky generovaná nastavení Po vyvolání pohledu pro ostatní nastavení se zobrazí seznam automaticky generovaných nastavení. Ty slouºí pro nastavení dal²ích libovoln¥ denovaných vlastní úst°edny. Pro hodnoty s typem bool se zobrazí Switch s p°íslu²ným názvem. Pro hodnoty s typem string se nastaví TextView s p°íslu²ným názvem a EditText. Uloºení hodnot se provede tla£ítkem.
5.1.8 Identikace za°ízení Pro identikaci za°ízení je zvoleno výrobní £íslo telefonu IMEI (pro ESN a CDMA telefony se vloºí MEID). Sice jde hodnota IMEI zm¥nit, ale p°edpokládá se, ºe tuto aplikaci budou pouºívat uºivatelé, kte°í se nebudou o takové v¥ci pokou²et. Pokud by byl vyºadován n¥jaký v¥t²í stupe¬ ochrany, byl by pouºit náhodn¥ generovaný kód, který by byl telefonu p°i prvním spu²t¥ní aplikace p°id¥len a porovnával by se spole£n¥ s hodnotou IMEI.
5.2 Analýza a návrh °e²ení na stran¥ serveru Server vyhodnocuje dotazy od klienta a na jejich základ¥ vykonává dotazy nad MySQL databází.
5.2.1 Funk£ní poºadavky •
zpracovat dotaz od klienta
•
vykonat p°íslu²nou operaci nad databází
•
odeslat zp¥t poºadovaná data nebo informovat klienta o výsledku operace
5.2.2 Nefunk£ní poºadavky •
databáze MySQL
•
RESTový p°enos dat
5.2.3 Volba pouºitých technologií 5.2.3.1 Databáze Technologie databáze byla zadána MySQL, protoºe se tento typ rela£ní databáze pouºívá v souvislosti s telefonními úst°ednami. Pro testování byla pouºita MySQL databáze ve verzi 5.1.46 na vlastním serverovém po£íta£i s webovým serverem Apache/2.2.15.
5.2.
ANALÝZA A NÁVRH EENÍ NA STRAN SERVERU
19
5.2.3.2 Technologie serveru Protokolem pro p°ená²ení dat byl zvolen HTTP. Tvorbu a p°íjem dat v tomto formátu podporuje server i klient. Jako programovací jazyk pro p°íjem poºadavk· bylo vybráno PHP, jeho pouºití zde bylo nejjednodu²²í a hlavn¥ podporuje funkce pro kódování a dekódování objekt· JSON. Jako jazyk pro dotazování do databáze se pouºívá SQL.
5.2.4 Databázový model Databázový model ilustruje obrázek 5.2. Tabulka callmaker uchovává hodnoty jednotlivých poloºek nastavení. V tabulce ustrednainfo jsou pak informace o dodate£ných poloºkách automaticky generovaného nastavení. Pro automaticky generovanou poloºku nastavení databáze uchovává její název v databázi callmaker, popis poloºky pro aplikaci v telefonu a typ uchovávaných dat.
Obrázek 5.2: Databázový model
Tento model uchovává pouze data pro nastavení vlastností spojených s aplikací. Bohuºel nebyla testována na reálné úst°edn¥, jinak by z°ejm¥ model obsahoval více poloºek.
20KAPITOLA 5. ANALÝZA A NÁVRH EENÍ MOBILNÍ APLIKACE PRO OVLÁDÁNÍ ÚSTEDNY
Kapitola 6
Realizace Tato kapitola ukazuje realizaci nejd°íve na modelu architektury aplikace a dále stru£n¥ji realizaci popisuje pomocí diagramu aktiv. Nakonec jsou blíºe popsány ukázky hlavních bod· realizace.
6.1 Realizace na stran¥ klienta 6.1.1 Popis ovládacích komponent Kde to bylo moºné je popis ovládacích komponent realizován pomocí na£tení hodnot ze souboru strings.xml, coº slouºí pro jednoduché roz²í°ení logalizace do jiných jazyk·.
6.1.2 Architektura aplikace Architektura aplikace je znázorn¥na na obrázku 6.1. Ve vrstv¥ View se nachází v²echny gracké pohledy aplikace. Základní pohled CallMakerActivity pak realizuje i volání, které uºivatel zahájí výb¥rem z kontakt· nebo zadáním £ísla ru£n¥. Pohled pro nastavení £ísla p°esm¥rování má zp¥tnou vazbu na základní pohled z d·vodu posílání poºadavku na jeho nové p°ekreslení p°i zm¥n¥ povolení p°em¥rování
1
Business vrstva nastavuje výchozí hodnoty prvk·m ve vrstv¥ View a p°ijímá jejich uºivatelem zm¥n¥né hodnoty. Ty pak porovnává a v p°íslu²ném formátu odesílá poºadavky vrstv¥ Service. Service p°ijímá poºadavky od vrstvy Business a zaji²´uje komunikaci se serverem, výsledky poºadavk· pak odesílá zp¥t Business vrstv¥.
6.1.3 Class diagram Realizaci t°íd ukazuje class diagram na obrázku 6.2. T°ídy CallMakerActivity, Setforwardactivity a Settingsactivity slouºí pro nastavení hodnot, které se ukládají do instance t°ídy Update(tu popí²u podrobn¥ pozd¥ji v sekci 6.1.5). T°ída PutNumberActivity slouºí pro ru£ní zadání telefonního £ísla. Ostatním t°ídám se podrobn¥ v¥nuji v dal²ím textu.
Pokud je p°esm¥rování povoleno, vykresluje se, kam je p°esm¥rování nastaveno. P°i jeho zakázání se vykresluje Switch pro nastavení p°esm¥rování do kancelá°e. 1
21
22
KAPITOLA 6.
REALIZACE
Obrázek 6.1: Architektura aplikace
6.1.4 Odesílání a p°ijímání poºadavk· na server Vytvá°ení, odesílání a p°ijímání HTTP poºadavk· má v Androidu povolena pouze t°ída AsyncTask a její potomci. Ve t°íd¥