You are on page 1of 65

TRNG I HC BCH KHOA H NI

VIN CNG NGH THNG TIN V TRUYN THNG


*

TT NGHIP I HC
NGNH CNG NGH THNG TIN

Xy dng h thng Voip trn h iu


hnh Android
Sinh vin thc hin: Nguyn Khc Vinh
Lp CNPM-K51

Gio vin hng dn: ThS V c Vng

H NI 5-2011

PHIU GIAO NHIM V N TT NGHIP

1. Thng tin v sinh vin


H v tn sinh vin: Nguyn Khc Vinh
in thoi lin lc 01696890500
Lp: CNPM

Email: nkvinh@gmail.com
H o to: i hc chnh quy

n tt nghip c thc hin ti:

Trung tm phn mm Viettel

Thi gian lm ATN: T ngy 28 /2 /2011 n

28/5 /2011

2. Mc ch ni dung ca ATN
Tm hiu kin trc Voip v h iu hnh cho di ng Android
Xy dng hon thin mt h thng Voip, demo pha client trn my
Android
3. Cc nhim v c th ca ATN

Tm hiu v kin trc ca Voip


Tm hiu v h iu hnh Android
Tm hiu th vin h tr lp trnh Voip Client trn Android
Chn proxy server xy dng h thng
Dng th vin v server chn xy dng mt h thng Voip
Bo mt cho ti khon khi ng k vi server
Tm hiu v la chn giao thc vt NAT

4. Li cam oan ca sinh vin:


Ti Nguyn Khc Vinh - cam kt ATN l cng trnh nghin cu ca bn thn
ti di s hng dn ca thc s V c Vng
Cc kt qu nu trong ATN l trung thc, khng phi l sao chp ton vn ca
bt k cng trnh no khc

H Ni, ngy 25 thng 05 nm 2011


Tc gi ATN

Nguyn Khc Vinh

5. Xc nhn ca gio vin hng dn v mc hon thnh ca ATN v cho


php bo v:

H Ni, ngy

thng

nm

Gio vin hng dn

Thc s V c Vng

MC LC
PHIU GIAO NHIM V N TT NGHIP ......................................................................................................2
MC LC .....................................................................................................................................................................4
KHI NIM V THUT NG ...................................................................................................................................5
DANH MC CC BNG ............................................................................................................................................6
DANH MC CC HNH .............................................................................................................................................7
LI CM N................................................................................................................................................................8
M U .......................................................................................................................................................................8
1.
2.
3.

GII THIU TI .............................................................................................................................................8


MI TRNG THC HIN N TT NGHIP .....................................................................................................9
B CC CA N TT NGHIP ........................................................................................................................9

PHN I: T VN V NH HNG GII PHP ........................................................................................10


TNG QUAN V TI ....................................................................................................................................10
1.1
Cc vn cn gii quyt ......................................................................................................................10
2
GII THIU TM TT V C S L THUYT ......................................................................................................10
2.1
Gii thiu v VOIP ................................................................................................................................10
1

2.1.1
2.1.2

2.2
2.2.1
2.2.2

2.3
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8

Gii thiu v SIP ................................................................................................................................................ 11


Gii thiu v RTP ............................................................................................................................................... 12

ng k, thit lp cuc gi vi SIP proxy server ..................................................................................13


ng k mi: ..................................................................................................................................................... 13
Thit lp cuc gi .............................................................................................................................................. 15

C bn v Android .................................................................................................................................19
Activity: ............................................................................................................................................................. 19
Service: .............................................................................................................................................................. 20
Intent: ................................................................................................................................................................. 20
Broadcast Receiver: ........................................................................................................................................... 21
Notification: ....................................................................................................................................................... 21
SQLLite ............................................................................................................................................................. 21
XML trong Android: .......................................................................................................................................... 21
Android Manifest: .............................................................................................................................................. 21

CC VN T RA........................................................................................................................................21
3.1
Xc thc d liu .....................................................................................................................................22
3.2
NAT v nh hng ca n ti VoIP ......................................................................................................22
4
GII PHP V CNG C C LA CHN GII QUYT CC VN T RA ...............................................22
4.1
Gii php xc thc d liu .....................................................................................................................22
4.2
Gii php cho cc thit b nm trong NAT ............................................................................................22
3

4.2.1
4.2.2

4.3
4.4
4.5

Gii php qua NAT cho cc tn hiu SIP ........................................................................................................... 22


Gii php truyn cc gi tin RTP qua NAT ....................................................................................................... 23

Chn la chun xy dng h thng VoIP ..............................................................................................24


La chn th vin pht trin ng dng SIP trn client ..........................................................................24
La chn SIP proxy ...............................................................................................................................24

PHN II: XY DNG H THNG VOIP ................................................................................................................25


1

KHO ST, PHN TCH YU CU..............................................................................................................................25


1.1
Mc tiu ca h thng ..........................................................................................................................25
1.2
Phn tch yu cu...................................................................................................................................25
1.2.1
1.2.2

1.3

Cc rng buc thit k (Design Constraints)...................................................................................................... 25


Cc yu cu v hiu nng (Performance) .......................................................................................................... 25

Thit k tng quan ................................................................................................................................25

1.3.1

1.4
1.4.1
1.4.2

Thit k kin trc h thng ............................................................................................................................... 25

Thc hin, ci t v th nghim h thng ............................................................................................26


Trin khai pha server: ....................................................................................................................................... 26
Pha Client ......................................................................................................................................................... 30
1.4.2.2.1 Phn tch c th tng chc nng: ....................................................................................................... 31
1.4.2.2.2 Cc lung thng tin trong ng dng Voip Android.............................................................................. 32
1.4.2.2.3 Thit k c s d liu ........................................................................................................................... 33
a.
Bng Account:.......................................................................................................................................... 33
b.
Bng CallLogs .......................................................................................................................................... 34
c.
Bng Messages: ........................................................................................................................................ 35
1.4.2.2.4 Thit k gii thut ................................................................................................................................ 36
1.4.2.2.5 Kin trc ng dng Voip Android ....................................................................................................... 39
1.4.2.2.6 Chi tit ci t ...................................................................................................................................... 40

Voip Android Service: ............................................................................................................................. 40

Voip Android Models: ............................................................................................................................. 47

Voip Android UI ...................................................................................................................................... 51

TI LIU THAM KHO ...........................................................................................................................................62


PH LC ......................................................................................................................................................................62

KHI NIM V THUT NG

Thut ng

nh ngha

Ghi ch

VOIP

Voice over Internet Protocol

Cng ngh cho php truyn thoi


s dng giao thc mng IP

VOIP over 3G

Voice over Internet Protocol Cng ngh cho php truyn thoi
over 3G
s dng giao thc mng IP trn
h tng mng 3G (third-

Thut ng

nh ngha

Ghi ch
generation)

TDM

Time Division Multiplexing

Ghp knh phn chia thi gian:


Thi gian s dng ng truyn
c chia lm nhiu khung. Mi
khung c chia thnh nhiu khe
thi gian(Ts time slot) mi ngi
s dng mt khe thi gian dnh
ring cho mnh phc v cho
vic truyn tin.

IP

Internet Protocol

Giao thc mng c s dng


rng ri ngy nay
Cc thit b u cui: bao gm IP
phone v SIP phone.

End point

SIP

Session Initiation Protocol

Giao thc khi to session

UA/ UAC/ UAS User Agent/ Uer Agent Ni gi v ni p tr cc bn tin


Client/ User Agent Server
SIP, thng thng l cc thit b
SIP phone
G7xx

G711/ G729,

Cc codec dng s ha m thanh

Proxy server

Server trung chuyn cc bn tin


SIP

Redirect server

Server tr li im tip theo m


thit b phi gi bn tin ti.

Registrar server

Server ng k cho cc user


agent.

Thut ng v nh ngha
DANH MC CC BNG

Table 1: Bng Account ........................................................................................................ 34


Table 2: Bng CallLogs ....................................................................................................... 35
Table 3: Bng Messages ...................................................................................................... 36

DANH MC CC HNH
Figure 1: Kin trc ca h thng Voip.............................................................................. 11
Figure 2: ng k vi Sip Server thnh cng.................................................................... 13
Figure 3: Thit lp thnh cng cuc gi ........................................................................... 16
Figure 4: C ch xc thc username v password ............................................................ 22
Figure 5 : Gii php qua NAT cho cc tn hiu SIP ......................................................... 23
Figure 6: Gii php truyn cc gi tin RTP qua NAT ...................................................... 23
Figure 7: M hnh h thng cn xy dng ........................................................................ 26
Figure 8: M hnh Use case ca ng dng Voip Android ................................................ 31
Figure 9: Biu tun t cho chc nng thm v xem cc account................................. 37
Figure 10: Biu tun t cho chc nng xem v xa lch s cuc gi .......................... 37
Figure 11 : Biu tun t cho chc nng xem v xa tin nhn...................................... 37
Figure 12: : Biu tun t cho chc nng gi tin nhn v to cuc gi ........................ 38
Figure 13 : Biu tun t cho chc nng xa v sa ti khon .................................... 39
Figure 14: Kin trc ng dng Voip Android .................................................................. 39
Figure 15 Class UAStateReceiver .................................................................................... 41
Figure 16 SipService ......................................................................................................... 43
Figure 17 SipNotifications ................................................................................................ 45
Figure 18 S lp x l Media ....................................................................................... 47
Figure 19 Class SipMessage ............................................................................................. 48
Figure 20 Class CallInfo ................................................................................................... 49
Figure 21 Class IAccount.................................................................................................. 50
Figure 22 AccountState..................................................................................................... 51
Figure 23 S lp cho giao din thm account.............................................................. 52
Figure 24 S lp ca Voip Android widget ................................................................. 54
Figure 25 S lp ca giao din x l cuc gi trong Voip Android ............................ 55
Figure 26 S lp giao din chnh ca Voip Android ................................................... 56
Figure 27 S lp giao din ci t ca Voip Android ................................................. 57
Figure 28 S lp giao din qun l ti khon ca Voip Android ................................. 58
Figure 29 S lp giao din qun l lch s cuc gi ca Voip Android ...................... 59
Figure 30 S lp chn ti khon gi hoc gi tin ca Voip Android ..................... 60
Figure 31 Qun l ti khon .............................................................................................. 63
Figure 32 Mn hnh ci t v gi tin nhn ...................................................................... 64
Figure 33 Mn hnh qun l cuc gi ................................................................................ 65

LI CM N
Trc tin em xin gi li cm n chn thnh su sc ti cc thy c gio trong
trng i hc Bch Khoa H Ni ni chung v cc thy c gio trong vin Cng
ngh Thng tin, b mn Cng ngh Phn mm ni ring tn tnh ging dy,
truyn t cho em nhng kin thc, kinh nghim qu bu trong sut thi gian qua.
c bit, em xin gi li cm n n thy V c Vng. Thy tn tnh gip
, trc tip ch bo, hng dn em trong sut qu trnh lm n tt nghip.
Trong thi gian lm vic vi thy, em khng ngng tip thu thm nhiu kin thc
b ch m cn hc tp c tinh thn lm vic, thi nghin cu khoa hc
nghim tc, hiu qu, y l nhng iu rt cn thit cho em trong qu trnh hc
tp v cng tc sau ny.
ng thi em xin chn thnh cm n anh Cao Xun Tun, trng phng R&D,
Trung tm phn mm Viettel v anh nh Thng trng ban cng ngh to
mi iu kin v c s vt cht gip em c mt mi trng tt thc hin ti
gip em hon thnh ti ny

H Ni, ngy 25 thng 5 nm 2011


Ngi thc hin
Nguyn Khc Vinh
M U
1. Gii thiu ti
Voice over Internet Protocol (VOIP), cn gi l IP Telephony, ang nhanh chng
tr thnh mt thut ng thng thuc v cng ngh ny ang i su vo cc doanh
nghip, cc t chc .VOIP c thit k thay th mng li v cng ngh TDM
bng mt mng d liu da trn giao thc mng IP .Ting ni c s ha v
truyn i trong cc gi tin IP .Trong cc doanh nghip hin nay nht l cc cng ty
mng Internet v c wifi len li n mi phng ban .Mt khc nhu cu lin lc
ni b trong doanh nghip l rt ln .S l rt tuyt vi nu c mt h thng Voip
ngay trong cng ty ,gip cho vic lin lc tr nn d dng hn m chi ph gn nh
bng khng v tn dng c h tng mng IP c sn .V l do em chn ti

Xy dng h thng Voip trn h iu hnh Android


2. Mi trng thc hin n tt nghip
a im: Trung tm phn mm Viettel, Phng R&D
Thnh vin i thc hin d n:
Qun tr d n: nh Thng
Thnh vin d n: o Hi Hng
Thnh vin d n: Nguyn Khc Vinh
D n: Nghin cu th nghim cng ngh Voip

3. B cc ca n tt nghip
n tt nghip c chia thnh cc phn nh sau:
M U
Gii thiu ti, mi trng thc hin n, tm tt b cc ca n tt
nghip
PHN 1: t vn v nh hng gii php
1. Cc nhim v cn thc hin trong ti
2. C s l thuyt v cng c s dng.
PHN 2: Cc kt qu t c
1. Phn tch yu cu
2. Thit k h thng
3. Ci t
4. nh gi u, nhc im ca h thng
KT LUN
Kt lun chung: t nh gi cng vic lm c v cha lm c, nh
hng pht trin v hon thin h thng trong tng lai.

PHN I: T VN V NH HNG GII PHP


1

Tng quan v ti

1.1 Cc vn cn gii quyt

Tm hiu v kin trc ca Voip


Tm hiu v h iu hnh Android
Tm hiu th vin h tr lp trnh Voip Client trn Android
Chn server xy dng h thng
Dng th vin v server chn xy dng mt h thng Voip c
bn
Bo mt cho ti khon khi ng k vi server
Tm hiu v la chn giao thc vt NAT
2

Gii thiu tm tt v c s l thuyt

2.1 Gii thiu v VOIP

Trong mt mng VOIP, c 2 giao thc c s dng chnh .Giao thc u tin l
Signaling Protocol (giao thc bo hiu): dng trong vic khi to v qun l cc tng
tc gia cc user session bao gm voice, video, instant messaging. Giao thc th hai l
speech transmission protocol: giao thc truyn ting ni. C hai giao thc yu cu tt c
cc thng tin c truyn ti trong cc gi tin IP. Cho ti nay c mt vi chun cho
signaling protocols, gm c H.323, SIP .Cn RTP l chun cho speech transmission
protocol c s dng trong cc mng VOIP .Tn hiu ting ni c s ha, ng gi
trong cc gi tin v c truyn thng qua mng IP .Ta cn rt nhiu cc gi tin mi c
th truyn ti c mt m n do mt ngi pht ra .Tn hiu voice c s ha bng
cc s dng mt trong cc chun G.7xx.

Figure 1: Kin trc ca h thng Voip

Proxy server l mt thit b trung gian nhn SIP request t mt client v sau chuyn
tip request cho ti khi ti c sip client cn ti .Proxy server l thnh phn quan trng
trong h thng VoIP, cho php cc user agent trao i thng tin, ng k ngi dng v
qun l trng thi user agent .Proxy server KHNG thc hin chuyn mch in thoi
(telephone switch) .Khi proxy server thit lp mt cuc gi (peer-to-peer), server s
khng tham gia vo qu trnh truyn ti ting ni .Cc gi tin cha ting ni c truyn
trc tip t mt phone ti mt phone khc
Ngoi ra c n c Registrar server X l cc requests t cc UAC ng k v tr (ip,
port) ca UAC .Registrar server thng c t cng vi proxy server
2.1.1 Gii thiu v SIP
SIP l giao thc tng application trong m hnh OSI n c s dng thit lp, thay
i, v kt thc cc session, SIP l giao thc thun text (clear text) .Thit lp cc tham s
v media c s dng (codec, ip, port) gia cc UA thng qua Session Description
Protocol (SDP) .Giao thc SIP c thit k l mt phn ca mt kin trc a phng
tin bao gm cc giao thc khc nh RTP, SDP .Tuy nhin SIP khng ph thuc vo cc
giao thc khc lm vic .a ch SIP ging nh mt a ch email, v d nh:
johndoe@sipA.com. Cc phng thc c trong SIP gm c:
INVITE = Thit lp phin
ACK = Xc nhn yu cu INVITE
BYE = Kt thc phin
CANCEL = Hy b vic thit lp phin

REGISTER = Trao i thng tin a im ngi dng (tn my, IP)


OPTIONS = Trao i cc thng tin v kh nng ca cc in thoi SIP gi v nghe trong
phin
p ng cho cc phng thc trn di dng l text nh trong HTML, c 6 loi Phn hi
SIP:
1xx = phn hi thng tin, v d 180, c ngha l ang chung
2xx = phn hi thnh cng
3xx = phn hi chuyn hng
4xx = yu cu b tht bi
5xx = li my ch
6xx = tht bi ton cc
2.1.2 Gii thiu v RTP
Giao thc truyn tn hiu ging ni, hnh nh chun c s dng trn mng Internet
hin nay l giao thc RTP (Real-time transport protocol) .RTP c s dng rng ri
trong cc ng dng lin lc v gii tr cn ti streaming d liu
Ti liu c t ca RTP m t hai giao thc con:
-

Giao thc truyn d liu, RTP, chu trch nghim truyn d liu thi gian thc.
Thng tin cung cp cho giao thc ny bao gm timestamps ( ng b ha),
chui s (cho kim tra gi tin b mt) v tham s ch nh dng ca d liu.

Mt giao thc iu khin, RTCP, dng tnh ton cc tham s trn ng truyn
RTP ti u ng truyn. Bng thng ca RTCP tng i nh so vi RTP,
nm trong khong 5%.

C mt vi chun s ha d liu m thanh v mt trong s chng c s dng ch yu


trong VoIP .a s cc nh cung cp dch v v thit b h tr mt hoc nhiu cc chun
a ra bi ITU nh di y:
G.711 l chun mc nh cho tt c cc nh cung cp (dch v v thit b), cng
nh cho PSTN. Chun ny s ha voice thnh d liu khng nn c bitrate l 64
Kbps
G.729 c h tr bi nhiu nh cung cp cho php nn d liu m bitrate 8
Kbps. Cht lng ca chun ny km hn so vi G.711, n cng l chun ph
bin th 2 sau G.711
G.723.1 l chun nn c khuyn co. Bitrate ca d liu theo chun ny l 6.3
v 5.3 kbps. Mc d chun ny lm gim gng nng bng thng, nhng cht lng
thp hn ng k so vi G.729 v khng c ph bin trong VoIP.

G.722 c bitrate 64kbps nhng c trung thc v ting ni cao. Tri vi ba


chun trc s dng tn s ly mu vo khong 3.4 kHz, G.722 ly mu vi tn s
7 kHz. Chun ny s c s dng ph bin trong tng lai.
Trong mi trng hp, IP phone ly d liu s ca 10 n 30 ms v t n trong gi tin
RTP v truyn i
ng k, thit lp cuc gi vi SIP proxy server
2.2.1 ng k mi:
2.2

Khi User mun s dng IP phone s dng dch v VoIP h phi thc hin bc ng
k a ch sip ca h vi mt registrar server.Registrar server cung cp cc thng tin v
user cho location server (location database) da trn cc request nhn c t user
.SIP phone s dng phng thc REGISTER register ti registrar server. Server nhn
v lu cc thng tin trong request nhn c vo location database .Registrar server c
th chp nhn cc loi thng tin khc nhau, khng ch a ch IP ca client .Database c
cha tt c cc nh x gia a ch SIP tng ng vi a ch IP ca client, v d: SIP user
8590@ekiga.net ng k a ch IP 200.180.1.1.

Figure 2: ng k vi Sip Server thnh cng

Caller gi SIP REGISTER request ti SIP server .Request ny bao gm trong n danh
sch lin lc (contact list) ca user (danh sch cc a ch SIP ca Caller). SIP server
yu cu user nhp thng tin (user ID v password) xc thc .SIP client m ha thng
tin ngi dng v gi ti server .Server xc thc thng tin ngi dng, nu thnh cng n
tr v chui 200 OK cho SIP client .Vi c ch ny client s dng gi tr nonce (Do
server sinh ra v gi cho client v l dy s ch dng 1 ln, tng t nh one time
password) to ra thng tin gi ln server.
Thng tin gi ln server gm c checksum ca username, password, gi tr nonce
(username, cnonce, hash (nonce +cnonce + password)) v kt hp vi mt s gi tr khc

.Theo cch ny, password ca ngi dng c gi i khng bao gi tn ti di dng


clear text v cng khng th gii m c ra password
F1 REGISTER sip: 192.168.133.193 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060; rport; branch=z9hG4bKBuZ0keykB
Max-Forwards: 70
To: <sip:1000@192.168.133.193>
From: <sip:1000@192.168.133.193>;tag=1mzIc5Cd
Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk
CSeq: 1 REGISTER
Contact: sip:1000@192.168.133.193:6060;transport=UDP

F2 SIP/2.0 401 Unauthorized


Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bKBuZ0keykB
To: <sip:1000@192.168.133.193>;tag=b27e1a1d33761e85846fc98f5f3a7e58.436b
From: <sip:1000@192.168.133.193>;tag=1mzIc5Cd
Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="192.168.133.193", nonce="TTPtWU0z7C2nKObujoCYR89YfUq3YDxC"
Server: kamailio (3.1.0 (i386/linux))
Content-Length: 0

Server i username v password n gi v gi tr


nonce="TTPtWU0z7C2nKObujoCYR89YfUq3YDxC"
F3 REGISTER sip:192.168.133.193 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bK2LKuG1vwn
Max-Forwards: 70
To: <sip:1000@192.168.133.193>
From: <sip:1000@192.168.133.193>;tag=bYwlyuoF
Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk
CSeq: 2 REGISTER
Contact: <sip:1000@192.168.133.193:6060;transport=UDP>
Authorization: Digest username="1000", realm="192.168.133.193",
nonce="TTPtWU0z7C2nKObujoCYR89YfUq3YDxC", uri="sip:192.168.133.193",
response="ba7b6b7988a263cba8de358cc3eac7e1"

Client dng MD5 tnh checksum ca password, nonce ri gi


response="ba7b6b7988a263cba8de358cc3eac7e1 tr li server.
F4 SIP/2.0 200 OK

Via: SIP/2.0/UDP 192.168.133.19j3:6060;rport=6060;branch=z9hG4bK2LKuG1vwn


To: <sip:1000@192.168.133.193>;tag=b27e1a1d33761e85846fc98f5f3a7e58.8f80
From: <sip:1000@192.168.133.193>;tag=bYwlyuoF
Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk
CSeq: 2 REGISTER
Contact: <sip:1000@192.168.133.193:6060;transport=UDP>;expires=3600
Server: kamailio (3.1.0 (i386/linux))
Content-Length: 0

Khi user 1000@192.168.133.193 Log out khi server 192.168.133.193 n to


request:
REGISTER sip:192.168.133.193 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bKZOmdS4hLG
Max-Forwards: 70
To: <sip:1000@192.168.133.193>
From: <sip:1000@192.168.133.193>;tag=FLjcVEm6
Call-ID: Ne4rmYWiF-1295248430029@cn.vinhnk
CSeq: 4 REGISTER
Contact: <sip:1000@192.168.133.193:6060;transport=UDP>;expires=0
Authorization: Digest username="1000", realm="192.168.133.193",
nonce="TTPt+k0z7M6EsW/CXuH6wCl9ZHF244HG", uri="sip:192.168.133.193",
response="d18e2c819303f864d9b09280015267df"

Sau server tr v thnh cng:


SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bKZOmdS4hLG
To: <sip:1000@192.168.133.193>;tag=b27e1a1d33761e85846fc98f5f3a7e58.d2d1
From: <sip:1000@192.168.133.193>;tag=FLjcVEm6
Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk
CSeq: 4 REGISTER
Server: kamailio (3.1.0 (i386/linux))
Content-Length: 0

2.2.2 Thit lp cuc gi


Khi user thit lp mt cuc gi, mt SIP request c gi ti SIP server (mt proxy
server hoc mt redirect server) .Trong request ny bao gm a ch ca ngi gi
(trng From) v a ch ca ngi nhn (trng To).Khc vi phng thc REGISTER,
phng thc INVITE c s dng thit lp cc media session gia cc user agent
.Mt media session c thit lp khi cc bn tin INVITE ,200 OK, ACK c trao i

gia UAC v UAS .Phng thc BYE c s dng bi mt trong cc UA kt thc


media session c thit lp.
UAC m khi to mt INVITE request s to ra mt Call-ID duy nht, s dng cho vic
xc nh thi gian ca cuc gi. Bin m CSeq c khi to (khng cn gi tr phi
bng 1, nhng phi l mt s nguyn) v tng khi c mt request mi t cng mt CallID. Trng To v From trong header ca request l a ch SIP ca ngi nhn v ngi
gi. Trng Expires trong header ca mt INVITE request cho UAS bit request ny c
hiu lc trong khong thi gian bao lu .Mt khi media session c thit lp th trng
ny s khng c n ngha na .Trng Session-Expires c th c s dng gii hn
thi gian ca mt session.

Figure 3: Thit lp thnh cng cuc gi

Trong phn ny s i chi tit v vic thit lp cuc gi (thit lp sesssion) gia hai SIP
UA: 1000@192.168.133.193 (Alice) v 1001@192.168.133.193 (Bob) .S trao i thng
tin v media ca UA c t trong SDP payloads .Trong phn ny, cuc gi c thit
lp v cui cng yu cu kt thc cuc gi n t pha 1000.
F1 INVITE sip:1001@192.168.133.193 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bKrybFW32gj
Max-Forwards: 70
To: <sip:1001@192.168.133.193>
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk
CSeq: 4 INVITE
Content-Length: 218
Content-Type: application/sdp
Contact: <sip:1000@192.168.133.193:6060;transport=UDP>

Proxy-Authorization: Digest username="1000", realm="192.168.133.193",


nonce="TTPg/E0z39DX2sC/XzRzl8PQlpKPQDlQ", uri="sip:1001@192.168.133.193",
response="3e671b21bfe90c3e9c94ec63c229041c"
v=0
o=user1 1782520463 2100547947 IN IP4 192.168.133.193
s=c=IN IP4 192.168.133.193
t=0 0
m=audio 8000 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv

Ni dung bn tin SDP (t on v=0) request ny cho bit. SIP phone ca 1000 s nhn
RTP audio c loi codec l 0, 8, 101 192.168.133.193: 8000
F2 SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bKrybFW32gj
Record-Route: <sip:192.168.133.193;lr>
Contact: <sip:1001@192.168.133.196:32322;rinstance=2f19f079276fe5f9>
To: <sip:1001@192.168.133.193>;tag=ca470244
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk
CSeq: 4 INVITE
User-Agent: X-Lite release 1002tx stamp 29712
Content-Length: 0

1.1.1.1 Chp nhn cuc gi


1001@192.168.133.193 tr li:
F3 SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bKrybFW32gj
Record-Route: <sip:192.168.133.193;lr>
Contact: <sip:1001@192.168.133.196:32322;rinstance=2f19f079276fe5f9>
To: <sip:1001@192.168.133.193>;tag=ca470244
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk

CSeq: 4 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE,
INFO
Content-Type: application/sdp
User-Agent: X-Lite release 1002tx stamp 29712
Content-Length: 247
v=0
o=- 6 2 IN IP4 192.168.133.196
s=<CounterPath eyeBeam 1.5>
c=IN IP4 192.168.133.196
t=0 0
m=audio 52062 RTP/AVP 0 8 101
a=fmtp:101 0-15
a=rtpmap:101 telephone-event/8000
a=sendrecv
a=x-rtp-session-id: 9BF1CA1AD44A4BBDB2F89BE1533DFFB0

Ni dung bn tin SDP (t on v=0) response trn cho bit. SIP phone ca 1001 s
nhn RTP audio c loi codec l 0, 8, 101 192.168.133.196: 52062
F4 ACK sip:1001@192.168.133.196:32322;rinstance=2f19f079276fe5f9 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bKrybFW32gj
To: <sip:1001@192.168.133.193>;tag=ca470244
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk
CSeq: 4 ACK
Route: <sip:192.168.133.193;lr>
Max-Forwards: 70

Sau khi thc hin xong bc 4 .RTP stream c thit lp gia 1000 v 1001 .Khi 1000
thc hin gc my, BYE c to ra bi 1000
F5 BYE sip:1001@192.168.133.196:32322;rinstance=2f19f079276fe5f9 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bK0mvp65wxR
To: <sip:1001@192.168.133.193>;tag=ca470244
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk
CSeq: 6 BYE
Route: <sip:192.168.133.193;lr>
Max-Forwards: 70

F6 SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bK0mvp65wxR
Contact: <sip:1001@192.168.133.196:32322;rinstance=2f19f079276fe5f9>
To: <sip:1001@192.168.133.193>;tag=ca470244
From: <sip:1000@192.168.133.193>;tag=mXuZXR5C
Call-ID: bdpjEqZN-1295245265337@cn.vinhnk
CSeq: 6 BYE
User-Agent: X-Lite release 1002tx stamp 29712
Content-Length: 0

1.1.1.2 T chi cuc gi


1001@192.168.133.193 tr li nh sau
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/UDP 192.168.133.193:6060;rport=6060;branch=z9hG4bKRdwKIwYy5
To: <sip:1001@192.168.133.193>;tag=6b254d3c
From: <sip:1000@192.168.133.193>;tag=mVBPDX6W
Call-ID: nFthyBSf-1295248052847@cn.vinhnk
CSeq: 4 INVITE
User-Agent: X-Lite release 1002tx stamp 29712
Content-Length: 0

1000@192.168.133.193 xc nhn li:


ACK sip:1001@192.168.133.193 SIP/2.0
Via: SIP/2.0/UDP 192.168.133.193:6060;rport;branch=z9hG4bKRdwKIwYy5
Call-ID: nFthyBSf-1295248052847@cn.vinhnk
From: <sip:1000@192.168.133.193>;tag=mVBPDX6W
To: <sip:1001@192.168.133.193>;tag=6b254d3c
CSeq: 4 ACK

2.3

C bn v Android

Vic hiu c cc thnh phn (component) to nn mt ng dng Android l rt cn


thit cho vic lp trnh trn Android .
2.3.1

Activity:

Hiu mt cch n gin th Activity l nn ca mt ng dng. Khi khi ng mt ng


dng Android no th bao gi cng c mt main Activity c gi, hin th mn hnh
giao din ca ng dng cho php ngi dng tng tc .H iu hnh Android qun l
Activity theo dng stack: khi mt Activity mi c khi to, n s c xp ln u ca

stack v tr thnh running activity, cc Activity trc s b tm dng v ch hot ng


tr li khi Activity mi c gii phng.
Activity bao gm bn state:
- active (running): Activity ang hin th trn mn hnh (foreground).
- paused: Activity vn hin th (visible) nhng khng th tng tc (lost focus).
- stop: Activity b thay th hon ton bi Activity mi s tin n trng thi stop
- killed: Khi h thng b thiu b nh, n s gii phng cc tin trnh theo nguyn tc u
tin. Cc Activity trng thi stop hoc paused cng c th b gii phng v khi n c
hin th li th cc Activity ny phi khi ng li hon ton v phc hi li trng thi
trc .
2.3.2 Service:
Thnh phn chy n trong Android, service s dng update d liu, a ra cc cnh
bo (Notification) v khng bao gi hin th cho ngi dng thy .Nu mt Service cho
php nhng tin trnh khc kt ni vi n th s c thm cc phng thc callback dnh
cho Service thc hin
2.3.3 Intent:
1.1.1.3

Khi nim v Intent:

Nn tng truyn ti cc thng bo, intent c s dng gi cc thng bo i nhm


khi to mt Activity hay Service thc hin cng vic bn mong mun. VD: khi m
trang web, bn gi mt intent i to activity mi hin th trang web . Intent c
chia lm 2 loi:
- Explicit Intents: intent c xc nh thuc tnh component, ngha l ch r thnh
phn s nhn v x l intent. Thng thng intent dng ny s khng b sung thm cc
thuc tnh khc nh action, data .Explicit Intent thng c s dng khi chy cc
activity trong cng 1 ng dng.
- Implicit Intents: Intent khng ch r component x l, thay vo n b sung thng tin
trong cc thuc tnh .Khi intent c gi i, h thng s da vo nhng thng tin ny
quyt nh component no thch hp nht x l n.
1.1.1.4 Intent Filter l g
Activity, Service v BroadCast Receiver s dng Intent Filter thng bo cho h thng
bit cc dng Implicit Intent m n c th x l .Ni cch khc, Intent Filter l b lc

Intent, ch cho nhng Intent c php i qua n


Intent Filter m t kh nng ca component nh ngha n .Khi h thng bt c mt
Implicit Intent (ch cha mt s thng tin chung chung v action, data v category...), n
s s dng nhng thng tin trong Intent ny, kim tra i chiu vi Intent Filter ca cc
component cc ng dng, sau quyt nh khi chy ng dng no thch hp nht
x l Intent bt c. Nu c hai hay nhiu hn ng dng thch hp, ngi dng s c
la chn ng dng mnh mun.
2.3.4 Broadcast Receiver:
Thnh phn thu nhn cc Intent bn ngoi gi ti. VD: bn vit mt chng trnh thay
th cho phn gi in mc nh ca android, khi bn cn mt Broadcast Receiver
nhn bit cc Intent l cc cuc gi ti.
2.3.5 Notification:
Da ra cc cnh bo m khng lm cho cc Activity phi ngng hot ng
2.3.6 SQLLite
Mi ng dng u s dng d liu, d liu c th n gin hay i khi l c 1 cu trc
.Trong Android th h c s d liu c s dng l SQLite Database, y l h thng
m ngun m c s dng rng ri trong cc ng dng (Mozilla Firefox s dng
SQLite lu tr cc d liu v cu hnh, iPhone cng s dng c s d liu l SQLite)
Trong Android, c s d liu m bn to cho 1 ng dng th ch ng dng c quyn
truy cp v s dng, cc ng dng khc th khng. Khi c to, c s d liu SQLite
c cha trong th mc /data/data/<package_name>/databases.
2.3.7 XML trong Android:
S dng XML s n gin cng vic thit k giao din i rt nhiu .ng thi s dng
XML s gip vic chnh sa ng dng sau ny tr nn d dng
2.3.8 Android Manifest:
Activity, Service, Broadcast Receiver l nhng thnh phn chnh cu thnh nn ng dng
Android, bt buc phi khai bo trong AndroidManifest .Mi ng dng u cn c
AndroidManifest.xml m t nhng thng tin quan trng ca n cho h thng Android
bit.
3

Cc vn t ra

3.1 Xc thc d liu

Nh ta bit cc bn tin SIP c truyn i trong mng l dng clear text. Do nu


khng c c ch bo v th thng tin v username v password ca ton b ngi dng s
b phi by
3.2 NAT v nh hng ca n ti VoIP

Internet ngy cng c s dng rng ri, cc dch v web, tng tc trc tuyn ngy
cng pht trin, s lng my tnh kt ni Internet ngy cng nhiu dn n s lng a
ch IPv4 thiu ht. IPv6 ra i gip tng thm s lng a ch IP tuy nhin cn phi mt
thm nhiu thi gian c s dng rng ri .Vic dng NAT c nhiu u im nh
gip gii quyt thiu ht IPv4, bo v cc my tnh trong mng ni b trnh s xm nhp
tri php t Internet v nhiu u im khc .Tuy nhin NAT ph v cc giao tip trong
VoIP
Gii php v cng c c la chn gii quyt cc vn t ra
4.1 Gii php xc thc d liu
SIP digest authentication da trn digest authentication c nh ngha RFC 2617.
Vi c ch ny client s dng gi tr nonce (Do server sinh ra v gi cho client v l dy
s ch dng 1 ln, tng t nh one time password) to ra thng tin gi ln server
4

Figure 4: C ch xc thc username v password

Thng tin gi ln server gm c checksum ca username, password, gi tr nonce v kt


hp vi mt s gi tr khc .Theo cch ny, password ca ngi dng c gi i khng
bao gi tn ti di dng clear text v cng khng th gii m c ra password
4.2 Gii php cho cc thit b nm trong NAT

4.2.1

Gii php qua NAT cho cc tn hiu SIP

V cc User Agent phi kt ni, gi cc SIP request ti mt SIP server chy trn mt a
ch c ip v port c nh .Do vy pha server s ghi nhn c ip: port mt ngoi ca thit
b kt ni ti n, SIP server s dng thng tin ny gi li cc SIP response nh hnh
di:

Figure 5 : Gii php qua NAT cho cc tn hiu SIP

4.2.2 Gii php truyn cc gi tin RTP qua NAT


S dng STUN xc nh trc cp ip:port ca thit b NAT, gi cp ny cho user
agent kia, n c th kt ni ti:

Figure 6: Gii php truyn cc gi tin RTP qua NAT

Tuy nhin vi gii php ny, ta khng th m bo 100% cc user agent c th giao tip
vi nhau v nu user agent di mt symmetric nat th dng STUN s khng gii quyt
c vn .
4.3 Chn la chun xy dng h thng VoIP

SIP hin ang th hin l chun c dng v s dng ph bin trong tng lai bi s
n gin v h tr tng tc tt gia cc h thng khc nhau. Cc bn tin SIP c th
hin di dng text base v truyn i trong mng IP tng t nh HTTP. Ta c th pht
trin v xy dng dch v voice da trn SIP d v nhanh nh pht trin cc web pages
.N khng yu cu cc h tng mng t bic m tn dng cc thit b, server ca mng
IP c sn .Hn na ngy nay a s cc thit b IP phone u h tr SIP. Do vy ta s s
dng SIP nh l mt gii php cho signaling protocol.
truyn ti v s ha d liu ta s dng giao thc RTP, s ha m thanh dng codec
theo chun G.711 (cho cht lng) v G.729 (cho vic cn bng gia cht lng v bng
thng) v 2 codec trn cng c h tr bi a s cc IP phone ngy nay.
4.4 La chn th vin pht trin ng dng SIP trn client

Mi trng pha client c la chn xy dng demo l Android OS (android API 8).
PJSIP l th vin c th s dng trn nhiu nn tng, th vin kch thc nh (small
footprint), Tch hp sn cc gi th vin media, NAT xy dng ng SIP client.
PJSIP l th vin vit bng C c hiu nng cao, n nh, h tr nhiu nn tng v hin ti
ang c pht trin mnh m. Ngoi ra, th vin i km PJSIP c ng gi sn
cc th vin x l media, NAT. Vi nhng u im ny, ta s dng PJSIP pht trin
ng dng demo pha client.
4.5

La chn SIP proxy


SIP server l thnh phn quan trng trong h thng VoIP, cho php cc user agent trao
i thng tin, ng k ngi dng v trong sut vi h tng mng gia nhiu ngi dng
.SIP server cn cung cp cc dch v quan trng khc nh nh tuyn cuc gi, cc chnh
sch bo mt, xc thc ngi dng v qun l trng thi user agent .SIP server cn phi
lm vic trn nhiu topo mng (nh cc mng cng cng, mng di ng, 3G). SIP
server cn c sn sng cao, lm vic vi nhiu giao dch ng thi v cn c kh nng
m rng.
Kamailio (tn gi c OpenCER) l h thng open source dng trin khai sip server
.Mt SIP proxy xy dng t Kamailio c kh nng qun l hng nghn cuc gi mi giy
.Kamailio c duy tr v pht trin bi mt cng ng ln cc lp trnh vin c kinh
nghim, ngy cng h tr kt ni ti nhiu h thng vin thng khc.

PHN II: XY DNG H THNG VOIP


1

Kho st, phn tch yu cu

1.1 Mc tiu ca h thng

Xy dng h thng th nghim tnh kh thi ca cng ngh Voip phc v cho cc d n
tip theo ca Trung tm phn mm Viettel.
1.2 Phn tch yu cu

1.2.1 Cc rng buc thit k (Design Constraints)


S dng ngn ng Java
Server chy nn tng UNIX
Cng c pht trin l Eclipse tch hp Android SDK
1.2.2 Cc yu cu v hiu nng (Performance)
m bo nhiu ngi s dng ng thi
Cht lng cuc thoi trong phm vi cho php
1.3 Thit k tng quan

1.3.1 Thit k kin trc h thng


H thng Voip c bao gm hai thanh phn chnh: Server v Client

Figure 7: M hnh h thng cn xy dng

Trong cc phn trn ta nu ra c cc thnh phn cn thit m h thng VoIP phi


p ng .Chng ta c cc user agent v server .H thng s dng mt m hnh phn tn
peer-to-peer cng vi mt signaling server
1.3.1.1 Client
Client trong h thng l ng dng Voip Android c gi l cc User Agent (UA) .Voip
Adroid c cc vai tr l:
User Agent Client (UAC) Khi m n khi to cc SIP request (start SIP
signaling) ti server
User Agent Server (UAS) Khi n tr li SIP signaling n t cc UAC
1.3.1.2 Server
Server c la chn l Kamailio .C hai chc nng chnh lm proxy server v registrar
server.Registrar server cung cp cc thng tin v user cho location server (location
database) da trn cc request nhn c t user
1.4 Thc hin, ci t v th nghim h thng

1.4.1 Trin khai pha server:


1.4.1.1 Ci t

Ta c th s dng cc nh cung cp dich v min ph nh ekiga.net , iptel.org hoc


cng c th t ci cho ring mnh mt sip server .
Kamailio (trc kia l OpenSER) l mt SIP server m ngun m vi kh nng thit lp
hng nghn cuc gi trong mt giy .Kamailio c s dng xy dng dch v c
VoIP ln
Ni dung phn ny tp trung vo vic hng dn ci t Kamailio v3.1.0 c h tr
MySQL trn h thng Debian.
- Yu cu:
C quyn root vi h thng. V cc cng c sau y l cn thit cho cc bc tip theo:

o git client: apt-get install git-core: S dng ly m ngun mi nht ca


kamailio
o gcc compiler: apt-get install gcc
o flex : apt-get install flex
o bison : apt-get install bison
o libmysqlclient15-dev : apt-get install libmysqlclient15-dev
o make : apt-get install make
o Nu nh mun s dng thm nhiu module ca Kamailio hn th cc th
vin di y l cn thit:
libcurl : apt-get install libcurl4-openssl-dev
libxml2 : apt-get install libxml2-dev
libpcre3 : apt-get install libpcre3-dev
Ly m ngun mi nht ca Kamailio t GIT
To th mc cha m ngun:
o mkdir -p /usr/local/src/kamailio-3.1.0
o cd /usr/local/src/kamailio-3.1.0
Download m ngun s dng lnh git:
o git clone --depth 1 git://git.sip-router.org/sip-router kamailio
o cd kamailio
o git checkout -b 3.1 origin/3.1

Sa Makefiles
Bc quan trng u tin cu thc hin l set bit flavour cho Kamailio:

o make FLAVOUR=kamailio cfg


Cho php module MySQL hot ng:
o nano -w modules.lst
G b db_mysql khi bin exclude_modules Lu file v tt nano
Hai bc trn c th thc hin bng cch n gin hn:
o make FLAVOUR=kamailio include_modules="db_mysql dialplan" cfg
Nu ta mun ci t mi th ca kamailio vo th mc /usr/local/kamailio-3.1 th:
o make PREFIX="/usr/local/kamailio-3.1" FLAVOUR=kamailio
include_modules="db_mysql dialplan" cfg
-

Bin dch Kamailio


Dng lnh make thc hin bin dch
o make all

Ci t Kamailio
Lnh ci t
o make install

V tr cc file c ci t trn h thng


Kamailio sau khi c bin dch v ci t th cc file ca n c t ti:
o /usr/local/sbin
Trong th mc ny c:
kamailio Kamailio (OpenSER) server
kamdbctl on script to v qun l database
kamctl on script qun l v iu khin Kamailio (OpenSER) server
sercmd - CLI - command line tool tng tc vi Kamailio (OpenSER)
server
Thm ng dn '/usr/local/sbin' vo bin mi trng PATH . Ta c th kim tra bng
lnh 'echo $PATH'. Nu cha thm th mi file /root/.bash_profile v thm vo cui file:
o
o
o
o

o PATH=$PATH:/usr/local/sbin
o export PATH

Cc modules ca kamailio c ci t :
o /usr/local/lib/kamailio/modules/
o /usr/local/lib/kamailio/modules_k/
File ti liu v readme file :
o /usr/local/share/doc/kamailio/
File cu hnh:
o /usr/local/etc/kamailio/kamailio.cfg
Hng dn s dng:
o /usr/local/share/man/man5/
o /usr/local/share/man/man8/
-

To MySQL database
to MySQL database, ta chy on script sau:
o /usr/local/sbin/kamdbctl create

Cu hnh Kamailio
Cu hnh trong file di y c th chy c cc modules cn thit.
o /usr/local/etc/kamailio/kamailio.cfg
chy MySQL thm cc d ng di y vo u file:
o #!define WITH_MYSQL
o #!define WITH_AUTH
o #!define WITH_USRLOCDB

Start, stop, restart server:


start, stop server chy cc lnh di y:
o kamctl start
o kamctl stop
o kamctl restart

Thm user vo server


Thm user 1000 vi password l 123456

o kamctl add 1000 123456


Nu c hi v bin mi trng SIP_DOMAIN th thc hin lnh sau:
o export SIP_DOMAIN=mysipserver.com
Sau khi thc hin cc bc trn, ta c th dng sip phone v ng nhp, thc hin
cuc gi ti user khc.
1.4.2

Pha Client

1.4.2.1 Build th vin pjsip cho ng dng Voip Android


u tin download ndk v gii nn Android Ndk
wget http://www.crystax.net/data/android-ndk-r4-linux-x86-crystax-4.tar.bz2tar xvf android-ndk-r4-linux-x86-crystax-4.tar.bz2rm android-ndk-r4-linux-x86crystax-4.tar.bz2
Download th vin pjsip:
http://www.pjsip.org/download.htm/ chn pjsip_android
Copy th mc prebuilt trong android-ndk-r4-crystax/build vo th mc
pjsip_android/build/
cp -r android-ndk-r4-crystax/build/prebuilt pjsip_android/build/
Build file th vin lin kt ng .so, vo th mc pjsip_android
cd pjsip_android
Gi lnh make
make APP=pjsip
Sau khi xong cc bc trn file libpjsipjni.so s c to ra trong th mc
/VoipAndroid/libs/ armeabi & armeabi-v7a
1.4.2.2 Xy dng ng dng Voip Android pha client

Voip Android l mt ng dng trn in thoi chy h iu hnh Android cho php
ngi dng c th to cuc gi, gi tin nhn thng qua h tng mng IP c sn c th
l wifi hoc 3G .Voip Android c vit bng th vin PJSIP, cch build PJSIP cho
nn tng Android c trnh by trn.
1.4.2.2.1 Phn tch c th tng chc nng:

Cc chc nng ca h thng c trnh by nh biu di y:

uc Primary Use Cases

Delete Account

Register
Unregister
Account

Send Message

Modify Account
View
Messages

Account
Management

Add Accounts

Message
Management
User

Delete
Messages
Call
Management

View Accounts

View CallLogs
Place Call
Delete
CallLogs

Figure 8: M hnh Use case ca ng dng Voip Android

Qun l cc ti khon:
Thm xa chnh sa Account:
Register / Unregister mt Account vi sip server
Qun l vic nhn v gi tin nhn

Gi tin nhn (instant message)


Qun l lu tr tin nhn
Qun l cuc gi
Thit lp cuc gi n mt a ch URI xc nh
Qun l lu tr calllogs
1.4.2.2.2 Cc lung thng tin trong ng dng Voip Android
Hnh di y minh ha lung thng tin c x l bn trong h thng
Nh hnh di ta thy, ngi dng thng qua giao din gi yu cu ti ng dng, ty
theo loi yu cu ng dng xc nh xem c cn truy nhp c s d liu hay c cn kt
ni ti SipService khng .Vic kt ni vo SipService thng qua i tng ISipservice
.SipService c trch nhim tng tc vi sip server thng qua bn tin sip, cc softphone
khc thng qua bn tin RTP .
User interface: Giao din ngi dng , cc mn hnh nh: To cuc gi, tin nhn ,
xem lch s cuc gi, thm ti khon
Database: Dng SQLLite qun l cc bng nh: ti khon , tin nhn , calllogs
SipService: l ni thc s x l cc yu cu ngi dng, n chy ngm trong ng
dng, tng tc vi cc sip client v sip server, cung cp cc hm api cho cc
thnh phn khc kt ni n.
ISipService: n ng vai tr ging nh cu ni cc activity kt ni ti
SipService

Figure 9: Lung thng tin trong ng dng Voip Android

1.4.2.2.3 Thit k c s d liu


Trong Voip Android tn ca database l: com.voip.db. Class DBAdapter trong package
utils x l tt c cc thao tc lin quan n CSDL .C 4 bng l: Account, CallLog,
and Message. Cu trc ca cc bng nh sau:

a. Bng Account:

Table 1: Bng Account

ngha ca cc trng c m t bn di (Class IAccount)


Cc thao tc trn bng Account:
Xa mt account trong bng, hm ny phc v cho chc nng xa mt ti
khon
Cp nht mt account ,hm ny dnh cho chc nng chnh sa ti khon
Ly ra mt danh sch cc account theo mt tiu ch no VD: ch ly ra cc
account tng c ng k (active)
b. Bng CallLogs

Table 2: Bng CallLogs

ngha cc trng:

name: Tn ngi thc hin cuc gi


date: Ngy gi cuc gi din ra
duration: thi gian m thoi
number: sip uri ca ngi gi
type: loi cuc gi (cuc gi nhn , cuc gi nh ,cuc gi i)

Cc thao tc trn bng:


Thm mt cuc gi vo bng , dng cp nht khi thc hin mt cuc gi
hoc c cuc gi n hoc cuc gi nh
Ly ra cc cuc gi c trong bng dng cho chc nng xem lch s cc cuc
trong qu kh
Xa cuc gi c dng n khi ngi dng thc hin thao tc xa mt hay
nhiu la chon
c. Bng Messages:

Table 3: Bng Messages

ngha ca cc trng:

sender: sip uri ca ngi gi


receiver: sip uri ca ngi nhn
body: Ni dung ca tin nhn
date: Ngy gi hoc nhn
status: Trng thi ca tin nhn ( gi thnh cng, tht bi)
read: Tin nhn c c hay cha

Cc thao tc trn bng:


Thm mt tin nhn vo bng ,c dng khi c tin nhn mi n hoc khi
ngi dng t h gi
Ly ra cc tin nhn trong bng dng cho chc nng xem cc tin nhn c trong
my
Xa mt tin nhn trong bng dng cho chc nng xa mt tin nhn.
Cp nht trng thi ca tin nhn: c, gi thnh cng hay tht bi .Trng
thi ca tin nhn c cp nht da vo th vin PJSIP
1.4.2.2.4 Thit k gii thut
Hnh di y minh ha tun t ca ngi dng vi h thng ng vi mi chc nng

Figure 9: Biu tun t cho chc nng thm v xem cc account

Figure 10: Biu tun t cho chc nng xem v xa lch s cuc gi

Figure 11 : Biu tun t cho chc nng xem v xa tin nhn

Cc chc nng xem, xa, sa i thng tin ti khon, calllogs, danh sch cc tin nhn c
th c thc hin m khng cn c ti khon ng k thnh cng vi server .Ring
cc chc nng gi tin nhn, thit lp cuc gi bt buc c t nht mt ti khon ng k
thnh cng vi server .Vic ng k ti khon mi do gii hn ca n nn vic ny
phi ng k qua giao din web ca nh cung cp dch v VD: ekiga.net. hoc c to ra
khi ci t Sip Server .ng vi mi thao tc ca ngi dng h thng u cp nht vo
Database tin cho vic qun l .C ch qun l c s d liu ca Android s c
cp chi tit phn sau.

Figure 12: : Biu tun t cho chc nng gi tin nhn v to cuc gi

i vi trng hp lc ngi dng ang m thoi h c th la chn cc chc nng


ging nh cuc gi thng thng vi mng GSM .C th bt hoc tt loa, mute hoc
unmute, hold hoc unhold, cp my.

Figure 13 : Biu tun t cho chc nng xa v sa ti khon

1.4.2.2.5 Kin trc ng dng Voip Android

Figure 14: Kin trc ng dng Voip Android

ng dng Voip Android c phn chia theo cc package nh sau:


o package ui: Cha cc class v x l v giao din ngi dng ,cc mn hnh
qun l account (thm ,sa, xa) , qun l cuc gi (lch s , mn hnh lc
ang m thoi) ,qun l tin nhn (cc mn hnh danh sch tin nhn,mn hnh
to tin nhn mi) ,ci t

o package utils: Cha cc class tin ch dng cho vic truy xut database , cp
nht giao din , kim tra s tng thch gia cc dng my , cc thng s
dnh cho vic ci t v khi ng h thng.
o package service: y c th gi l tri tim ca Voip Android ,package ny
x l gn nh ton b chc nng ca h thng ,n c nhim v np th vin
PJSIP vo b nh .a ra cc dch v cho ng dng chnh gi ti: ng
k ti khon ,cp nht trng thi , thit lp cuc gi , ngt kt ni , hold , x l
iu khin media:bt tt loa ,mic (voice) thng qua cc hm ca PJSIP
o package models: L cc lp dng cha cc thng tin cn thit x l
trong h thng nh ti khon , tin nhn , cuc gi
Voip Android cng da vo hai project l pjsip v pjsip-jni
o PJSIP l th vin vit bng C c hiu nng cao, n nh, h tr nhiu nn
tng v hin ti ang c pht trin mnh m. Ngoi ra, th vin i km
PJSIP c ng gi sn cc th vin x l media, NAT. trang ch d
n: http://www.pjsip.org
o Pjsip jni l d n to ra giao din bng Java ( JNI Java native interface
) cho php gi cc hm pjsip vit bng C t Java . Project Pjsip-jni c
trong package org.pjsip.pjsua trong th mc src.
Dng System.Load (libpjsipjni.so) ta s np th vin pjsip vo b nh, dng cc hm
trong project pjsip-jni gi ti PJSIP t trong chng trnh java .PJSIP c np v
chy trong mt tin trnh khc vi ng dng chnh .C th th n chy ngm trong mt
service cung cp cc dch v ng dng chnh kt ni vo s dng . PJSIP chy
trong mt service m bo ngi dng vn nhn c cuc gi v tin nhn n ngay c
khi ng dng chnh khng chy .Vic thng bo da vo c ch notification ca Android
.
1.4.2.2.6 Chi tit ci t
Di y l mt s Class tiu biu
Voip Android Service:
UAStateReceiver
Lp ny c xem nh l mt cu ni gia ng dng Voip Android v PJSIP, k tha
lp CallBack ca PJSIP, override cc hm ca CallBack .N s c PJSIP gi khi c
cc s kin xy ra

Figure 15 Class UAStateReceiver

o on_incoming_call(acc_id, callId)
c gi khi c cuc gi n cho account c id l acc_id, callId l nh danh duy nht
ca cuc gi , hm ny c dng thng bo cho ngi dng khi no c cuc gi
n ( rung , chung , notification ) v khi to Activity x l cuc gi .
o on_call_state ( callId)
c gi khi c cuc gi c nh danh l callId ang c x l (in progress), hm ny
c gi mi khi cuc gi thay i trng thi, cc trng thi c nh ngha nh sau
CALLING: l trng thi khi bn gi ang c gng gi bn tin invite
kt ni ti sip server.
INCOMING: l trng thi bo c cuc gi ti.
EARLY: khi bn nhn cuc gi tr li cho bn gi bng bn tin sip
c m l 1xx.
CONNECTING: l trng thi m bn gi ch nhn bn tin 200
OK, cn bn nhn ch nhn bn tin xc nhn ACK.
CONFIRMED: y l trng thi thc s hai bn ang m thoi vi
nhau .Mt lung RTP c thit lp gia hai bn truyn d liu
voice
DISCONNECTED: l trng thi kt thc cuc gi, ngi ch ng
kt thc gi bn tin BYE c n ngi kia xc nhn li bng bn tin
200 OK
o on_pager (call_id, from, to, body)
c gi khi c tin nhn ti:
From: ngun ca tin nhn (uri ca ngi gi) VD: vinhnk@ekiga.net
To: ni nhn tin nhn (uri ca ngi nhn) VD: vinh.soict@ekiga.net

Body: ni dung tin nhn.


Ta s dng hm ny bo cho ngi dng v tin nhn mi v thm n vo DB.
o on_pager_status (call_id, to, body, status)
c gi khi trng thi ca tin nhn t to vi ni dung body thay i, nu tin nhn thnh
cng th status c m 2xx. Hm ny dng cp nht trng thi ca tin nhn trong DB
o on_reg_state ( accountId)
Hm ny cp nht trng thi khi SipService ng k account vi id l accountId vi sip
server: li khi ng k, ang ng k, time out, ng k thnh cng
o on_call_media_state ( callId)
Hm ny c gi khi trng thi ca cuc gi c callId thay i, cc trng thi c nh
ngha:
ACTIVE: Trng thi ang m thoi
LOCAL_HOLD: y l trng thi khi ngi dng n phm
hold.
REMOTE_HOLD: y l trng thi khi ngi bn kia u
dy n phm hold.
Trong trng thi ACTIVE l quan trng nht, trong trng thi ny da vo c ch
conference port ca pjsip a m thanh n loa v iu chnh m lng theo ci t
ca ngi dng.
SipService:
SIP Service l mt thnh phn quan trng nht trong ng dng Voip Android, thnh phn
ny chy ngm trong mt tin trnh v lm nhng cng vic khng cn ti giao din nh
duy tr m bo kt ni lin tc vi sip server, broadcast cho cc activity khi c cuc gi,
tin nhn ti, trng thi lc ng k ti khon, trng thi cuc goi .
SipService c vn hnh theo nh c lp trnh vic s dng mt Interface m n
nh ngha. Cc tin trnh khc thit lp mt kt ni ti i tng SipService v s n
gi cc hm dch v c cung cp bi SipService
Trong Voip Android ta s dng AIDL (Android Interface Definition Language) nh
ngha giao din (cc dch v m Sipservice cho php cc tin trnh khc s dng) ca
Sipservice .Vic s dng aidl cho php ta nh ngha cc hm m Sipservice cho php

cc tin trnh khc gi trong file ISipService.aidl. Mt khi to ra file aidl cng c
Eclipse + AIDL s to ra mt file c cng tn, nhng phn m rng l .java .Trong Voip
Android file c t ng sinh ra l ISipService.java . Ta s dng lp ISipService c
sinh ra ny thc hin kt ni ti SipService.

Figure 16 SipService

Di y l cc dch v m cc sipsevice cung cp cho cc tin trnh khc:


o sipStart
To sip stack load th vin vo b nh, khi to PJSUA l iu rt quan trng trc
khi bt k hm no ca PJLIB c th c gi .Start SipService theo cc cu hnh ty
theo s la chn ca ngi dng
Cho media: cht lng m thanh, clock rate
Cho transport: loi giao thc truyn d liu (UDP, TCP, TLS,
RTP) cng truyn ng vi tng loi giao thc.
NAT : Giao thc vt NAT ( cc server ng vi mt trong cc
giao thc sau : STUN , TURN , ICE ) .
Khi to cc b codec m ha m thanh, sp xp cc codec theo th t u tin v bng
thng.
o sipStop
Stop SipService, gii phng b nh

o addAllAccounts
Thm account t database vo th vin pjsip v ng k n vi sip server, trng thi ca
vic ng k (thnh cng, tht bi ) s c thng bo cho ngi dng bit.
o getSipProfileState (accountId):
Ly thng tin v Account c id l accountId: c c active khng, m trng thi, tn
hin th
o makeCall(callee, accountId)
Dng Account c id l accountId gi n mt ngi c uri l callee
o answer(callId, status):
o hangup(callId, status):
Tr li hoc t chi (dp my) mt cuc gi c id l callId, status l m c gi i trong
bn tin sip: 403 t chi, 200 tr li, 180 ringing.
o hold( callId)
Gi my cho cuc gi c id l callId
o getCallInfo(callId)
Ly thng tin ca remote party, trng thi cuc gi: CALLING, INCOMING, EARLY,
CONNECTING, CONFIRMED, And DISCONNECTED.Conference port ca cuc
gi c Id l callId
o setMicrophoneMute (on)
o setSpeakerphoneOn(on)
Turn on hoc off speaker (ch aloud)
o sendMessage(msg, toNumber, accountId)
Send message c ni dung msg ti remote party c uri l toNumber s dng account c
Id l accountId

Trong Voip Android khi khi to service th kim tra kt ni mng ca in thoi (c bt
mng 3G hoc wifi), Service ch c to nu sn c kt ni .Tin hnh ng k ti khon
vi sip server t trng thi online cho ti khon .Qu trnh ng k nh c m t
trong phn l thuyt .ng thi ng k vi android OS nhn c thng tin v thay
i trng thi kt ni mng, cuc gi GSM.
o Trong trng hp thay i loi kt ni, v d thay i t 3G sang Wifi hoc
ngc li dn ti a ch Ip local thay i theo .Trong trng hp ny
SipService cn phi khi ng li.
o Trong trng hp ng dng Voip Android nhn c thng tin cuc gi
GSM. Cuc goi gsm c u tin hn cuc gi IP v th nu nu cuc goi
gsm ang active th ip tm dng (hold) sau khi gsm kt thc th kt ni li
SipNotifications:
Notification l mt trong nhng thnh phn quan trng ca Android a ra cc cnh bo
m khng lm cho cc Activity phi ngng hot ng .Trong Voip Android ta s dng
SipNotification thng bo cho ngi dng khi c cuc gi n, cuc gi b nh, tin
nhn n .Do s dng c ch Intent ca Android nn khi ngi dng click vo
notification th s dn n activity x l s kin

Figure 17 SipNotifications

- notifyRegisteredAccounts:
Thng bo cho ngi dng bit nhng ti khon no c ng k thnh
cng vi server
- showNotificationForCall: Thng bo khi c cuc gi n, sau
chuyn qua activity x l cuc gi
- showNotificationForMissedCall: Thng bo khi c cuc gi nh

showNotificationForMessage: Thng bo khi c tin nhn n , khi click


vo chuyn sang activity to message
MediaManager:
-

X l voice l mt phn quan trng trong Voip Android .Trong PJSIP s dng c ch
conference bridge nh tuyn

gia cc bn trong mt cuc gi .Vi conference bridge s to cu ni cho d ng chy


voice t ngun ti ch .Nh hnh trn sound device mc inh c nh s l 0 .Mt file
wav c pht li c nh s 1 .Mt file wav dnh cho vic ghi li cuc m thoi
c nh s 2 .Khi c cuc goi ang active (ang ni) s c dnh cho n .V d nh
hnh trn, khi ang ni chuyn vi Alice mt conference port c s hiu l 3 c dnh
cho cuc gi ny . thit lp lung m thanh hai chiu vi Alice c th thc hin mt
cch d dng bng cch kt ni cc thit b m thanh vi cuc gi ti port .
Kt ni sound device/mic ti port ca cuc gi
1. lib.conf_connect(0, 3)
V kt ni port ca cuc gi ti sound device/speaker ca my in thoi
2. lib.conf_connect(3, 0)
Trong Voip Android thng tin v conference port ca mt cuc gi c th c cha
trong thuc tnh confPort ca class CallInfo , gi tr ca n c cp nht t PJSIP .Hnh
trn minh ha lung m thanh hai chiu gia hai bn (ng mu )
Chi tit ti http://trac.pjsip.org/repos/wiki/Python_SIP/Media

Figure 18 S lp x l Media

Hnh trn m t s lp x l media ca Voip Android .AudioFocus dng x l s


kin khi nt headset c bm bi user,nu trng thi ca cuc gi la INCOMING hoc
EARLY th khi n s c chc nng tr li ,nu trng thi l CALLING hoc
CONFIRMED hoc CONNECTING th ty theo ci t ca ngi dng nt ny c th
c chc nng l hangup hoc mute loa .AudioFocusWrapper dng d to ra hoc l mt
th hin ca AudioFocus3 hoc AudioFocus8 ty theo tng dng my .Class Ringer dng
rung v chung khi c cuc gi n ,nhc chung c dng l c mc nh
trong my .Vic rung v chung s c thc hin trong mi thread
Lp MediaManager chy trong tin trnh ca SipService, c nhim v iu khin media
nh bt tt loa, mic truyn m thanh nhn c t PJSIP a ra loa, iu chnh m lng
bng cch s dng cc hm ca SipService.
Voip Android Models:
i. SipMessage:

Khi gi tin mt bn tin sip vi Type l MESSAGE c to ra, sipservice s chuyn tip
ln sip server , server c trch nhim forward cho a ch sip c ch ra trong trng To
ca bn tin sip
Khi nhn c tin nhn ngi nhn s gi li bn tin vi m l 200 thng bo vi bn
gi rng tin nhn nhn thnh cng . Trong th vin PJSIP cung cp cho ta hm
pjsua.im_send vi cc tham s l accountID dng gi (cho vo trong trng From ca
sip message), URI ca ngi nhn v d: vinhnk@ekiga.net , thng ip dng text
chn vo trong sip message .
Trng thi ca bn tin ( gi thnh cng, tht bi) s c PJSIP thng bo cho ta bit
qua hm on_pager_status, trong Voip Android ta dng hm ny cp nht trng thi ca
bn tin nhn trong Database (Bng Message).
Trong Voip Android mi tin nhn l mt i tng ca class SipMessage. Cc thuc tnh
trong SipMessage tng ng vi cc trng trong bn tin sip
Body: Ni dung tin nhn.
From: a ch URI ca ngi gi VD: vinhnk@ekiga.net
To: a ch URI ca ngi nhn VD: vinh.soict@ekiga.net
Status: Trng thi ca tin nhn.

Figure 19 Class SipMessage

Class ny tng ng vi Bng Message trong Database .Hai hm trn dng ly ra v


lu tr i tng trong Database.
ii.

CallInfo:

Figure 20 Class CallInfo

Class ny cha thng tin v cuc goi Voip:


1. accid: Id ca Account thc hin cuc gi , id ny l gi tr c ly ra t th
vin PJSIP , khi thm mt account vo PJSIP thnh cng mt id s c gn cho
account .
2. callId: id ca cuc gi , gi tr ny c ly ra t bn tin INVITE ( trong phn
l thuyt ) , gi tr ny l duy nht cho tng cuc gi dng lm nh danh .
3. mediaStatus: trng thi media ca cuc gi , cc trng thi c nh ngha trong
PJSIP l : ACTIVE, LOCAL_HOLD, REMOTE_HOLD
Trong trng thi ACTIVE l trng thi quan trng nht .Voip Android da vo
trng thi ny thit lp lung RTP (voice) gia hai bn, chung Gi tr
ca thuc tnh ny c PJSIP cp nht thng qua hm on_call_media_state vi
tham s l id ca cuc gi.
4. callState: trng thi ca cuc gi , cc trng thi c nh ngha trong PJSIP l :
CALLING, INCOMING, EARLY, CONNECTING, CONFIRMED,
DISCONNECTED .
Cc trng thi ny c th vin PJSIP cp nht thng qua cc hm sau:
on_call_state : Hm ny s cp nht trng thi ca cuc gi c nh
danh xc nh .Ta da vo hm ny cp nht thuc tinh callState
on_incoming_call: Bo cho ta bit khi no c cuc gi n (PJSIP
nhn c bn tin INVITE), cuc gi ny l ca account no (trng
hp c nhiu account cng dc ng k vi sip server)

5. remoteContact: thuc tnh ny cha Sip URI ca ngi bn kia u dy ,ly ra t


trng From (trong trng hp c cuc gi n) ,trng To (cuc gi i) ca bn
tin INVITE
6. confPort: s hiu ca conference port dng giao tip vi remoteContact
Cc thng tin trong lp ny c dng cp nht bng CallLogs trong Database
iii.

IAccount:

Cc account c nhp vo t Form trong mn hnh add account cha cc thng tin quan
trng cho vic ng k vi Sip Server .Vic ng k c thc hin thng qua bn tin
REGISTER .

Figure 21 Class IAccount

acc_id: a ch URI ca account VD: vinhnk@ekiga.net


active: Trng ny xc nh xem account ny tng ang k thnh cng
vi sip server ln no cha , nu c th s t ng ng k khi chng trnh
khi ng hoc lc my khi ng xong
data: Cha thng tin v password ca account
datatype: C hai loi plain pass v digest
username: tn ti khon ng nhp
reg_uri: a ch ca sip server v cng ng k mc nh l 5060
VD: ekiga.net:5060
reg_timeout: thi gian ti a m Voip Android c gng ng nhp
ka_interval: khong thi gian m bo keep alive kt ni
transport: Kiu truyn bn tin sip c th l kiu UDP hoc l TCP

Class ny tng ng vi bng Account trong Database.


iv.

AccountState:

Lp ny cha thng tin v trng thi ca account .N c th l: ng k thnh cng,


ang ng k, li khi ng k, ng k ht hiu lc ng vi n l cc m li, thi gian
c hiu lc ca account

Figure 22 AccountState

Gi tr ca lp ny c cp nht t trong th vin PJSIP .Lp ny ng vai tr quan


trng cho vic xc nh cc account no ang active, cho php ngi dng chn thit
lp cuc gi hoc gi sip message.
Voip Android UI
Activity hin th mn hnh giao din ca ng dng cho php ngi dng tng tc, khi
nim activity ging nh form trn window
Cc file giao din trong Voip Android c trong th mc res/layout .ng vi mi
file ny s c mt id duy nht trong Class layout ca R.java (trong th mc gen) file
ny c Android sdk sinh ra .Mi mn hnh trong Voip Android s c mt file xml cho
n .File ny s c bung ra khi hm khi to activity c gi . bung file giao din ra
gi hm setContentView vi tham s l id ca file
i.

Account:

Phn ny cho php ngi dng nhp thng tin v username, password, tn hin th trong
cc giao dch thng qua bn tin sip, a ch ca sip server ng k .Sau thm
account ny vo th vin PJSIP, Sip service s ng k n vi server c ch ra
.Trng thi ca qu trnh ang k s c hin ra thng bo cho ngi dng.
Di y l biu lp cho phn giao din lin quan n Account trong Voip Android

Figure 23 S lp cho giao din thm account

Thit k ny da vo Factory design pattern cho php ta c th to ra nhiu loi form


thm account ty theo nhu cu s dng. Mc nh Factory ny s to ra giao din t class
SimpleAccountForm k th t lp c s l AbstractAccountForm thc thi giao din
AccountFormIface .Mn hnh ny cng c dng sa i thng tin ti khon nu
thuc tnh account ca AccountFormFactory khc null
a. getBasePreferenceResource: Xc nh resource (file xml) s dng to
giao din
b. fillLayout: dng khi chnh sa thng tin ti khon c
c. checkValidation: kim tra xem thng tin m ngi dng nhp vo c hp l
hay khng
d. saveAccount: thc hin vic thm hoc cp nht c s d liu v kt ni
vi Sipservice thng qua cu ni ISipService ng k vi sip server.
File giao din cho mn hnh ti khon ny c t trong th mc res/xml tn l
account_add_form.xml, file ny cha cc EditText cho ngi dng nhp cc thng tin
vo
ii.

Widgets:

Tuy cc widget ca Android l rt a dng nhng i khi ta cng cn nhng widget khc
ph hp vi nhu cu s dng ca mnh .Trong Voip Android c hai widget cho vic x l
cuc gi ang active .Hai widget ny u k tha t FrameLayout
IncallInfo: widget ny dng hin th cc thng s ca cuc gi nh:Tn hin
th ca ngi gi ,a ch URI ca h ,thi gian dm thoi , trng thi ca cuc
gi
o updateRemoteName: Cp nht tn hin th , s in thoi ca remote
party
o updateTitle: Cp nht trng thi ca cuc gi ln mn hnh
o updateElapsedTimer: Hin th thi gian dm thoi tri qua
File giao din ca widget ny l in_call_info.xml trong th mc layout
- IncallControls: widget dng iu khin cuc gi nh: cp my , bt/tt
loa/mic, gi cuc gi , t chi hoc tr li khi c cuc gi ti
o setCallState: vi tham s l mt i tng ca CallInfo cha thng tin
ca cuc gi hin thi .Ty vo trng thi m chnh sa giao din sao
cho ph hp VD: khi c ngi gi n th hin ra hai nt l Answer v
Decline cn n cc nt iu khin khc, cn khi trng thi l
CONFIRMED th n hai nt v hin ra cc nt iu khin (hold,
hangup, turn on/off)
o Trong widget ny c mt tham chiu n mt Interface l
OnTriggerListener .Interface ny c mt hm callback l onTrigger s
c gi khi ngi dng n cc phm iu khin trong widget ny
-

Figure 24 S lp ca Voip Android widget

iii.

Main UI:

Figure 25 S lp ca giao din x l cuc gi trong Voip Android

y l activity x l cuc gi ang m thoi ca Voip Android .Thc thi giao din
OntriggerListener, implement hm onTrigger, hm ny s c gi khi ngi dng n
cc phm iu khin ( c m t trn) trong mn hnh ny .Thng tin v cuc gi
c ly ra t Sip Service thng qua cu ni ISipService, lu gi trong lp CallInfo .T
cc thng tin ny widget IncallInfo s c cp nht hin th ln cho ngi dng .Vic
update c thc hin nh hai phng thc
-

updateUIFromCall: cp nht da vo trng thi cuc gi


updateUIFromMedia: cp nht mu sc ca mn hnh da vo trng thi
media

Mi khi n mt phm iu khin hm onTrigger c thc th trong InCallActivity


S c gi vi cc tham s l nh danh ca hnh ng, da vo cng vi cu ni
ISipService s gi cc dch v ca SipService ph hp vi yu cu ca ngi dng

Figure 26 S lp giao din chnh ca Voip Android

MainScreen l mn hnh chnh ca ng dng Voip Android, cung cp cc chc nng nh:
ci t, thao tc vi cc account, lch s cuc gi, tin nhn, thc hin cuc gi.
iv.

Setting:

Figure 27 S lp giao din ci t ca Voip Android

Activity ny dng cho ngi dng ci t cc thng s theo nhu cu ca h .Cc thng s
ny quan trng cho vic khi to Sip Service .V vy mi khi ngi dng chn xong ci
t ca h Voip Android bt buc phi khi ng li Sip Service.
Cc thng s cho vic ci t trong lp PreferenceWrapper .Voip Android c thit
k cho nhiu dng my khc nhau nn vic kim tra tnh tng thch l iu quan trng,
vic ny c thc hin trong class Compatiblity, n kim mic/loa loi CPU, API level
m d ng my ang dng .Mt s thng s ci t ng lu :
a. Loi giao thc dng truyn d liu c th l UDP hoc TCP,cng
(pha local dng kt ni)
b. Ci t v giao thc vt NAT, mc nh trong Voip Android
dng giao thc STUN ,ngi dng c th bt tt chc nng ny ty
theo ng cnh h ang dng: nu trong mng LAN th nn b chn
STUN, nu khng th phi chn STUN, h c th la chn STUN
server dng .Mt s STUN server: stun.ekiga.net hoc
stun.counterpath.com
c. La chn loi mng dng, trong Voip Android h tr c 3G v
wifi ,tuy nhin dng wifi cho cht lng thoi tt hn

v.

AccountList:

Figure 28 S lp giao din qun l ti khon ca Voip Android

y l activity qun l ti khon, cho php ngi dng xem thng tin, trng thi ca tng
ti khon .Cc Account c trnh by di dng listview, AccountAdapter dng hin
th tn cng trng thi ng nhp .Cc Account c ly ra t database (hm
getListAccount) .Activity ny cng cho php ngi dng sa, xa, thm ti khon .Bt
c s thay i no u c cp nht vo c s d liu v bo cho SipService bit thng
qua cu ni ISipService
vi.
vii.
viii.

Dialer:
CallLogList:
ConversationList:

Figure 29 S lp giao din qun l lch s cuc gi ca Voip Android

Vic qun l cc tin nhn, lch s cuc gi c thc hin trong activity ny .N cho php
ngi dng xem thng tin v lch s cuc gi (Ngy gi, di m thoi, loi cuc
gi), cc tin nhn nhn v gi (ni dng, ngy gi, loi tin nhn) .Cc cuc gi v
tin nhn c ly ra t bng Messages v CallLogs trong database thng qua cc hm
getAllCallLog v getAllConversation ca lp DBAdapter .Ngi dng cng c th to
mt tin nhn mi trong activity ny .Mi thao tc nh xa, to thm tin nhn s c lu
vo DB tin cho vic qun l .
ix.

OutgoingCallChooser:

Figure 30 S lp chn ti khon gi hoc gi tin ca Voip Android

Activity ny dng chn mt sip uri trong cc account ng k vi server to mt


cuc gi mi hoc gi mt tin nhn mi .DBAdapter s truy vn DB v ch ly ra cc
account trng thi active .S dng AccountAdapter hin th chng ln mt listview
cho ngi dng la chn .Khi ngi dng chn mt account no ,thng qua
ISipService s gi dch v gi hoc gi message ca SipService
2.2.2.2.7. nh gi
u im:
-

Kamailio server trong h thng ny c sn sng cao, lm vic vi nhiu giao dch
ng thi v cn c kh nng m rng .C kh nng qun l hng nghn cuc gi mi
giy .Kamailio c duy tr v pht trin bi mt cng ng ln cc lp trnh vin c
kinh nghim, ngy cng h tr kt ni ti nhiu h thng vin thng khc .V th hiu
nng ca h thng c m bo.
Mt khc, s dng b th vin PJSIP gip xy dng ng dng Voip pha client d
dng v nhanh chng ging cc webpages .Hn na PJSIP c vit t C nn c hiu
nng cao, h tr x l media, cc giao thc vt NAT gip gim chi ph pht trin.

ng dng Voip Android c thit k cho nhiu dng my nn c th chy trn nhiu
my android ,c th kt ni ti cc IP Phone khc s dng cng giao thc Sip ( test
vi Xlite 3.0 cho kt qu kh tt)
H thng tn dng h tng mng IP c sn gip tit kim chi ph m thoi khi c kt
ni mng .Vi mng wifi cho cht lng thoi tng i tt.

Nhc im:
Bn cnh cc u im va lit k trn th h thng cng c n tn ti mt s nhc im:
-

Giao din ca mt s chc nng trong h thng cha c thit k mt cch ti


u nht, nn nhng chc nng cha em li c s tin dng nht cho ngi
dng ca h thng.
Thiu chc nng qun l danh b (cc sip URI)
Cht lng m thoi cn thp , tr cn ln (hn ch c hu ca mng IP)
vi mng 3G
Cha c h tr v bo mt bn tin sip, lung voice
Cha c giao din ngi dng qun l server

KT LUN
Kt lun chung:
n i su vo tm hiu cc khi nim, kin trc ca Voip .Qua xy dng mt h
thng lm th nghim tnh kh thi ca cng ngh voip .Ngoi ra cc cng c c chn
la pht trin h thng gip cho m bm c hiu nng ca h thng .Nhn chung
n thc hin hon thnh cc nhim v c ra
Cc nhim v hon thnh:
-

Nghin cu cng ngh voip, tm hiu lp trnh android


Xy dng ng dng Voip client trn android da vo th vin PJSIP
Xy dng mt h thng Voip c bn (c pha server v client)

nh hng pht trin trong tng lai:


V c bn, h thng c xy dng t c nhng mc tiu ra .Tuy nhin, h
thng vn cn mt s tn ti, nu c thm c hi, em mong mun c th pht trin v
hon thin sn phm ny:
Ci tin v chun ha giao din cho ngi dng c tin li v thn thin
nht tng hiu qu s dng h thng

Nng cao bo mt cho h thng, bo mt cho bn tin sip (dng TLS) , bo


mt cho cuc gi, chng li nghe ln, gi mo
Cho php qun l ngi dng pha server qua giao din web
Hin ti vi cht lng mng 3G th tr cn kh ln, cn ci tin codecs
cho cht lng nn tt hn
TI LIU THAM KHO

Sch
Hunh Quyt Thng, Phn tch v thit k phn mm, 2010.
Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling
Language, Third Edition, Addison Wesley, 2003
Ti liu tham kho t Internet
http://www.sparxsystems.com.
http://en.wikipedia.org
http://pjsip.org
http://google.com/
http://sourceforge.net/projects/pjsip-jni/
http://www.kamailio.org/w/

PH LC
Mt s hnh nh minh ha

Figure 31 Qun l ti khon

Figure 32 Mn hnh ci t v gi tin nhn

Figure 33 Mn hnh qun l cuc gi

You might also like