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
Cao Xuân Bo Lc
Khóa lun tt nghip Xây dng ng dng MobileGis
ii
Mc lc
CHNG 1: GII THIU
1
1.1. Khái quát v công ngh di đng: 1
1.2. Gii thiu đ tài: 1
1.3. Đi tng và phm vi nghiên cu chính: 3
CHNG 2: TÌM HIU V CHUN J2ME
5
2.1. Gii thiu v java 5
2.1. Kin trúc j2me 6
2.2. Các thành phn chính trong j2me 8
2.2.1. Confiuration 8
2.2.2. Profiler. 10
2.2.3. Optional package. 10
2.3. Mobile Information Device Profile (MIDP) 11
2.3.1. Đnh nghĩa: 11
2.3.2. Yêu cu phn cng: 11
2.3.3. Yêu cu phn mm: 11
2.3.4. Nhng hn ch 11
2.3.5. Nhng tính năng MIDP cung cp 12
CHNG 3: LP TRÌNH ĐIN THOI VI MIDP
14
3.1. MIDP là gì? 14
3.1.1. Đnh nghĩa 14
3.1.2. Thành phn c bn. 14
3.1.3. Chu kì sng. 15
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
CHNG 6: PHÂN TÍCH THIT K NG DNG
30
6.1. Kho sát hin trng 30
6.2. Phân tích và xác đnh yêu cu. 30
6.3. Thit k ng dng 31
6.3.1. V bn đ. 31
6.3.2. Di chuyn bn đ 32
6.3.3. Phóng to, thu nh 33
6.3.4. Tìm đng đi ngn nht gia hai đim. 33
6.3.5. Hng dn đng đi 35
6.3.6. Tìm đa đim xung quanh 36
6.3.7. Kt ni vi thit b GPS 37
6.3.8. Chn đi tng trên bn đ 38
6.3.9. Thêm đa đim cá nhân trên bn đ. 38
Khóa lun tt nghip Xây dng ng dng MobileGis
iv
6.3.10. Hng dn s dng 39
6.3.11. Lu thông tin làmvic 39
6.3.12. Np thông tin làm vic c 40
6.3.13. S đ giao din thit k chính ca màn hình. 41
6.1. Đc t các gói lp trong ng dng 43
6.1.1. Data Package 43
6.1.2. GPRS Package 47
6.1.3. GPS Package. 48
6.1.4. Library Package 51
6.1.5. Sound Package 52
6.1.6. MobileGIS Package. 52
CHNG 7: CI TIN VÀ TI U HÓA
59
7.1. Ni dung 59
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.
thi đim hin nay, trên th gii cng nh Vit Nam, khi th trng đin
thoi di đng đang tr nên sôi đng hn bao gi ht. Ta có th thy, không ging
nh nhng chic đin thai trc đây ch đn gin nhim v là thoi, mà chic
đin thoi ngày nay còn thc hin nhiu chc nng khác nh: gi nhn mail, truy
cp Internet, xem phim, nghe nhc, chi game, … qua đó, chic đin thoi dn
tr nên quen thuc vi con ngi và tr thành mt phn không th thiu trong
cuc sng hin đi ca chúng ta ngày nay.
Mt khác, do các nhà sn xut đin thoi di đng nm bt đc nhu cu ca
gii tr là u chung sn phm công ngh cao, luôn cho ra đi nhng loi sn
phm đin thoi di đng hin đi vi nhng tính nng đa dng và ni tri hn
trc. Song hành vi s phát trin ca phn cng, là nhu cu phát trin phn
mm ng dng trên đin thoi di đng, nhm phc v tt hn cho ngi s dng
đin thoi. Phn mm cho các thit b di đng cng rt đa dng, t nhng ng
dng mang tính gii trí nh game, xem phim, chat đn nhng ng dng làm vic
nh t đin, word, dit virus, gi nhn mail … Vì vy, ngày càng có nhiu sinh
viên các trng đi hc, tham gia nghiên cu tìm hiu công ngh di đng vi
mong mun tìm đc cho mình mt c hi vic làm tt sau này.
1.2. Gii thiu đ tài:
Trong nhng nm gn đây, khi mà hot đng sn xut phn mm trên đin
thoi di đng phát trin khá mnh m, vi s ra đi ca nhiu phm mm hu ích
trên đin thoi di đng . Mà trong đó phi k đn là phn mm bn đ trên đin
thoi đi đng đã và đang thu hút nhiu ngi s dng vi nhng tin ích thit
thc mà nó mang đn.
Khóa lun tt nghip Xây dng ng dng MobileGis
2
Tuy nhiên, đ tài v phát trin mt ng dng bn đ trên đin thoi di đng có
th nói là không mi m gì. Vì trong my nm qua, đã có nhiu khóa lun ca
các sinh viên ngành CNTT nghiên cu, tìm hiu v đ tài này. Là nhng đ tài
xây dng bn đ dng Vector, thng b hn ch v mt d liu, ch th hin bn
đ ca mt thành ph nào đó, do d liu chính thng đi kèm vi chng trình,
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
3
1.3. i tng và phm vi nghiên cu chính:
Hin nay có rt nhiu la chn đ vit ng dng cho đin thoi di đng, có th
k đn 5 môi trng phát trin ph bin nht: Java 2 Platform Micro Edition
(J2ME), BREW, Sysmbian OS, Openwave và Microsoft Windows CE 3.0. Xem
hình sau.
Trong đó phi k đn đu tiên J2ME, đc cho là nn tng phát trin ng dng
ph bin nht. Vì ban đu Java đc thit k đ chy trên các thit b có b nh
hn ch và thách thc v nng lc x lý. Ngoài ra, J2ME còn có kh nng kt hp
vi các “đi th” BREW, Symbian OS và Openwave. Mt khác, thách thc ln
nht ca J2ME và cng chính là u đim, là s nht quán cho nhiu loi thit b.
Hu ht các hãng sn xut TD hàng đu đu ng h Java, và Java còn nhn
đc s ng h rng rãi ca các nhà cung cp dch v di đng.
Nói đn lp trình trên đin thoi di đng, chúng ta có th hình dung đc
nhng tr ngi ln trong quá trình phát trin ng dng là:
- Nng lc ca b vi x lý trên đin thoi là rt yu.
- Dung lng b nh là rt nh.
- Tc đ đng truyn mng ( GPRS ) rt hn ch.
Và đ thc hin nhng yêu cu chính đc nêu trong phn gii thiu, trong
lun vn này, em s tp trung tìm hiu nhng vn đ chính sau:
Ü Công ngh Java, mà trng tâm chính là nghiên cu, tìm hiu v J2ME.
Khóa lun tt nghip Xây dng ng dng MobileGis
4
Ü Các k thut lp trình trên đin thai vi J2ME.
Ü Các vn đ liên quan đn mng trong J2ME( truy cp Webservices, ti
nh trên mng).
Ü Cách xác đnh v trí ca đin thoi.
Ü 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
java cho các thit b di đng gii hn v b nh và b x lý. J2ME đc
chia thành 2 loi: mt loi cho các thit b cao cp ( Máy PDA , ) và mt
loi cho các thit b cp thp hn ( đin thai di đng và PDA vi khang
512 KB b nh ).
Hình v sau minh ha các phiên bn hin có ca java và lnh vc ng dng ca
chúng, bt đu t bên trái là các nn tng cao cp sang bên phi là các nn tng
cp thp hn.
Khóa lun tt nghip Xây dng ng dng MobileGis
6
Kin trúc java
2.1. Kin trúc j2me.
Mc tiêu ca J2ME là cho phép ngi lp trình vit các ng dng đc lp vi
thit b di đng, không cn quan tâm đn phn cng tht s. đt đc mc tiêu
này, J2ME đc xây dng bng các tng (layer) khác nhau đ giu đi vic thc
hin phn cng khi nhà phát trin. Sau đây là các tng ca J2ME đc xây dng
trên CLDC
Kin trúc j2me
Mi tng trên tng hardware là tng tru tng hn cung cp cho lp trình
viên nhiu giao din lp trình ng dng (API-Application Program Interface) thân
thin hn.
Ü Tng phn cng thit b ( Device Hardware Layer ): ây chính là thit
b di đng tht s vi cu hình phn cng ca nó v b nh và tc đ x lý.
D nhiên tht ra nó không phi là mt phn ca J2ME nhng nó là ni xut
Khóa lun tt nghip Xây dng ng dng MobileGis
7
phát. Các thit b di đng khác nhau có th có các b vi x lý khác nhau vi
các tp mã lnh khác nhau. Mc tiêu ca J2ME là cung cp mt chun cho
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à
tp các API đang đc xây dng. Chun hin trng PDA là đc t JSR - 75 và
Khóa lun tt nghip Xây dng ng dng MobileGis
8
chun bluetooth API là đc t JSR - 82 vi JSR là vit tt ca Java Specification
Request.
2.2. Các thành phn chính trong j2me.
2.2.1. Confiuration.
Trong môi trng J2ME, mt ng dng đc vit cho mt profile riêng
bit nào đó. Profile này li đc m rng t mt configuration. Vì th tt c
các đc đim ca mt configuration s đc gi li trong profile có th
đc s dng bi ng dng vit cho profile này.
Mt configuraion đnh ngha mt nn Java cho các thit b có các đc
tính tng t nhau( nh s lng b nh, tc đ x lý, kiu kt ni mng).
Mt configuration s xác đnh.
- Các tính nng ca ngôn ng Java đc h tr.
- Các tính nng ca máy o Java đc h tr.
- Th vin chun và các API.
Do đây là đc t nên các nhà sn xut thit b nh Samsung, Nokia…
bt buc phi thc thi đy đ các đc t do Sun quy đnh đ các lp trình
viên có th da vào môi trng lp trình nht quán và thông qua s nht
quán này, các ng dng đc to ra có th mang tính đc lp thit b cao
nht có th. Ví d nh mt lp trình viên vit chng trình game cho đin
thoi Samsung thì có th sa đi chng trình ca mình mt cách ti thiu
nht đ có th chy trên đin thai Nokia. Qua đây ta thy khu hiu “Write
Once, Run Everywhere” ca Java đã không còn đúng na, nhng ta cng
phi đánh giá cao s n lc ca Sun trong vic to ra mt môi trng phn
mm chung cho vô s chng loi thit b di đng có trên th trng. Hin
nay Sun đã đa ra 2 dng Configuration.
¬ CLDC - Connected Limited Device Configuration.
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
Bng so sánh CLDC và CDC
Hình v sau minh ha quan h gia CLDC, CDC và Java 2 Standard
Edition ( J2SE ). Theo đó chúng ta thy mt phn ln các chc nng trong
CLDC và CDC có đc do k tha J2SE. Mi lp đc k tha t J2SE
phi ging hoc gn ging vi lp tng ng trong J2SE. Thêm vào đó,
CLDC và CDC có mt s đc tính khác đc thit k cho các thit b nhúng
mà J2SE không có ( nh các thành phn giao din ).
Khóa lun tt nghip Xây dng ng dng MobileGis
10
Quan h gia J2ME và J2SE
¬ S khác nhau gia ngôn ng Java trên CLDC vi Java thông thng.
- Kh nng x lý s thc
: Các phép toán trên s thc thng cn nhiu
thi gian x lý hn. Ngoài ra, phn ln các thit b không có phn cng
h tr cho vic tính toán s thc, do đó CLDC không h tr s thc.
- Finalization
: trong các lp đc vit bng J2SE, chúng ta thng đnh
ngha mt phng thc có tên là finalize(). Phng thc này s đc
gi trc khi b thu gom rác ( garbage collector ) thu gom đi tng.
Phng thc này là ni chúng ta đt các mã lnh đ gii phóng tài
nguyên đã s dng. Tuy nhiên, CLDC không h tr phng thc
finalize().
- Các lp k tha t J2SE
: CLDC yêu cu khong 160 KB đ chy máy
o java và các th vin c bn. Do đó, ch có mt s lp trong J2SE là
đc gi li trong CLDC.
2.2.2. Profiler.
Là m rng Configuration bng cách thêm vào các class đ b tr các
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.
- Có ít nht mt trong các thit b nhp sau: bàn phím, màn hình cm ng.
- Ít nht 128 KB đ chy các thành phn ca MIDP.
- Ít nht 8 KB đ chy các ng dng cha d liu.
- Ít nht 32 KB đ chy Java.
- Kt ni mng không dây.
2.3.3. Yêu cu phn mm:
Do h điu hành thay đi tùy theo mi loi thit b, nên MIDP không qua
khc khe trong các yêu cu phn mm.
- H điu hành trên thit b cung cp kh nng x lý ngai l, x lý ngt,
và phi chy đc máy o Java.
- H tr v nh Bitmap.
- H tr đc và ghi d liu t b nh.
2.3.4. Nhng hn ch.
- Phép tính du phy đng (floating point): Phép tính này đòi hi rt nhiu
tài nguyên CPU và phn ln các CPU cho các thit b di đng không h
tr phép tính này, do đó MIDP cng không có.
- B np lp (Class Loader).
Khóa lun tt nghip Xây dng ng dng MobileGis
12
- H tr t khóa finalize() nh trong J2SE: Vic “dn dp“ tài nguyên
trc khi nó b xóa đc đy v phía các lp trình viên.
- H tr hn ch thao tác bt li.
- Phn ln các th vin API cho Swing và AWT không th s dng đc
trong MIDP.
- Không h tr các tính nng qun lý file và th mc: ây có th làm bn
ngc nhiên nhng thc t là các thit b J2ME không có h tr các thit
b lu tr thông thng nh cng v.v. Tuy nhiên, điu đó không có
ngha là bn phi mt đi mi d liu quan trng mi khi tt máy, Sun đã
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
đã kp nhn ra th trng đy tim nng ca các thit b di đng trong
lnh vc Game. Vi MIDP 1.0 thì các lp trình viên phi t mình vit
code đ qun lý các hành đng ca nhân vt cng nh qun lý đ ha.
Vic này s làm tng kích thc file ca sn phm cng nh vic xut
hin các đon mã b li. c hng li nht t Game API trong MIDP
2.0 không ch là các lp trình viên Game mà còn là các lp trình viên cn
s dng các tính nng đ ha cao cp. Ý tng c bn ca Game API là
vic gi đnh rng mt màn hình game là tp hp các layer (lp). Ví d
nh: trong mt game đua xe thì màn hình nn là mt layer, con đng là
mt layer và chic xe đc xem nh đang nm trên layer khác. Vi
Game API nhà phát trin còn đc cung cp các tính nng nh qun lý
các thao tác bàn phím.
- H tr kiu nh RGB: mt trong nhng ci tin hp dn cho các nhà phát
trin MIDP là vic biu din hình nh di dng các mng s nguyên,
cho phép MIDlet thao tác vi d liu hình nh mt cách trc tip.
Khóa lun tt nghip Xây dng ng dng MobileGis
14
CHNG 3: LP TRÌNH IN THOI VI MIDP
3.1. MIDP là gì?
3.1.1. nh ngha.
Các ng dng J2ME đc gi là MIDlet( Mobile Information Device
Applet). Các MIDlet đc to ra da trên ca tp các lp MIDlet c bn
javax.microedition.midlet.MIDlet nên nó đc điu khin bi trình qun lý
ng dng ca MIDP.
3.1.2. Thành phn c bn.
1) Phát biu import đc dùng đ include các lp cn thit t các th vin
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ó
cng phi cha các tp tin d liu mà MIDlet cn. Do đó tp tin JAR là toàn
b ng dng MIDlet, MIDlet có th load và gi các phng thc t bt k
lp nào trong tp tin JAR, trong MIDP, hay CLDC và không th truy xut
các lp không phi là b phn ca tp tin JAR hay vùng dùng chung ca
thit b di đng.
Tp tin kê khai (manifest.mf) và tp tin JAD (Java Application
Descriptor) mô t các đc đim ca MIDlet. S khác bit ca hai tp tin này
là tp tin kê khai là mt phn ca tp tin JAR còn tp tin JAD không thuc
tp tin JAR. u đim ca tp tin JAD là các đc đim ca MIDlet có th
Khóa lun tt nghip Xây dng ng dng MobileGis
16
đc xác đnh trc khi download tp tin JAR. Nói chung, cn ít thi gian
đ download mt tp tin vn bn nh hn là download mt tp tin JAR.
Ni dung ca tp tin JAR:
- Manifest-Version // Phiên bn tp tin Manifest.
- MIDlet-Name // Tên b MIDlet (MIDlet suite).
- MIDlet-Version // Phiên bn b MIDlet.
- MIDlet-Vendor // Nhà sn xut MIDlet.
- MIDlet- for each MIDlet // Tên ca MIDlet.
- MicroEdtion-Profile // Phiên bn hin trng.
- MicroEdtion-Configuration // Phiên bn cu hình.
3.2. Giao din.
Mt ng dng MIDlet ch có mt đi tng th hin Display. i tng
này dùng đ ly thông tin v đi tng trình bày. Ví d màu đc h tr, và
bao gm các phng thc đ yêu cu các đi tng đc trình bày. i tng
Display cn thit cho b qun lý vic trình bày trên thit b điu khin thành
phn nào s đc hin th lên trên thit b.
Ta có th chia các lp MIDP thành hai mc đ ha: đ ha mc thp và đ
ha mc cao. ha mc cao dùng cho vn bn hay form. ha mc thp
dùng cho các ng dng trò chi, phi v lên màn hình.
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.
Mc dù các hàm API cp cao cung cp mt tp đy đ các thành phn đ
xây dng giao din ng dng ngi dùng. Tuy nhiên các thành phn cp
cao không cung cp phng tin đ v trc tip lên thit b th hin. Vì
thiu kh nng này nên các ng dng đc to ra s gp nhiu gii hn. Ví
d hu ht các nhà phát trin game di đng da trên kh nng v các đng
thng và các hình dng nh là mt phn tích hp quá trình phát trin.
Nu các hàm API cp cao cho phép chúng ta to ra giao din cho các ng
dng theo chun, thì các hàm API cp thp cho phép chúng ta có th th
hin các ý tng ca mình.
Canvas và Graphics là 2 lp trái tim ca các hàm API cp thp. Canvas
là mt khung v cho phép ngi phát trin có kh nng v lên thit b trình
bày cng nh là vic x lý s kin. Còn lp Graphics cung cp các công c
tht s đ v nh drawRoundRect() và drawString().
Khóa lun tt nghip Xây dng ng dng MobileGis
18
3.3. Âm thanh.
Trong phiên bn MIDP 1.0, các lp trình viên trên đin thai di đng gp khó
khn trong vic x lý âm thanh, vì MIDP 1.0 không h tr vic x lý âm thanh
nên các nhà sn xut phi cung cp thêm các hàm API chuyên dng cho vic này.
ây là c gng ca nhà sn xut đ ci tin cht lng các đin thai tuy nhiên
nó li gây khó khn đi vi lp trình viên khi phi to ra nhiu phiên bn khác
nhau cho tng lai máy ca th.
phiên bn MIDP 2.0, điu này đã đc SUN c gng khc phc bng vic
h tr 2 b th vin API:
- MIDP 2.0 Sound API.
- Mobile Media API ( MMAPI ).
Vic chia thành hai b API, ny sinh t thc t là nhng thit b đang có mt
s rt tài nguyên-ch. Nó có th không đc kh thi đ h tr mt lot các loi
hình đa phng tin, chng hn nh video, trên mt s đin thoi di đng. Tuy
nhiên, không phi tt c các MIDP 2.0 h tr đy đ Mobile Media API. Và
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).
3.5. Lu tr d liu.
MIDP không s dng h thng file đ lu tr d liu. Thay vào đó MIDP
lu toàn b thông tin vào non-volatile memory bng h thng lu tr gi là
Record Management System (RMS).
3.5.1. Record Management System.
RMS là h thng đc t chc và qun lý di dng các record (bn
ghi). Mi bn ghi (sau này gi là Record) có th cha bt k loi d liu
nào, chúng có th là kiu s nguyên, chui ký t hay có th là mt nh và
kt qu là mt Record là mt chui (mng) các byte. Nu bn mã hoá d
liu ca bn di dng nh phân (binary), bn có th lu tr d liu bng
Record sau đó đc d liu t Record và khôi phc li d liu ban đu. Tt
nhiên kích thc d liu ca bn không đc vut quá gii hn qui đnh
ca thit b di đng. RMS lu d liu gn nh mt c s d liu, bao gm
nhiu dòng, mi dòng li có mt s đnh danh duy nht:
Mt tp các bn ghi (sau này gi là RecordStore) là tp hp các Record
đc sp xp có th t. Mi Record không th đng đc lp mà nó phi
thuc vào mt RecordStore nào đó, các thao tác trên Record phi thông qua
RecordStore cha nó. Khi to ra mt Record trong RecordStore, Record
đc gán mt s đnh danh kiu s nguyên gi là Record ID. Record đu
tiên đc to ra s đc gán Record ID là 1 và s tng thêm 1 cho các
Record tip theo. Cn chú ý rng Record ID không phi là ch mc (index),
các thao tác xóa Record trong RecordStore s không gây nên vic tính toán
li các Record ID ca các Record hin có cng nh không làm thay đi
Record ID ca các Record đc to mi, ví d: khi ta xóa record id 3 khi
thêm mt record mi s có id là 4. Data là mt dãy các byte đi din cho d
Khóa lun tt nghip Xây dng ng dng MobileGis
20
liu cn lu. c t MIDP không đnh ngha chuyn gì xy ra khi đt đn s
ID bn ghi ti đa, điu này ph thuc vào ng dng.
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