Tải bản đầy đủ (.pdf) (89 trang)

Xây dựng ứng dụng bản đồ cho điện thoại di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 89 trang )

Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
1
TRNG I HOC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
o O o




H QUC BO - 10300005



XÂY DNG NG DNG BN 
CHO IN THOI DI NG



LUN VN C NHÂN TIN HC




GIÁO VIÊN HNG DN:
Thc s NGUYN MINH NAM







NIÊN KHOÁ 2003-2007
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
2
Mc lc

Chng 1: Gii thiu lp trình trên thit b di đng vi J2ME 6
1.1. Tng quan v J2ME 6
1.1.1. Lch s 6
1.1.2. Lý do chn J2ME 6
1.1.3. Kin trúc ca J2ME 7
1.2. CLDC (Connected Limited Device Configuration) 11
1.3. Gii thiu MIDP 15
1.3.1. nh ngha: 15
1.3.2. Nhng chc nng MIDP không thc hin đc: 15
1.3.3. Nhng chc nng MIDP cung cp 16
1.3.4. S khác nhau ca MIDP 1.0 và MIDP 2.0 16
1.4. Vòng đi ca mt MIDlet 18
1.5. Xây dng mt MIDlet 18
1.5.1. Lp trình viên: To các tp tin ngun Java 19
1.5.2. Biên dch mã ngun thành mã bytecode 19
1.5.3. Kim tra tính hp l ca mã bytecode 19
1.5.4. To tp tin JAR 20
1.5.5. Ngi dùng Download ng dng v thit b di đng 20
1.5.6. Kim tra mã bytecode Trên thit b di đng: 21
1.5.7. Lu tr chng trình trên thit b 21
1.5.8. Thc thi ng dng 21
1.6. Môi trng phát trin J2ME 22

Chng 2: Tng quan v GIS 23
2.1. Gii thiu GIS: 23

2.1.1. Các thành phn ca GIS 23
2.1.2. Hot đng ca GIS: 25
2.2. Mc đích: 27
2.2.1. Nhp d liu 28
2.2.2. Thao tác d liu 28
2.2.3. Qun lý d liu 29
2.2.4. Hi đáp và phân tích 29
Hình 2.4: Phân tích chng xp 31
2.2.5. Hin th 31
2.3. D liu GIS: 32
2.4. Các công ngh liên quan: 34
2.4.1. Desktop Mapping (thành lp bn đ) 34
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
3
2.4.2. CAD (tr giúp thit k nh mày tính) 34
2.4.3. Vin thám và GPS (h thng đnh v toàn cu) 35
2.4.4. DBMS (H qun tr c s d liu) 35

Chng 3: Phân tích – thit k ng dng 36
3.1. Lc đ s dng: 36
3.1.1. View map : 37
3.1.2. Zoom map : 38
3.1.3. Move map : 39
3.1.4. Move cursor : 40
3.1.5. Search street base on name : 41
3.1.6. Search shortest path : 42
3.1.7. Help : 43
3.2. Các biu đ hot đng: 45
3.2.1. Hin th bn đ 45
3.2.2. Tìm đng theo tên: 46

3.2.3. Di chuyn bn đ: 47
3.2.4. Tìm đng đi ngn nht 48
3.3. S đ mc thit k 49
3.3.1. S đ 49
3.3.2. Danh sách các lp chính: 50


Chng 4: Ti u hoá ng dng 56
4.1. Ti u hóa kích thc chng trình : 56
4.1.1. Gim các lp không cn thit : 56
4.1.2. Hn ch s dng inner class và anonymous class : 57
4.1.3. Gim cây k tha : 58
4.1.4. Gim chiu dài các đnh danh (identifiers) : 58
4.1.5. Hn ch s dng getter / setter : 59
4.1.6. Lu ý khi khi to mng : 59
4.1.7. Gim kích thc các tp tin tài nguyên : 61
4.1.8. Hn ch s dng các gói th vin b sung : 62
4.1.9. Ti u kích thc chng trình khi đóng gói : 62
4.1.10. Thc hin vi Obfucator 63
4.2. Ti u hóa v tc đ : 65
4.2.1. Khái quát chung : 65
4.2.2. Tìm các v trí cn ti u v tc đ vi Profiler : 65
4.2.3. Xác đnh thi gian thc thi : 67
4.2.4. Thc hin tng tc cho chng trình : 68
4.3. Ti u hóa vic s dng b nh : 73
4.3.1. Công c theo dõi vic s dng b nh : 73
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
4
4.3.2. S dng Memory Monitor theo dõi vic s dng b nh : 74
4.3.3. Các nguyên tc ti u hóa vic s dng b nh : 76



Chng 5: Hng dn s dng 79
5.1. Di chuyn bn đ: 79
5.2. Phóng to, thu nh bn đ: 80
5.3. Di chuyn con tr 80
5.4. Tìm đng 81
5.5. Tìm đng đi: 82
5.6. Xem tr giúp và gii thiu: 84


Chng 6: Tng kt – đánh giá 86


Ph lc 90
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
5
Li gii thiu

Có th nói rng, bn đ cho cá thit b cm tay, đt bit là đin thoi di
đng là mt đ tài không mi. Có rt nhu ng dng phc v cho vic xem
tra cu bn đ khác nhau. Tuy nhiên phn ln các sn phm này đc phát
trin cho nhng thit b có h tr h điu hành nh các loi Pocket PC.
Nhng thit b h tr h điu hành chim mt phn rt nh trong th trng
các loi đin thoi di đng, Phn ln các loi đin thoi còn li đu yu hn
hn so vi các máy có s dng h điu hành, yu v dung lng b nh ln
tc đ x lý. Nhng đa s các loi đin thoi này đ có h tr Java (J2ME)
 tài “ng dng bn đ trên đin thoi di đng” này không có tham vng
s to đc mt sn phm hoàn chnh đ phc v cho các loi đin thoi
dùng J2ME còn li, mà ch mong mun thông qua đ tài này, có th nghiên

cu mt vài gii pháp đ x lý các phép toán cn nhiu tài nguyên, vn rt
hn hp trên các thit b di đng.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
6

Chng 1: Gii thiu lp trình trên thit
b di đng vi J2ME
Mc tiêu ca J2ME là cho phép ngi lp trình vit các ng dng đc lp
vi thit b di đng, không cn quan tâm đn phn cng tht s.  đt
đc mc tiêu này, J2ME đc xây dng bng các tng (layer) khác nhau
đ giu đi vic thc hin phn cng khi nhà phát trin.
1.1. Tng quan v J2ME
1.1.1. Lch s
J2ME đc phát trin t kin trúc Java Card, Embeded Java và
Personal Java ca phiên bn Java 1.1. n s ra đi ca Java 2 thì
Sun quyt đnh thay th Personal Java và đc gi vi tên mi là
Java 2 Micro Edition, hay vit tt là J2ME. úng vi tên gi,
J2ME là nn tng cho các thit b có tính cht nh, gn:

Hình 1.1 Các phiên bn java trên các thit b
1.1.2. Lý do chn J2ME
a)Java ban đu đc thit k dành cho các máy vi tài nguyên b
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
7
nh hn ch.
b)Th trng ca J2ME đc m rng ra cho nhiu chng loi
thit b nh:
•Các lai th cá nhân nh Java Card
•Máy đin thoi di đng
•Máy PDA (Personal Digital Assistant - thit b tr giúp cá nhân)

•Các hp điu khin dành cho tivi, thit b gii trí gia dng …
1.1.3. Kin trúc ca J2ME

Hình 1.2: Kin trúc J2ME
Các thành phn trong nn tng J2ME:
1.1.3.1. nh ngha v Configuration (Cu hình):
Là đc t đnh ngha mt môi trng phn mm cho mt dòng
các thit b đc phân loi bi tp hp các đc tính, ví d nh:
•Kiu và s lng b nh
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
8
•Kiu và tc đ b vi x lý
•Kiu mng kt ni
Do đây là đc t nên các nhà sn xut thit b nh Samsung,
Nokia …bt buc phi thc thi đy đ các đc t do Sun qui
đnh đ các lp trình viên có th da vào môi trng lp trình
nht quán và thông qua s nht quán này, các ng dng đc
to ra có th mang tính đc lp thit b cao nht có th. Ví d
nh mt lp trình viên vit chng trình game cho đin thoi
Samsung thì có th sa đi chng trình ca mình mt cách ti
thiu nht đ có th chy trên đin thai Nokia Hin nay Sun
đã đa ra 2 dng Configuration:
•CLDC (Connected Limited Device Configuration-Cu hình
thit b kt ni gii hn): đc thit k đ nhm vào th trng
các thit b cp thp (low-end), các thit b này thông thng là
máy đin thai di đng và PDA vi khong 512 KB b nh. Vì
tài nguyên b nh hn ch nên CLDC đc gn vi Java không
dây (Java Wireless ), dng nh cho phép ngi s dng mua và
ti v các ng dng Java, ví d nh là Midlet.
•CDC- Connected Device Configuration (Cu hình thit b kt

ni): CDC đc đa ra nhm đn các thit b có tính nng mnh
hn dòng thit b thuc CLDC nhng vn yu hn các h thng
máy đ bàn s dng J2SE. Nhng thit b này có nhiu b nh
hn (thông thng là trên 2Mb) và có b x lý mnh hn. Các
sn phm này có th k đn nh các máy PDA cp cao, đin
thoi web, các thit b gia dng trong gia đình …
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
9
C 2 dng Cu hình k trên đu cha máy o Java (Java Virtual
Machine) và tp hp các lp (class) Java c bn đ cung cp
mt môi trng cho các ng dng J2ME. Tuy nhiên, bn chú ý
rng đi vi các thit b cp thp, do hn ch v tài nguyên nh
b nh và b x lý nên không th yêu cu máy o h tr tt c
các tính nng nh vi máy o ca J2SE, ví d, các thit b thuc
CLDC không có phn cng yêu cu các phép tính toán du phy
đng, nên máy o thuc CLDC không đc yêu cu h tr kiu
float và double.

Hình 1.3: Các thit b có th s dng Java
1.1.3.2. nh ngha v Profile:
Profile m rng Configuration bng cách thêm vào các class đ
b tr các tính nng cho tng thit b chuyên bit. C 2
Configuration đu có nhng profile liên quan và t nhng
profile này có th dùng các class ln nhau. n đây ta có th
nhn thy do mi profile đnh ngha mt tp hp các class khác
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
10
nhau, nên thng ta không th chuyn mt ng dng Java vit
cho mt profile này và chy trên mt máy h tr mt profile
khác. Cng vi lý do đó, bn không th ly mt ng dng vit

trên J2SE hay J2EE và chy trên các máy h tr J2ME. Sau đây
là các profile tiêu biu:
•Mobile Information Device Profile (MIDP):
profile này s b
sung các tính nng nh h tr kt ni, các thành phn h tr
giao din ngi dùng … vào CLDC. Profile này đc thit k
ch yu đ nhm vào đin thai di đng vi đc tính là màn
hình hin th hn ch, dung lng cha có hn. Do đó MIDP s
cung cp mt giao din ngi dùng đn gin và các tính nng
mng đn gin da trên HTTP. Có th nói MIDP là profile ni
ting nht bi vì nó là kin thc c bn cho lp trình Java trên
các máy di đng (Wireless Java)
•PDA Profile:
tng t MIDP, nhng vi th trng là các máy
PDA vi màn hình và b nh ln hn
•Foundation Profile:
cho phép m rng các tính nng ca CDC
vi phn ln các th vin ca b Core Java2 1.3Ngoài ra còn có
Personal Basis Profile, Personal Profile, RMI Profile, Game
Profile.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
11
1.2. CLDC (Connected Limited Device
Configuration)
Tng J2ME k trên tng KVM là CLDC hay Cu hình thit b kt ni
gii hn. Mc đích ca tng này là cung cp mt tp ti thiu các th
vin cho phép mt ng dng Java chy trên thit b di đng. Nó cung
cp c s cho tng Hin trng, tng này s cha nhiu API chuyên
bit hn.
Các CLDC API đc đnh ngha vi s hp tác vi 18 công ty là b

phn ca JCP (Java Community Process). Nhóm này giúp bo đm
rng các API đc đnh ngha s hu dng và thit thc cho c nhà
phát trin ln nhà sn xut thit b di đng. Các đc t ca JCP đc
gán các s JSR (Java Specification Request). Quy đnh CLDC phiên
bn 1.0 đc gán s JSR - 30.
CLDC đnh ngha các th vin ti thiu và các API.
• Tng thích ngôn ng JVM
• Các th vin lõi
• I/O
• Mng
• Bo mt
• Quc t hóa

CLDC không đnh ngha:
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
12
• Chu k sng ng dng
• Giao din ngi dùng
• Qun lý s kin
• Giao din ng dng và ngi dùng
Các lp lõi Java c bn, input/output, mng, và bo mt đc đnh
ngha trong CLDC. Các API hu dng hn nh giao din ngi
dùng và qun lý s kin đc dành cho hin trng MIDP.
J2ME là mt phiên bn thu nh ca J2SE, s dng ít b nh hn đ
nó có th thích hp vi các thit b di đng b gii hn b nh. Mc
tiêu ca J2ME là mt tp con 100% tng thích ca J2SE.

Hình 1.4: Biu din mi liên h gia J2SE và J2ME (CDC, và CLDC).

CLDC đnh ngha mt mô hình an toàn, bo mt đc thit k đ bo

v thit b di đng, KVM, và các ng dng khác khi các mã phá
hoi. Hai b phn đc đnh ngha bi CLDC này là b tin kim tra
và mô hình sandbox.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
13


Hình 1.5: Biu din cách mà b tin kim tra và b kim tra làm vic vi
nhau đ kim tra mã chng trình Java trc khi chuyn nó cho KVM.
Nh đã đ cp, các tp tin lp đc gán nhãn bng mt thuc tính
trên máy trm ca nhà phát trin. Thuc tính này sau đó đc kim
tra bi b tin kim tra trc khi mã chng trình đc giao cho
KVM hay b biên dch mã bytecode.
Mt b phn khác ca bo mt trong CLDC là mô hình sandbox.

Hình 1.6 biu din khái nim mô hình sandbox
Hình trên cho thy ng dng J2ME đt trong mt sandbox có ngha
là nó b gii hn truy xut đn tài nguyên ca thit b và không đc
truy xut đn Máy o Java hay b np chng trình. ng dng đc
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
14
truy xut đn các API ca CLDC và MIDP. ng dng đc truy
xut tài nguyên ca thit b di đng (các cng, âm thanh, b rung,
các báo hiu,…) ch khi nhà sn xut đin thoi di đng cung cp các
API tng ng. Tuy nhiên, các API này không phi là mt phn ca
J2ME.
Th h k tip ca CLDC là đc t JSR - 139 và đc gi là CLDC
th h k tip (Next Generation). Nó s nhm đn các vn đ nh
nâng cao vic qun lý li và có th phép toán s thc.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng

15
1.3. Gii thiu MIDP

1.3.1. nh ngha:
ây là Profile đc đnh ngha dành riêng cho các thit b di đng
và là thành phn chính trong J2ME. MIDP cung cp các chc nng
c bn cho hu ht các dòng thiêt b di đng ph bin nht nh các
máy đin thoI di đng và các máy PDA. Tuy nhiên MIDP không
phi là cây đa thn cho mi lp trình viên vì nh chúng ta đã bit,
MIDP đc thit k cho các máy di đng có cu hình rt thp.
Trong phn sau tôi s lit kê qua các tính nng mà MIDP cung cp
và nhng gii hn ca nó.
1.3.2. Nhng chc nng MIDP không thc hin đc:
•Phép tính du phy đng (floating point): Phép tính này đòi hi rt
nhiu tài nguyên CPU và phn ln các CPU cho các thit b di
đng không h tr phép tính này, do đó MIDP cng không có.
•B np lp (Class Loader).
•H tr t khóa finalize() nh trong J2SE: Vic “dn dp“ tài
nguyên trc khi nó b xóa đc đy v phía các lp trình viên.
•Không h tr JNI
•H tr hn ch thao tác bt li.
•Phn ln các th vin API cho Swing và AWT không th s dng
đc trong MIDP.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
16
•Không h tr các tính nng qun lý file và th mc: ây có th
làm bn ngc nhiên nhng thc t là các thit b J2ME không có h
tr các thit b lu tr thông thng nh  cng v.v. Tuy nhiên,
điu đó không có ngha là bn phi mt đi mi d liu quan trng
mi khi tt máy, Sun đã cung cp mt chc nng khác tng đng

gi là Record Management system (RMS) đ cung cp kh nng
lu tr cho các thit b này.
1.3.3. Nhng chc nng MIDP cung cp
•Các lp và kiu d liu: Phn ln các lp mà các lp trình viên
Java quen thuc vn còn đc gi li ví d nh các lp trong gói
java.util nh Stack, Vector và Hastable cng nh Enumeration.
•H tr đi tng Display: úng nh tên gi mt chng trình
MIDP s h tr duy nht mt đi tng Display là đi tng qun
lý vic hin th d liu trên màn hình đin thoi.
•H tr Form và các giao din ngi dùng.
•H tr Timer và Alert
•Cung cp tính nng Record Management System (RMS) cho vic
lu tr d liu
1.3.4. S khác nhau ca MIDP 1.0 và MIDP 2.0
Tháng 11 nm 2003 Sun đã tung ra MIDP 2.0 vi hàng lot tính
nng khác đc cung cp thêm so vi bn 1.0. Nhng ci tin ni
bt so vi MIDP 1.0
1.3.4.1. Nâng cp các tính nng bo mt nh:
• Download qua mng an toàn hn qua vic h tr giao thc
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
17
HTTPS.
• Kim soát vic kt ni gia máy di đng và server: ví d nh
các chng trình không th kt ni ti server nu thiu s chp
thun ca ngi s dng.
1.3.4.2. Thêm các API h tr Multimedia.
Mt trong nhng ci tin hp dn nht ca MIDP 2.0 là tp các
API media ca nó. Các API này là mt tp con ch h tr âm
thanh ca Mobile Media API (MMAPI).
1.3.4.3. M rng các tính nng ca Form.

Nhiu ci tin đã đc đa vào API javax.microedition.lcdui
trong MIDP 2.0, nhng các thay đi ln nht (ngoài API cho
game) là trong Form và Item.
1.3.4.4. H tr các lp trình viên Game bng Game API:
Có l Sun đã kp nhn ra th trng đy tim nng ca các thit
b di đng trong lnh vc Game. Vi MIDP 1.0 thì các lp trình
viên phi t mình vit code đ qun lý các hành đng ca nhân
vt cng nh qun lý đ ha. Vic này s làm tng kích thc
file ca sn phm cng nh vic xut hin các đon mã b li.
c hng li nht t Game API trong MIDP 2.0 không ch là
các lp trình viên Game mà còn là các lp trình viên cn s
dng các tính nng đ ha cao cp. Ý tng c bn ca Game
API là vic gi đnh rng mt màn hình game là tp hp các
layer (lp). Ví d nh: trong mt game đua xe thì màn hình nn
là mt layer, con đng là mt layer và chic xe đc xem nh
đang nm trên layer khác. Vi Game API nhà phát trin còn
đc cung cp các tính nng nh qun lý các thao tác bàn phím.
1.3.4.5. H tr kiu nh RGB:
Mt trong nhng ci tin hp dn cho các nhà phát trin MIDP
là vic biu din hình nh di dng các mng s nguyên, cho
phép MIDlet thao tác vi d liu hình nh mt cách trc tip.

Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
18
1.4. Vòng đi ca mt MIDlet
Ging nh dng chng trình Applet trên J2SE, mt Midlet luôn
luôn k tha javax.microedition.midlet Hàm c bn nht trong mi
Midlet là startApp(), hàm này s khi to Midlet cng nh vn hành
các thành phn hoc đi tng khác, ngoài startApp(), mi Midlet
còn có pauseApp() và destroyApp(), mi hàm này s đc gi thc

thi tng ng khi user chn dng hoc thoát chng trình.

Hình 1.7: Vòng đi mt Midlet

1.5. Xây dng mt MIDlet
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
19

Hình 1.8:. Tin trình xây dng MIDlet

1.5.1. Lp trình viên: To các tp tin ngun Java
Bc đu tiên là lp trình viên phi to mã ngun Java, có th có
nhiu tp tin (*.java).
1.5.2. Biên dch mã ngun thành mã bytecode
B biên dch Java (java compiler) s biên dch mã ngun thành
mã bytecode. Mã bytecode này s đc KVM dch thành mã
máy. Mã bytecode đã biên dch s đc lu trong các tp tin
*.class và s có mt tp tin *.class sinh ra cho mi lp Java.
1.5.3. Kim tra tính hp l ca mã bytecode
Mt trong nhng yêu cu an toàn ca J2ME là bo đm mã
bytecode chuyn cho KVM là hp l và không truy xut các lp
hay b nh ngoài gii hn ca chúng. Do đó tt c các lp đu
phi đc tin kim tra trc khi chúng có th đc download v
thit b di đng. Vic tin kim tra đc xem là mt phn ca môi
trng phát trin làm cho KVM có th đc thu nh hn. B tin
kim tra (Preverrifier) s gán nhãn lp bng mt thuc tính
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
20
(attribute) đc bit ch rng lp đó đã đc tin kim tra. Thuc
tính này tng thêm khong 5% kích thc ca lp và s đc

kim tra bi b kim tra trên thit b di đng.
1.5.4. To tp tin JAR
IDE s to mt tp tin JAR cha:
* Tt c các tp tin *.class
* Các hình nh ca ng dng
* Các tp tin d liu có th đc yêu cu bi ng dng
* Mt tp tin kê khai (manifest.mf) cung cp mô t v ng dng
cho b qun lý ng dng (application manager) trên thit b di
đng.
* Tp tin JAR đc bán hoc đc phân phi đn ngi dùng đu
cui
Sau khi đã g ri và kim tra mã lnh trên trình gi lp
(simulator), mã lnh đã sn sàng đc kim tra trên đin thoi di
đng và sau đó đc phân phi cho ngi dùng.
1.5.5. Ngi dùng Download ng dng v thit b di đng
Ngi dùng sau đó download tp tin JAR cha ng dng v thit
b di đng. Trong hu ht các đin thoi di đng, có hai cách đ
download ng dng:
* Kt ni trc tip t PC sang đing thi di đng:
Vic kt ni này có th kt ni bng các thit b:
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
21
Cáp d liu
Cng hng ngoi – IR (Infra Red) port
Cng Bluetooth
Vic này yêu cu ngi dùng phi có tp tin JAR tht s và phn
mm truyn thông đ download ng dng sang thit b thông qua
cáp d liu, cng hng ngoi hay cng bluetooth.
* OTA (Over the Air):
S dng phng thc này, ngi dùng phi bit đa ch URL ch

đn tp tin JAR
1.5.6. Kim tra mã bytecode Trên thit b di đng:
B tin kim tra kim tra tt c các lp đu có mt thuc tính hp
l đã đc thêm vào bi b tin kim tra trên trm phát trin ng
dng. Nu tin trình tin kim tra tht bi thì ng dng s không
đc download v thit b di đng.
1.5.7. Lu tr chng trình trên thit b
B qun lý ng dng trên thit b di đng s lu tr chng trình
trên thit b di đng. B qun lý ng dng cng điu khin trng
thái ca ng dng trong thi gian thc thi và có th tm dng ng
dng khi có cuc gi hoc tin nhn đn.
1.5.8. Thc thi ng dng
B qun lý ng dng s chuyn ng dng cho KVM đ chy trên
thit b di đng.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
22
KVM: Thc thi mã bytecode khi chng trình chy.
KVM dch mã bytecode sang ngôn ng máy ca thit b di đng
đ chy.

1.6. Môi trng phát trin J2ME
Có nhiu môi trng phát trin ng dng J2ME và mi hãng đin
thoi cng đa ra nhng môi trng phát trin cho riêng mình:
Trong đó Sun J2ME Wireless Toolkit là môi trng phát trin c bn
mà Sun đa ra
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
23
Chng 2: Tng quan v GIS

2.1. Gii thiu GIS:

H Thông tin đa lý (GIS) là mt công c máy tính đ lp bn đ và
phân tích các s vt, hin tng thc trên trái đt. Công ngh GIS kt
hp các thao tác c s d liu thông thng (nh cu trúc hi đáp) và
các phép phân tích thng kê, phân tích đa lý, trong đó phép phân tích
đa lý và hình nh đc cung cp duy nht t các bn đ. Nhng kh
nng này phân bit GIS vi các h thng thông tin khác và khin cho
GIS có phm vi ng dng rng trong nhiu lnh vc khác nhau (phân
tích các s kin, d đoán tác đng và hoch đnh chin lc).
GIS cho phép to lp bn đ, phi hp thông tin, khái quát các vin
cnh, gii quyt các vn đ phc tp, và phát trin các gii pháp hiu
qu mà trc đây không thc hin đc. GIS là mt công c đc các
cá nhân, t chc, trng hc, chính ph và các doanh nghip s dng
nhm hng ti các phng thc mi gii quyt vn đ.
Lp bn đ và phân tích đa lý không phi là k thut mi, nhng GIS
thc thi các công vic này tt hn và nhanh hn các phng pháp th
công c. Trc công ngh GIS, ch có mt s ít ngi có nhng k
nng cn thit đ s dng thông tin đa lý giúp ích cho vic gii quyt
vn đ và đa ra các quyt đnh.
2.1.1. Các thành phn ca GIS
GIS đc kt hp bi nm thành phn chính: phn cng, phn mm,
d liu, con ngi và phng pháp.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
24
2.1.1.1. Phn cng
Phn cng là h thng máy tính trên đó mt h GIS hot đng.
Ngày nay, phn mm GIS có kh nng chy trên rt nhiu dng
phn cng, t máy ch trung tâm đn các máy trm hot đng
đc lp hoc liên kt mng.
2.1.1.2. Phn mm
Phn mm GIS cung cp các chc nng và các công c cn thit

đ lu gi, phân tích và hin th thông tin đa lý. Các thành phn
chính trong phn mm GIS là:
• Công c nhp và thao tác trên các thông tin đa lý
• H qun tr c s d liu(DBMS)
• Công c h tr hi đáp, phân tích và hin th đa lý
• Giao din đ ho ngi-máy (GUI) đ truy cp các công c d
dàng
2.1.1.3. D liu
Có th coi thành phn quan trng nht trong mt h GIS là d
liu. Các d liu đa lý và d liu thuc tính liên quan có th đc
ngi s dng t tp hp hoc đc mua t nhà cung cp d liu
thng mi.
H GIS s kt hp d liu không gian vi các ngun d liu khác,
thm chí có th s dng DBMS đ t chc lu gi và qun lý d
liu.
Lun vn tt nghip: Xây dng ng dng bn đ cho đin thoi di đng
25
2.1.1.4. Con ngi
Công ngh GIS s b hn ch nu không có con ngi tham gia
qun lý h thng và phát trin nhng ng dng GIS trong thc t.
Ngi s dng GIS có th là nhng chuyên gia k thut, ngi
thit k và duy trì h thng, hoc nhng ngi dùng GIS đ gii
quyt các vn đ trong công vic.
2.1.1.5. Phng pháp
Mt h GIS thành công theo khía cnh thit k và lut thng mi
là đc mô phng và thc thi duy nht cho mi t chc.
2.1.2. Hot đng ca GIS:
GIS lu gi thông tin v th gii thc di dng tp hp các lp
chuyên đ có th liên kt vi nhau nh các đc đim đa lý. Ðiu
này đn gin nhng vô cùng quan trng và là mt công c đa nng

đã đc chng minh là rt có giá tr trong vic gii quyt nhiu vn
đ thc t, t thit lp tuyn đng phân phi ca các chuyn xe,
đn lp báo cáo chi tit cho các ng dng quy hoch, hay mô
phng s lu thông khí quyn toàn cu.

×