B Giáo Dc và ào To
Trng i Hc M Tp.HCM
Khoa Công Ngh Thông Tin
KHÓA LUN TT NGHIP
tài:
Xây Dng ng Dng MobileGIS.
GVHD : TS. Phan t Phúc
SVTH : Cao Xuân Bo Lc
MSSV : 10400071
TP.HCM – Nm 2009
Khóa lun tt nghip Xây dng ng dng MobileGis
i
Li cám n
Em xin cám n quý thy cô trong khoa Công ngh thông tin trng i hc
M đã tn tình dy bo em nhiu kin thc b ích trong sut thi gian hc tp ti
trng. Kính chúc thy cô luôn di dào sc khe và thành công trong cuc sng.
c bit, em xin chn thành cám n đn thy Phan t Phúc, và công ty
Dolsoft trong thi gian va qua đã tn tình hng dn chúng em trong sut thi
gian thc hin đ tài này. ã h tr to cho em điu kin, c hi và tích ly nhiu
kin thc sut trong thi gian thc hin đ tài, cng nh đóng góp nhiu ý kin
quý báu, qua đó, đ em có th hòan thành đc tt đ tài nay.
Mc dù đã hòan thành đ tài, nhng chc chn đ tài vn còn nhiu thiu
điu thiu sót. Em mong nhn đc s góp ý ca quý thy cô, anh ch và các bn.
Mt ln na, em xin chân thành cám n!
TP H chí minh, tháng 1 nm 2009
Ngi thc hin
3.1.4. Đóng gói chng trình 15
3.2. Giao din. 16
3.2.1. Đ ha mc cao 17
3.2.2. Đ hc mc thp. 17
3.3. Âm thanh 18
3.4. MIDP là gì? 18
3.4.1. S kin hành đng 18
3.4.2. S kin phím. 18
Khóa lun tt nghip Xây dng ng dng MobileGis
iii
3.5. Lu tr d liu. 19
3.5.1. Record Management System 19
3.5.2. Hn ch. 20
3.5.3. Tc đ truy xut 21
3.5.4. C ch lung 21
CHNG 4: LP TRÌNH MNG
22
4.1. Khái quát. 22
4.2. Khái quát v dch v Web (Webservice), Soap và WSDL 23
4.2.1. Webservice. 23
4.2.2. SOAP và WSDL 23
4.3. Webservice và Soap. 23
CHNG 5: ĐNH V THIT B DI ĐNG
25
5.1. Mng đin thoi GSM 25
5.2. Thit b đnh v GPS 26
5.2.1. Thit b tích hp GPS. 26
5.2.2. Thit b dùng kèm vi BT-GPS 27
¬ Khái quát 27
¬ Hin thc. 27
7.2. Ti u hóa kích thc chng trình. 59
7.2.1. Nguyên tc. 60
7.2.2. Obfuscator 61
7.3. Ti u hóa tc đ. 62
7.3.1. Khái quát. 62
7.3.2. Nguyên tc. 62
7.3.3. Công c h tr 63
7.4. Ti u hóa vic s dng b nh. 64
7.4.1. Nguyên tc. 64
7.4.2. Công c h tr 65
CHNG 8: TNG KT ĐÁNH GIÁ
66
8.1. Kt qu đt đc. 66
8.1.1. Kin thc đt đc 66
8.1.2. Chng trình 66
8.2. Đánh giá chng trình 66
8.2.1. u đim. 66
8.2.2. Khuyt đim 67
8.3. Hng phát trin. 67
Khóa lun tt nghip Xây dng ng dng MobileGis
1
CHNG 1: GII THIU
1.1. Khái quát v công ngh di đng:
Công ngh thông tin ngày nay, đóng vai trò quan trng trong đi sng hng
ngày ca chúng ta. Vic ng dng công ngh thông tin vào các lnh vc vào
trong đi sng giúp cho công vic đc tin hành mt cách thun li, nhanh
chóng và hiu qu hn. Cùng vi phát trin ca công ngh thông tin, nhiu công
ngh mi ra đi nh BlueTooth, ADSL, Wireless, Mobile, WAP … làm cho
công ngh thông tin càng tr nên gn gi thân thit vi con ngi. Và mt trong
chúng, là công ngh di đng.
nm trc tip trên đin thai. Do đó, khi mun cp nht thêm thông tin d liu
trên bn đ, ngi dùng phi ti v phin bn mi v và cài đt.
tránh tình trng này, ta xây dng phn mm hot đng theo c ch Client-
Server. đó chng trình thành 2 phn c bn:
- Phn d liu nm phía Server.
- Phn chng trình nm phía Client.
ây là mt phng pháp đc s dng khá ph bin, khi d liu ca chng
trình có kích thc ln, mang tính toàn cu. Ví d nh chng trình goolge map
ca hng google, s dng nh v tinh đ hin th bn đ.
Tuy nhiên, đy là chng trình do ngi nc ngoài làm, Vì vy, vi nguyn
vng xây dng mt chng trình thun vit do ngi Vit làm em chn đ tài
“Xây dng ng dng MobileGIS”. Mc tiêu là xây dng mt phn mm trên
đin thai th hin bn đ chi tit ca tng vùng min Vit Nam, và tài nguyên
đc ly trc tip trên mng do công ty Vit bn đ cung cp ( Webservices ).
Chng trình hoàn chnh s có th chy
trên nhiu loi đin thoi khác nhau, và thc
hin nhng chc nng c bn nh sau:
Ü Xem bn đ.
Ü Xác đnh v trí hin ti ca ngi dùng
trên bn đ.
Ü Tìm đng đi ngn nht gia hai đim.
Ü Hng dn đng đi.
Ü Tìm kim các đa đim xung quanh nh
ch, trng hc, khách sn. Chng trình này nu đc thc hin tt s
tr thành mt ng dng ha ích, thit thc và tin dng đi vi nhiu ngi, đc
bit là các bn tr trong vic đi li.
Khóa lun tt nghip Xây dng ng dng MobileGis
Ü Cách ti u hóa kích thc và tc đ ca chng trình.
Khóa lun tt nghip Xây dng ng dng MobileGis
5
CHNG 2: TÌM HIU V CHUN J2ME
2.1. Gii thiu v java.
Vào nhng nm 1990, java đc ra đi t d án xanh ( Green Project ) và ban
đu đc xây dng đ kim soát các thít b dân dng nh TV, VCR, đèn, đin
thoi và mt s thit b cm tay, Java đc xây dng ch yu da trong b công c
phát trin ( Java Development Kit – JDK ) nh là th vin chun trong đó cha
trình biên dch, trình thông dch, giúp đ, tài liu, … ây chính là nn tng cho
vic phát trin ng dng Java.
Tuy nhiên, ngày nay Sun nhn ra rng vic to ra mt nn tng chung đ chy
trên tt c môi trng là điu không th thc hin đc,do đó công ty đã quyt
đnh chia công ngh java ca mình thành 3 phiên bn, mi phiên bn đc ng
dng trong mt lnh vc riêng bit, các phiên bn đó là:
Ü Java 2 Platform, Enterprise Edition (J2EE
TM
) phc v cho các nhu cu
v thng mi phc v khách hàng, các vn đ phân phi, các vn đ v
nhân s. Phiên bn này dành cho các máy ch ln ( server ) vi sc mng
x lý và dung lng b nh ln.
Ü Java 2 Platform, Standard Edition (J2SE
TM
) đc cung cp cho các th
trng máy tính đ bàn, máy tính gia đình hay máy tính vn phòng. Các
máy tính này, mc dù không mnh bng các máy ch nhng vn mnh hn
nhiu so vi các thit b di đng.
Ü Java 2 Platform, Micro Edition (J2ME
TM
) là mt phiên bn rút gn ca
tt c các loi thit b di đng khác nhau.
Ü Tng máy o Java ( Java Virtual Machine Layer ):
Khi mã ngun Java đc biên dch nó đc chuyn đi thành mã
bytecode. Mã bytecode này sau đó đc chuyn thành mã ngôn ng máy
ca thit b di đng. Tng máy o Java bao gm KVM (K Virtual Machine)
là b biên dch mã bytecode có nhim v chuyn mã bytecode ca chng
trình Java thành ngôn ng máy đ chy trên thit b di đng. Tng này cung
cp mt s chun hóa cho các thit b di đng đ ng dng J2ME sau khi
đã biên dch có th hot đng trên bt k thit b di đng nào có KVM. Vai
trò ca máy o Java hay KVM là dch mã bytecode đc sinh ra t chng
trình Java đã biên dch sang ngôn ng máy. Chính KVM s chun hóa
output ca các chng trình Java cho các thit b di đng khác nhau có th
có b vi x lý và tp lnh khác nhau. Không có KVM, các chng trình
Java phi đc biên dch thành tp lnh cho mi thit b di đng. Nh vy
lp trình viên phi xây dng nhiu đích cho mi loi thit b di đng.
Ü Tng cu hình ( Configuration Layer ): Tng cu hình ca CLDC đnh
ngha giao din ngôn ng Java (Java language interface) c bn cho phép
chng trình Java chy trên thit b di đng. Cung cp các hàm API c bn
là nhân ca J2ME. Lp trình viên có th s dng các lp và phng thc
ca các API này tuy nhiên tp các API hu dng hn đc cha trong tng
hin trng (profile layer).
Ü Tng hin trng ( Profile Layer ):Tng hin trng hay MIDP (Hin trng
thit b thông tin di đng-Mobile Information Device Profile) cung cp tp
các API hu dng hn cho lp trình viên. Mc đích ca hin trng là xây
dng trên lp cu hình và cung cp nhiu th vin ng dng hn.
MIDP đnh ngha các API riêng bit cho thit b di đng. Cng có th có các
hin trng và các API khác ngoài MIDP đc dùng cho ng dng. Ví d, có th có
hin trng PDA đnh ngha các lp và phng thc hu dng cho vic to các ng
dng PDA (lch, s hn, s đa ch,…). Cng có th có mt hin trng đnh ngha
các API cho vic to các ng dng Bluetooth. Thc t, các hin trng k trên và
CLDC đc thit k đ nhm vào th trng các thit b cp thp
(low-end), các thit b này thông thng là máy đin thai di đng
và PDA vi khong 512 KB b nh. Vì tài nguyên b nh hn ch
nên CLDC đc gn vi Java không dây (Java Wireless ), dng nh
cho phép ngi s dng mua và ti v các ng dng Java, ví d nh
là Midlet
Khóa lun tt nghip Xây dng ng dng MobileGis
9
¬ CDC - Connected Device Configuration.
CDC đc đa ra nhm đn các thit b có tính nng mnh hn
dòng thit b thuc CLDC nhng vn yu hn các h thng máy đ
bàn s dng J2SE. Nhng thit b này có nhiu b nh hn (thông
thng là trên 2Mb) và có b x lý mnh hn. Các sn phm này có
th k đn nh các máy PDA cp cao, đin thoi web, các thit b
gia dng trong gia đình.
C hai dng cu hình trên đu cha máy o Java ( Java Virtual
Machine) và tp hp các lp ( class ) Java c bn đ cung cp mt môi
trng cho các ng dng J2ME. Tuy nhiên, chú ý rng đi vi các thit b
cp thp, do hn ch v tài nguyên nh b nh và b x lý nên không th
yêu cu máy o h tr các tính nng ging máy o ca J2SE. Ví d, các
thit b thuc CLDC không có phn cng h tr các phép tính toán du
phy đng, nên máy o thuc CLDC không đc h tr kiu float và
double.
CLDC CDC
Ram >=32K, <=512K >=256K
Rom >=128k, <=512k >=512k
Ngun Nng Lng Có Gii hn (ngun pin) Không gii hn
Network Chm Nhanh
tính nng cho tng thit b chuyên bit. C 2 Configuration đu có nhng
profile liên quan và t nhng profile này có th dùng các class ln nhau.
n đây ta có th nhn thy do mi profile đnh ngha mt tp hp các
class khác nhau, nên thng ta không th chuyn mt ng dng Java vit
cho mt profile này và chy trên mt máy h tr mt profile khác. Cng
vi lý do đó, bn không th ly mt ng dng vit trên J2SE hay J2EE và
chy trên các máy h tr J2ME.
2.2.3. Optional package.
Là các API có th s dng trong nhiu thit b hay mt h các thit b.
Mt J2me option package là mt tp các API nm trên mt profile. Mt
Khóa lun tt nghip Xây dng ng dng MobileGis
11
optional package thng cha các chc nng đc lp vi các thit b. Mc
đính chính ca các optional package này là cho phép b sung các API trên
các profiles. Mt thit b có th h tr nhiu optional package khác nhau.
2.3. Mobile Information Device Profile (MIDP).
2.3.1. nh ngha:
Là Profile đc đnh ngha dành riêng cho các thit b di đng và là
thành phn chính trong J2ME. MIDP cung cp các chc nng c bn cho
hu ht các dòng thiêt b di đng ph bin nht nh các máy đin thoI di
đng và các máy PDA. Tuy nhiên MIDP không phi là cây đa thn cho
mi lp trình viên vì nh chúng ta đã bit, MIDP đc thit k cho các máy
di đng có cu hình rt thp. Có th nói MIDP là profile ni ting nht bi
vì nó là kin thc c bn cho lp trình Java trên các máy di đng (Wireless
Java).
2.3.2. Yêu cu phn cng:
- Màn hình có kích thc ti thiu là 96 x 54 pixel.
cung cp mt chc nng khác tng đng gi là Record Management
system (RMS) đ cung cp kh nng lu tr cho các thit b này.
2.3.5. Nhng tính nng MIDP cung cp.
- Các lp và kiu d liu: Phn ln các lp mà các lp trình viên Java quen
thuc vn còn đc gi li ví d nh các lp trong gói java.util nh
Stack, Vector và Hastable cng nh Enumeration.
- H tr đi tng Display: úng nh tên gi mt chng trình MIDP s
h tr duy nht mt đi tng Display là đi tng qun lý vic hin th
d liu trên màn hình đin thoi.
- H tr Form và các giao din ngi dùng.
- H tr Timer và Alert.
- Cung cp tính nng Record Management System (RMS) cho vic lu tr
d liu.
Ngoài ra vào tháng 11 nm 2003 Sun đã tung ra MIDP 2.0 vi hàng
lot tính nng khác đc cung cp thêm so vi bn 1.0. Nhng ci tin ni
bt so vi MIDP 1.0.
- Nâng cp các tính nng bo mt nh: Download qua mng an toàn hn
qua vic h tr giao thc HTTPS. Kim soát vic kt ni gia máy di
đng và server: ví d nh các chng trình không th kt ni ti server
nu thiu s chp thun ca ngi s dng.
- Thêm các API h tr Multimedia. Mt trong nhng ci tin hp dn nht
ca MIDP 2.0 là tp các API media ca nó. Các API này là mt tp con
ch h tr âm thanh ca Mobile Media API (MMAPI).
Khóa lun tt nghip Xây dng ng dng MobileGis
13
- M rng các tính nng ca Form. Nhiu ci tin đã đc đa vào API
javax.microedition.lcdui trong MIDP 2.0, nhng các thay đi ln nht
(ngoài API cho game) là trong Form và Item.
- H tr các lp trình viên Game bng cách tung ra Game API: Có l Sun
CLDC và MIDP.
2) Phn chính MIDlet đc đnh ngha nh là lp m rng ca lp MIDlet.
3) Hàm khi to, đc thc thi mt ln khi MIDlet khi to ln đu tiên,
hàm khi to ch đc gi li khi MIDlet thoát ra và khi đng li
chng trình.
4) startApp(): đc b qun lý ng dng gi khi MIDlet đc khi to hay
tr v trang thái tm dng.
5) pauseApp(): đc b qun lý ng dng gi khi ng dng tm dng.
6) destroyApp(): đc b qun lý ng dng gi khi thoát MIDlet.
Khóa lun tt nghip Xây dng ng dng MobileGis
15
3.1.3. Chu kì sng.
Chu kì sng ca mt MIDlet
Khi ngi dùng yêu cu khi đng ng dng MIDlet, b qun lý ng
dng s thc thi MIDlet (thông qua lp MIDlet). Khi ng dng thc thi, nó
s đc xem là đang trng thái tm dng. B qun lý ng dng gi hàm
to và hàm startApp(). Hàm startApp() có th đc gi nhiu ln trong sut
chu k sng ca ng dng. Hàm destroyApp() ch có th gi t trng thái
hot đng hay tm dng.
3.1.4. óng gói chng trình.
Các lp đã biên dch ca ng dng MIDlet đc đóng gói trong mt tp
tin JAR (Java Archive File). ây chính là tp tin JAR đc download
xung đin thoi di đng.
Tp tin JAR cha tt c các tp tin class t mt hay nhiu MIDlet, cng
nh các tài nguyên cn thit. Hin ti, MIDP ch h tr đnh dng hình .png
(Portable Network Graphics). Tp tin JAR cng cha tp tin kê khai
(manifest file) mô t ni dung ca MIDlet cho b qun lý ng dng. Nó
Giao din đ ha trong MIDP.
C hai lp đ ha mc thp và mc cao đu là lp con ca lp Displayble.
Trong MIDP, ch có th có mt lp displayable trên màn hình ti mt thi
đim. Có th đnh ngha nhiu màn hình nhng mt ln ch hin th đc mt
màn hình.
Khóa lun tt nghip Xây dng ng dng MobileGis
17
3.2.1. ha mc cao.
ha mc cao là lp con ca lp Screen. Nó cung cp các thành phn nh
text box, form, list, và alert. Ta ít điu khin sp xp các thành phn trên màn
hình. Vic sp xp tht s ph thuc vào nhà sn xut.
- Form là mt khung cha các thành phn, mà mi thành phn đc tha k
t lp Item.
- List cha mt dãy các la chn đc th hin mt trong ba dng. Cho phép
nhiu la chn hay ch đc phép chn mt ging ChoiceGroup. Dng th
3 là là dng không tng minh. Các List không tng minh đuc dùng đ
th hin mt thc đn các chn la.
- TextBox cho phép nhp nhiu dòng. Thành phn TextBox và TextField có
nhng ràng buc ging nhau trong vic ch đnh loi ni dung đc phép
nhâp vào. Ví d ANY, EMAIL, URI…
- Mt Alert đn gin là mt hp thoi rt nh. Có 2 loi Alert:
o Modal: là loi hp thoi thông báo đc trình bày cho đn khi ngi
dùng n nút đng ý.
o Non-modal: là loi hp thoi thông báo ch đc trình bày trong mt s
giây nht đnh.
3.2.2. ha mc thp.
trong đ tài này, gn tin trong vic lp trình, em ch yu s dng gói th vin
này.
3.4. MIDP là gì?
3.4.1. S kin hành đng.
Khi mt đi tng xy ra trên thit b di đng, mt đi tng Command
gi thông tin v s kin đó. Thông tin này bao gm loi hành đng thc thi,
nhãn ca mnh lnh và đ u tiên ca chính nó. Trong J2ME, các hành
đng nói chung đc th hin di dng các nút trên thit b.
Nu có quá nhiu hành đng đc hin th trên thit b, thit b s to ra
mt thc đn đ cha các hành đng.
Trong MIDP thì các lnh đc biu din bng lp Command và đc
x lý thông qua giao tip CommandListener hoc ItemCommandListener.
- CommandListerner dùng cho các thành phn nh Form, List, và
TextBox và Canvas.
- ItemCommandListener dùng cho các thành phn item trong Form.
3.4.2. S kin phím.
Ta có th d dàng kim soát thao tác phím trên đi tng canvas. Khi
ngi dùng nhn mt phím trên đin thai, mt s kin đc lp tc gi
Khóa lun tt nghip Xây dng ng dng MobileGis
19
cho ng dng, ng dng s nhn s kin, phân tích phím nhn và x lý
hành đng tng ng.
i tng Canvas cung cp các phng thc sau:
- void keyPressed(int keyCode).
- void keyReleased(int keyCode).
- void keyRepeated(int keyCode).
- boolean hasRepeatEvents().
- String getKeyName(int keyCode).
Tên đc dùng đ phân bit các RecordStore trong b các MIDlet
(MIDlet suite). Cn chú ý khái nim MIDlet suite là tp các MIDlet có
chung không gian tên (name space), có th chia s cùng tài nguyên (nh
RecordStore), các bin tnh (static variable) trong các lp và các MIDlet
này s đc đóng gói trong cùng mt file .jar khi trin khai. Nu ng dng
ca bn ch có mt MIDlet thì các RecordStore đc s dng cng phân
bit ln nhau bng các tên. Tên ca RecordStore có th dài đn 32 ký t
Unicode và là duy nht trong mt MIDlet suite.
Nh trong hình, các MIDlet có th có nhiu hn mt tp lu tr bn ghi,
chúng ch có th truy xut d liu lu tr bn ghi cha trong b MIDlet ca
chúng. Do đó, MIDlet 1 và MIDlet 2 có th truy xut d liu trong Record
Store 1 và Record Store 2 nhng chúng không th truy xut d liu trong
Record Store3. Ngc li, MIDlet 3 ch có th truy xut d liu trong
Record Store 3 và không th truy xut d liu d liu trong Record Store 1
và Record Store 2.
3.5.2. Hn ch.
Dung lng vùng nh (non-volatile memory) dành riêng cho vic lu
tr d liu trong RMS thay đi tùy theo thit b di đng. c t MIDP yêu
cu rng các nhà sn xut thit b di đng phi dành ra vùng nh có kích
thc ít nht 8K cho vic lu tr d liu trong RMS. c t không nêu gii
hn trên cho mi Record. RMS cung cp các API đ xác đnh kích thc