Các thành ph n chính trong j2me.. Mobile Information Device Profile MIDP..... Các thành ph n chính trong j2me... Mobile Information Device Profile MIDP... Nó cung c p các thành ph n nh t
Trang 1Khoa Công Ngh Thông Tin
KHÓA LU N T T NGHI P
tài:
GVHD : TS Phan t Phúc SVTH : Cao Xuân B o L c MSSV : 10400071
TP.HCM – N m 2009
Trang 2L i cám n
Em xin cám n quý th y cô trong khoa Công ngh thông tin tr ng i h c
M đã t n tình d y b o em nhi u ki n th c b ích trong su t th i gian h c t p t i
tr ng Kính chúc th y cô luôn d i dào s c kh e và thành công trong cu c s ng
c bi t, em xin ch n thành cám n đ n th y Phan t Phúc, và công ty Dolsoft trong th i gian v a qua đã t n tình h ng d n chúng em trong su t th i gian th c hi n đ tài này ã h tr t o cho em đi u ki n, c h i và tích l y nhi u
ki n th c su t trong th i gian th c hi n đ tài, c ng nh đóng góp nhi u ý ki n quý báu, qua đó, đ em có th hòan thành đ c t t đ tài nay
M c dù đã hòan thành đ tài, nh ng ch c ch n đ tài v n còn nhi u thi u
đi u thi u sót Em mong nh n đ c s góp ý c a quý th y cô, anh ch và các b n
M t l n n a, em xin chân thành cám n!
TP H chí minh, tháng 1 n m 2009
Ng i th c hi n
Cao Xuân B o L c
Trang 3M c l c
CH NG 1: GI I THI U
1
1.1 Khái quát v công ngh di đ ng: 1
1.2 Gi i thi u đ tài: 1
1.3 Đ i t ng và ph m vi nghiên c u chính: 3
CH NG 2: TÌM HI U V CHU N J2ME 5 2.1 Gi i thi u v java 5
2.1 Ki n trúc j2me 6
2.2 Các thành ph n 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 c u ph n c ng: 11
2.3.3 Yêu c u ph n m m: 11
2.3.4 Nh ng h n ch 11
2.3.5 Nh ng tính năng MIDP cung c p .12
CH NG 3: L P TRÌNH ĐI N THO I V I MIDP 14 3.1 MIDP là gì? 14
3.1.1 Đ nh nghĩa 14
3.1.2 Thành ph n c b n 14
3.1.3 Chu kì s ng 15
3.1.4 Đóng gói ch ng trình 15
3.2 Giao di n 16
3.2.1 Đ h a m c cao 17
3.2.2 Đ h c m c th p .17
3.3 Âm thanh 18
3.4 MIDP là gì? 18
3.4.1 S ki n hành đ ng 18
3.4.2 S ki n phím 18
Trang 43.5 L u tr d li u 19
3.5.1 Record Management System 19
3.5.2 H n ch 20
3.5.3 T c đ truy xu t 21
3.5.4 C ch lu ng 21
CH NG 4: L P TRÌNH M NG 22 4.1 Khái quát 22
4.2 Khái quát v d ch 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
CH NG 5: Đ NH V THI T B DI Đ NG 25 5.1 M ng đi n tho i GSM .25
5.2 Thi t b đ nh v GPS .26
5.2.1 Thi t b tích h p GPS 26
5.2.2 Thi t b dùng kèm v i BT-GPS 27
¬ Khái quát 27
¬ Hi n th c 27
CH NG 6: PHÂN TÍCH THI T K NG D NG 30 6.1 Kh o sát hi n tr ng 30
6.2 Phân tích và xác đ nh yêu c u .30
6.3 Thi t k ng d ng 31
6.3.1 V b n đ 31
6.3.2 Di chuy n b n đ 32
6.3.3 Phóng to, thu nh 33
6.3.4 Tìm đ ng đi ng n nh t gi a hai đi m .33
6.3.5 H ng d n đ ng đi .35
6.3.6 Tìm đ a đi m xung quanh 36
6.3.7 K t n i v i thi t b GPS 37
6.3.8 Ch n đ i t ng trên b n đ 38
6.3.9 Thêm đ a đi m cá nhân trên b n đ 38
Trang 56.3.10 H ng d n s d ng 39
6.3.11 L u thông tin làmvi c 39
6.3.12 N p thông tin làm vi c c 40
6.3.13 S đ giao di n thi t k chính c a màn hình .41
6.1 Đ c t các gói l p trong ng d ng 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
CH NG 7: C I TI N VÀ T I U HÓA 59 7.1 N i dung 59
7.2 T i u hóa kích th c ch ng trình 59
7.2.1 Nguyên t c 60
7.2.2 Obfuscator 61
7.3 T i u hóa t c đ 62
7.3.1 Khái quát 62
7.3.2 Nguyên t c 62
7.3.3 Công c h tr 63
7.4 T i u hóa vi c s d ng b nh 64
7.4.1 Nguyên t c 64
7.4.2 Công c h tr 65
CH NG 8: T NG K T ĐÁNH GIÁ 66 8.1 K t qu đ t đ c .66
8.1.1 Ki n th c đ t đ c 66
8.1.2 Ch ng trình 66
8.2 Đánh giá ch ng trình 66
8.2.1 u đi m .66
8.2.2 Khuy t đi m 67
8.3 H ng phát tri n 67
Trang 6CH NG 1: GI I THI U
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 tr ng trong đ i s ng h ng ngày c a chúng ta Vi c ng d ng công ngh thông tin vào các l nh v c vào trong đ i s ng giúp cho công vi c đ c ti n hành m t cách thu n l i, nhanh chóng và hi u qu h n Cùng v i phát tri n c a công ngh thông tin, nhi u công ngh m i ra đ i nh BlueTooth, ADSL, Wireless, Mobile, WAP … làm cho công ngh thông tin càng tr nên g n g i thân thi t v i con ng i Và m t trong chúng, là công ngh di đ ng
th i đi m hi n nay, trên th gi i c ng nh Vi t Nam, khi th tr ng đi n tho i di đ ng đang tr nên sôi đ ng h n bao gi h t Ta có th th y, không gi ng
nh nh ng chi c đi n th ai tr c đây ch đ n gi n nhi m v là tho i, mà chi c
đi n tho i ngày nay còn th c hi n nhi u ch c n ng khác nh : g i nh n mail, truy
c p Internet, xem phim, nghe nh c, ch i game, … qua đó, chi c đi n tho i d n
tr nên quen thu c v i con ng i và tr thành m t ph n không th thi u trong
cu c s ng hi n đ i c a chúng ta ngày nay
M t khác, do các nhà s n xu t đi n tho i di đ ng n m b t đ c nhu c u c a
gi i tr là u chu ng s n ph m công ngh cao, luôn cho ra đ i nh ng lo i s n
ph m đi n tho i di đ ng hi n đ i v i nh ng tính n ng đa d ng và n i tr i h n
tr c Song hành v i s phát tri n c a ph n c ng, là nhu c u phát tri n ph n
m m ng d ng trên đi n tho i di đ ng, nh m ph c v t t h n cho ng i s d ng
đi n tho i Ph n m m cho các thi t b di đ ng c ng r t đa d ng, t nh ng ng
d ng mang tính gi i trí nh game, xem phim, chat đ n nh ng ng d ng làm vi c
nh t đi n, word, di t virus, g i nh n mail … Vì v y, ngày càng có nhi u sinh viên các tr ng đ i h c, tham gia nghiên c u tìm hi u công ngh di đ ng v i mong mu n tìm đ c cho mình m t c h i vi c làm t t sau này
1.2 Gi i thi u đ tài:
Trong nh ng n m g n đây, khi mà ho t đ ng s n xu t ph n m m trên đi n tho i di đ ng phát tri n khá m nh m , v i s ra đ i c a nhi u ph m m m h u ích trên đi n tho i di đ ng Mà trong đó ph i k đ n là ph n m m b n đ trên đi n tho i đi đ ng đã và đang thu hút nhi u ng i s d ng v i nh ng ti n ích thi t
th c mà nó mang đ n
Trang 7Tuy nhiên, đ tài v phát tri n m t ng d ng b n đ trên đi n tho i di đ ng có
th nói là không m i m gì Vì trong m y n m qua, đã có nhi u khóa lu n c a các sinh viên ngành CNTT nghiên c u, tìm hi u v đ tài này Là nh ng đ tài xây d ng b n đ d ng Vector, th ng b h n ch v m t d li u, ch th hi n b n
c a h ng google, s d ng nh v tinh đ hi n th b n đ
Tuy nhiên, đ y là ch ng trình do ng i n c ngoài làm, Vì v y, v i nguy n
v ng xây d ng m t ch ng trình thu n vi t do ng i Vi t làm em ch n đ tài
“Xây d ng ng d ng MobileGIS” M c tiêu là xây d ng m t ph n m m trên
đi n th ai th hi n b n đ chi ti t c a t ng vùng mi n Vi t Nam, và tài nguyên
đ c l y tr c ti p trên m ng do công ty Vi t b n đ cung c p ( Webservices )
Trang 81.3 i t ng và ph m vi nghiên c u chính:
Hi n nay có r t nhi u l a ch n đ vi t ng d ng cho đi n tho i di đ ng, có th
k đ n 5 môi tr ng phát tri n ph bi n nh t: Java 2 Platform Micro Edition (J2ME), BREW, Sysmbian OS, Openwave và Microsoft Windows CE 3.0 Xem hình sau
Trong đó ph i k đ n đ u tiên J2ME, đ c cho là n n t ng phát tri n ng d ng
ph bi n nh t Vì ban đ u Java đ c thi t k đ ch y trên các thi t b có b nh
h n ch và thách th c v n ng l c x lý Ngoài ra, J2ME còn có kh n ng k t h p
v i các “đ i th ” BREW, Symbian OS và Openwave M t khác, thách th c l n
nh t c a J2ME và c ng chính là u đi m, là s nh t quán cho nhi u lo i thi t b
H u h t các hãng s n xu t TD hàng đ u đ u ng h Java, và Java còn nh n
đ c s ng h r ng rãi c a các nhà cung c p d ch v di đ ng
Nói đ n l p trình trên đi n tho i di đ ng, chúng ta có th hình dung đ c
nh ng tr ng i l n trong quá trình phát tri n ng d ng là:
- N ng l c c a b vi x lý trên đi n tho i là r t y u
- Dung l ng b nh là r t nh
- T c đ đ ng truy n m ng ( GPRS ) r t h n ch
Và đ th c hi n nh ng yêu c u chính đ c nêu trong ph n gi i thi u, trong
lu n v n này, em s t p trung tìm hi u nh ng v n đ chính sau:
Ü Công ngh Java, mà tr ng tâm chính là nghiên c u, tìm hi u v J2ME
Trang 9Ü Các k thu t l p trình trên đi n th ai v i J2ME
Ü Các v n đ liên quan đ n m ng trong J2ME( truy c p Webservices, t i
nh trên m ng)
Ü Cách xác đ nh v trí c a đi n tho i
Ü Cách t i u hóa kích th c và t c đ c a ch ng trình
Trang 10CH NG 2: TÌM HI U V CHU N J2ME
2.1 Gi i thi u v java
Vào nh ng n m 1990, java đ c ra đ i t d án xanh ( Green Project ) và ban
đ u đ c xây d ng đ ki m soát các thí t b dân d ng nh TV, VCR, đèn, đi n tho i và m t s thi t b c m tay, Java đ c xây d ng ch y u d a trong b công c phát tri n ( Java Development Kit – JDK ) nh là th vi n chu n trong đó ch a trình biên d ch, trình thông d ch, giúp đ , tài li u, … ây chính là n n t ng cho
vi c phát tri n ng d ng Java
Tuy nhiên, ngày nay Sun nh n ra r ng vi c t o ra m t n n t ng chung đ ch y trên t t c môi tr ng là đi u không th th c hi n đ c,do đó công ty đã quy t
đ nh chia công ngh java c a mình thành 3 phiên b n, m i phiên b n đ c ng
d ng trong m t l nh v c riêng bi t, các phiên b n đó là:
Ü Java 2 Platform, Enterprise Edition (J2EE TM
) ph c v cho các nhu c u
v th ng m i ph c v khách hàng, các v n đ phân ph i, các v n đ v nhân s Phiên b n này dành cho các máy ch l n ( server ) v i s c m ng
Ü Java 2 Platform, Micro Edition (J2ME TM
Trang 11Ki n trúc java
2.1 Ki n trúc 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 Sau đây là các t ng c a J2ME đ c xây d ng trên CLDC
Ki n trúc j2me
M i t ng trên t ng hardware là t ng tr u t ng h n cung c p cho l p trình viên nhi u giao di n l p trình ng d ng (API-Application Program Interface) thân thi n h n
Ü T ng ph n c ng thi t b ( Device Hardware Layer ): ây chính là thi t
b di đ ng th t s v i c u hình ph n c ng c a nó v b nh và t c đ x lý
D nhiên th t ra nó không ph i là m t ph n c a J2ME nh ng nó là n i xu t
Trang 12phát Các thi t b di đ ng khác nhau có th có các b vi x lý khác nhau v i các t p mã l nh khác nhau M c tiêu c a J2ME là cung c p m t chu n cho
t t c các lo i thi t b di đ ng khác nhau
Ü T ng máy o Java ( Java Virtual Machine Layer ):
Khi mã ngu n Java đ c biên d ch nó đ c chuy n đ i thành mã bytecode Mã bytecode này sau đó đ c chuy n thành mã ngôn ng máy
c a thi t b di đ ng T ng máy o Java bao g m KVM (K Virtual Machine)
là b biên d ch mã bytecode có nhi m v chuy n mã bytecode c a ch ng trình Java thành ngôn ng máy đ ch y trên thi t b di đ ng T ng này cung
c p m t s chu n hóa cho các thi t b di đ ng đ ng d ng J2ME sau khi
đã biên d ch có th ho t đ ng trên b t k thi t b di đ ng nào có KVM Vai trò c a máy o Java hay KVM là d ch mã bytecode đ c sinh ra t ch ng trình Java đã biên d ch sang ngôn ng máy Chính KVM s chu n hóa output c a các ch ng trình Java cho các thi t b di đ ng khác nhau có th
có b vi x lý và t p l nh khác nhau Không có KVM, các ch ng trình Java ph i đ c biên d ch thành t p l nh cho m i thi t b di đ ng Nh v y
l p trình viên ph i xây d ng nhi u đích cho m i lo i thi t b di đ ng
Ü T ng c u hình ( Configuration Layer ): T ng c u hình c a CLDC đ nh
ngh a giao di n ngôn ng Java (Java language interface) c b n cho phép
ch ng trình Java ch y trên thi t b di đ ng Cung c p các hàm API c b n
là nhân c a J2ME L p trình viên có th s d ng các l p và ph ng th c
c a các API này tuy nhiên t p các API h u d ng h n đ c ch a trong t ng
hi n tr ng (profile layer)
Ü T ng hi n tr ng ( Profile Layer ):T ng hi n tr ng hay MIDP (Hi n tr ng
thi t b thông tin di đ ng-Mobile Information Device Profile) cung c p t p các API h u d ng h n cho l p trình viên M c đích c a hi n tr ng là xây
d ng trên l p c u hình và cung c p nhi u th vi n ng d ng h n
MIDP đ nh ngh a các API riêng bi t cho thi t b di đ ng C ng có th có các
hi n tr ng và các API khác ngoài MIDP đ c dùng cho ng d ng Ví d , có th có
hi n tr ng PDA đ nh ngh a các l p và ph ng th c h u d ng cho vi c t o các ng
d ng PDA (l ch, s h n, s đ a ch ,…) C ng có th có m t hi n tr ng đ nh ngh a các API cho vi c t o các ng d ng Bluetooth Th c t , các hi n tr ng k trên và
t p các API đang đ c xây d ng Chu n hi n tr ng PDA là đ c t JSR - 75 và
Trang 13chu n bluetooth API là đ c t JSR - 82 v i JSR là vi t t t c a Java Specification Request
2.2 Các thành ph n chính trong j2me
2.2.1 Confiuration
Trong môi tr ng J2ME, m t ng d ng đ c vi t cho m t profile riêng
bi t nào đó Profile này l i đ c m r ng t m t configuration Vì th t t c các đ c đi m c a m t configuration s đ c gi l i trong profile có th
đ c s d ng b i ng d ng vi t cho profile này
M t configuraion đ nh ngh a m t n n Java cho các thi t b có các đ c tính t ng t nhau( nh s l ng b nh , t c đ x lý, ki u k t n i m ng)
M t configuration s xác đ nh
- Các tính n ng c a ngôn ng Java đ c h tr
- Các tính n ng c a máy o Java đ c h tr
- Th vi n chu n và các API
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 quy đ 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 Qua đây ta th y kh u hi u “Write Once, Run Everywhere” c a Java đã không còn đúng n a, nh ng ta c ng
ph i đánh giá cao s n l c c a Sun trong vi c t o ra m t môi tr ng ph n
m m chung cho vô s ch ng lo i thi t b di đ ng có trên th tr ng Hi n nay Sun đã đ a ra 2 d ng Configuration
¬ CLDC - Connected Limited Device Configuration
CLDC đ 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
Trang 14¬ CDC - Connected Device Configuration.
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
tr ng cho các ng d ng J2ME Tuy nhiê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 các tính n ng gi ng máy o c a J2SE Ví d , các thi t b thu c CLDC không có ph n c ng h tr các phép tính toán d u
ph y đ ng, nên máy o thu c CLDC không đ c h tr ki u float và double
Ram >=32K, <=512K >=256K Rom >=128k, <=512k >=512k Ngu n N ng L ng Có Gi i h n (ngu n pin) Không gi i h n
Network Ch m Nhanh
B ng so sánh CLDC và CDC
Hình v sau minh h a quan h gi a CLDC, CDC và Java 2 Standard Edition ( J2SE ) Theo đó chúng ta th y m t ph n l n các ch c n ng trong CLDC và CDC có đ c do k th a J2SE M i l p đ c k th a t J2SE
ph i gi ng ho c g n gi ng v i l p t ng ng trong J2SE Thêm vào đó, CLDC và CDC có m t s đ c tính khác đ c thi t k cho các thi t b nhúng
mà J2SE không có ( nh các thành ph n giao di n )
Trang 15Quan h gi a J2ME và J2SE
¬ S khác nhau gi a ngôn ng Java trên CLDC v i Java thông th ng
- Kh n ng x lý s th c: Các phép toán trên s th c th ng c n nhi u
th i gian x lý h n Ngoài ra, ph n l n các thi t b không có ph n c ng
h tr cho vi c tính toán s th c, do đó CLDC không h tr s th c
- Finalization: trong các l p đ c vi t b ng J2SE, chúng ta th ng đ nh ngh a m t ph ng th c có tên là finalize() Ph ng th c này s đ c
g i tr c khi b thu gom rác ( garbage collector ) thu gom đ i t ng
Ph ng th c này là n i chúng ta đ t các mã l nh đ gi i phóng tài nguyên đã s d ng Tuy nhiên, CLDC không h tr ph ng th c finalize()
- Các l p k th a t J2SE: CLDC yêu c u kho ng 160 KB đ ch y máy
o java và các th vi n c b n Do đó, ch có m t s l p trong J2SE là
đ c gi l i trong CLDC
2.2.2 Profiler
Là 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 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
2.2.3 Optional package
Là các API có th s d ng trong nhi u thi t b hay m t h các thi t b
M t J2me option package là m t t p các API n m trên m t profile M t
Trang 16optional package th ng ch a các ch c n ng đ c l p v i các thi t b M c đính chính c a các optional package này là cho phép b sung các API trên các profiles M t thi t b có th h tr nhi u optional package khác nhau
2.3 Mobile Information Device Profile (MIDP)
2.3.1 nh ngh a:
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 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)
Do h đi u hành thay đ i tùy theo m i lo i thi t b , nên MIDP không qua
kh c khe trong các yêu c u ph n m m
- H đi u hành trên thi t b cung c p kh n ng x lý ng ai l , x lý ng t,
Trang 17- 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
- 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
- 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
2.3.5 Nh ng tính 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
- 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)
Trang 18- 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
- H tr các l p trình viên Game b ng cách tung ra Game API: Có l Sun
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
- 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
Trang 203.1.3 Chu kì s ng
Chu kì s ng c a m t MIDlet
Khi ng i dùng yêu c u kh i đ ng ng d ng MIDlet, b qu n lý ng
d ng s th c thi MIDlet (thông qua l p MIDlet) Khi ng d ng th c thi, nó
s đ c xem là đang tr ng thái t m d ng B qu n lý ng d ng g i hàm
t o và hàm startApp() Hàm startApp() có th đ c g i nhi u l n trong su t chu k s ng c a ng d ng Hàm destroyApp() ch có th g i t tr ng thái
T p tin JAR ch a t t c các t p tin class t m t hay nhi u MIDlet, c ng
nh các tài nguyên c n thi t Hi n t i, MIDP ch h tr đ nh d ng hình png (Portable Network Graphics) T p tin JAR c ng ch a t p tin kê khai (manifest file) mô t n i dung c a MIDlet cho b qu n lý ng d ng Nó
c ng ph i ch a các t p tin d li u mà MIDlet c n Do đó t p tin JAR là toàn
b ng d ng MIDlet, MIDlet có th load và g i các ph ng th c t b t k
l p nào trong t p tin JAR, trong MIDP, hay CLDC và không th truy xu t các l p không ph i là b ph n c a t p tin JAR hay vùng dùng chung c a thi t b di đ ng
T p tin kê khai (manifest.mf) và t p tin JAD (Java Application
Descriptor) mô t các đ c đi m c a MIDlet S khác bi t c a hai t p tin này
là t p tin kê khai là m t ph n c a t p tin JAR còn t p tin JAD không thu c
t p tin JAR u đi m c a t p tin JAD là các đ c đi m c a MIDlet có th
Trang 21đ c xác đ nh tr c khi download t p tin JAR Nói chung, c n ít th i gian
đ download m t t p tin v n b n nh h n là download m t t p tin JAR
N i dung c a t p tin JAR:
- Manifest-Version // Phiên b n t p tin Manifest
- MIDlet-Name // Tên b MIDlet (MIDlet suite)
- MIDlet-Version // Phiên b n b MIDlet
ph n nào s đ c hi n th lên trên thi t b
Ta có th chia các l p MIDP thành hai m c đ h a: đ h a m c th p và đ
h a m c cao h a m c cao dùng cho v n b n hay form h a m c th p dùng cho các ng d ng trò ch i, ph i v lên màn hình
Giao di n đ h a trong MIDP
C hai l p đ h a m c th p và m c cao đ u là l p con c a l p Displayble Trong MIDP, ch có th có m t l p displayable trên màn hình t i m t th i
đi m Có th đ nh ngh a nhi u màn hình nh ng m t l n ch hi n th đ c m t màn hình
Trang 223.2.1 h a m c cao
h a m c cao là l p con c a l p Screen Nó cung c p các thành ph n nh text box, form, list, và alert Ta ít đi u khi n s p x p các thành ph n trên màn hình Vi c s p x p th t s ph thu c vào nhà s n xu t
- TextBox cho phép nh p nhi u dòng Thành ph n TextBox và TextField có
nh ng ràng bu c gi ng nhau trong vi c ch đ nh lo i n i dung đ c phép
nhâp vào Ví d ANY, EMAIL, URI…
- M t Alert đ n gi n là m t h p tho i r t nh Có 2 lo i Alert:
o Modal: là lo i h p tho i thông báo đ c trình bày cho đ n khi ng i dùng n nút đ ng ý
o Non-modal: là lo i h p tho i thông báo ch đ c trình bày trong m t s giây nh t đ nh
3.2.2 h a m c th p
M c dù các hàm API c p cao cung c p m t t p đ y đ các thành ph n đ xây d ng giao di n ng d ng ng i dùng Tuy nhiên các thành ph n c p cao không cung c p ph ng ti n đ v tr c ti p lên thi t b th hi n Vì thi u kh n ng này nên các ng d ng đ c t o ra s g p nhi u gi i h n Ví
d h u h t các nhà phát tri n game di đ ng d a trên kh n ng v các đ ng
th ng và các hình d ng nh là m t ph n tích h p quá trình phát tri n
N u các hàm API c p cao cho phép chúng ta t o ra giao di n cho các ng
d ng theo chu n, thì các hàm API c p th p cho phép chúng ta có th th
hi n các ý t ng c a mình
Canvas và Graphics là 2 l p trái tim c a các hàm API c p th p Canvas
là m t khung v cho phép ng i phát tri n có kh n ng v lên thi t b trình bày c ng nh là vi c x lý s ki n Còn l p Graphics cung c p các công c
th t s đ v nh drawRoundRect() và drawString()
Trang 233.3 Âm thanh
Trong phiên b n MIDP 1.0, các l p trình viên trên đi n th ai di đ ng g p khó
kh n trong vi c x lý âm thanh, vì MIDP 1.0 không h tr vi c x lý âm thanh nên các nhà s n xu t ph i cung c p thêm các hàm API chuyên d ng cho vi c này
ây là c g ng c a nhà s n xu t đ c i ti n ch t l ng các đi n th ai tuy nhiên
nó l i gây khó kh n đ i v i l p trình viên khi ph i t o ra nhi u phiên b n khác nhau cho t ng l ai máy c a th
phiên b n MIDP 2.0, đi u này đã đ c SUN c g ng kh c ph c b ng vi c
h tr 2 b th vi n API:
- MIDP 2.0 Sound API
- Mobile Media API ( MMAPI )
Vi c chia thành hai b API, n y sinh t th c t là nh ng thi t b đang có m t
s r t tài nguyên-ch Nó có th không đ c kh thi đ h tr m t lo t các lo i hình đa ph ng ti n, ch ng h n nh video, trên m t s đi n tho i di đ ng Tuy nhiên, không ph i t t c các MIDP 2.0 h tr đ y đ Mobile Media API Và trong đ tài này, g n ti n trong vi c l p trình, em ch y u s d ng gói th vi n này
3.4 MIDP là gì?
3.4.1 S ki n hành đ ng
Khi m t đ i t ng x y ra trên thi t b di đ ng, m t đ i t ng Command
gi thông tin v s ki n đó Thông tin này bao g m lo i hành đ ng th c thi, nhãn c a m nh l nh và đ u tiên c a chính nó Trong J2ME, các hành
đ ng nói chung đ c th hi n d i d ng các nút trên thi t b
N u có quá nhi u hành đ ng đ c hi n th trên thi t b , thi t b s t o ra
m t th c đ n đ ch a các hành đ ng
Trong MIDP thì các l nh đ c bi u di n b ng l p Command và đ c
x lý thông qua giao ti p CommandListener ho c ItemCommandListener
- CommandListerner dùng cho các thành ph n nh Form, List, và TextBox và Canvas
- ItemCommandListener dùng cho các thành ph n item trong Form 3.4.2 S ki n phím
Ta có th d dàng ki m soát thao tác phím trên đ i t ng canvas Khi
ng i dùng nh n m t phím trên đi n th ai, m t s ki n đ c l p t c g i
Trang 24cho ng d ng, ng d ng s nh n s ki n, phân tích phím nh n và x lý hành đ ng t ng ng
i t ng Canvas cung c p các ph ng th c sau:
- void keyPressed(int keyCode)
- void keyReleased(int keyCode)
- void keyRepeated(int keyCode)
- boolean hasRepeatEvents()
- String getKeyName(int keyCode)
3.5 L u tr d li u
MIDP không s d ng h th ng file đ l u tr d li u Thay vào đó MIDP
l u toàn b thông tin vào non-volatile memory b ng h th ng l u tr g i là Record Management System (RMS)
3.5.1 Record Management System
RMS là h th ng đ c t ch c và qu n lý d i d ng các record (b n ghi) M i b n ghi (sau này g i là Record) có th ch a b t k lo i d li u nào, chúng có th là ki u s nguyên, chu i ký t hay có th là m t nh và
k t qu là m t Record là m t chu i (m ng) các byte N u b n mã hoá d
li u c a b n d i d ng nh phân (binary), b n có th l u tr d li u b ng Record sau đó đ c d li u t Record và khôi ph c l i d li u ban đ u T t nhiên kích th c d li u c a b n không đ c vu t quá gi i h n qui đ nh
c a thi t b di đ ng RMS l u d li u g n nh m t c s d li u, bao g m nhi u dòng, m i dòng l i có m t s đ nh danh duy nh t:
M t t p các b n ghi (sau này g i là RecordStore) là t p h p các Record
đ c s p x p có th t M i Record không th đ ng đ c l p mà nó ph i thu c vào m t RecordStore nào đó, các thao tác trên Record ph i thông qua RecordStore ch a nó Khi t o ra m t Record trong RecordStore, Record
đ c gán m t s đ nh danh ki u s nguyên g i là Record ID Record đ u tiên đ c t o ra s đ c gán Record ID là 1 và s t ng thêm 1 cho các Record ti p theo C n chú ý r ng Record ID không ph i là ch m c (index), các thao tác xóa Record trong RecordStore s không gây nên vi c tính toán
l i các Record ID c a các Record hi n có c ng nh không làm thay đ i Record ID c a các Record đ c t o m i, ví d : khi ta xóa record id 3 khi thêm m t record m i s có id là 4 Data là m t dãy các byte đ i di n cho d
Trang 25li u c n l u c t MIDP không đ nh ngh a chuy n gì x y ra khi đ t đ n s
ID b n ghi t i đa, đi u này ph thu c vào ng d ng
Tên đ c dùng đ phân bi t các RecordStore trong b các MIDlet (MIDlet suite) C n chú ý khái ni m MIDlet suite là t p 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 bi n t nh (static variable) trong các l p và các MIDlet này s đ c đóng gói trong cùng m t file jar khi tri n khai N u ng d ng
c a b n ch có m t MIDlet thì các RecordStore đ c s d ng c ng phân
bi t l n nhau b ng các tên Tên c a RecordStore có th dài đ n 32 ký t Unicode và là duy nh t trong m t MIDlet suite
Nh trong hình, các MIDlet có th có nhi u h n m t t p l u tr b n ghi, chúng ch có th truy xu t d li u l u tr b n ghi ch a trong b MIDlet c a chúng Do đó, MIDlet 1 và MIDlet 2 có th truy xu t d li u trong Record Store 1 và Record Store 2 nh ng chúng không th truy xu t d li u trong Record Store3 Ng c l i, MIDlet 3 ch có th truy xu t d li u trong Record Store 3 và không th truy xu t d li u d li u trong Record Store 1
và Record Store 2
3.5.2 H n ch
Dung l ng vùng nh (non-volatile memory) dành riêng cho vi c l u
tr d li u trong RMS thay đ i tùy theo thi t b di đ ng c t MIDP yêu
c u r ng các nhà s n xu t thi t b di đ ng ph i dành ra vùng nh có kích
th c ít nh t 8K cho vi c l u tr d li u trong RMS c t không nêu gi i
h n trên cho m i Record RMS cung c p các API đ xác đ nh kích th c
Trang 26c a m i Record, t ng dung l ng c a RecordStore và kích th c còn l i
c a vùng nh này Do đó trong quá trình phát tri n các ng d ng J2ME
ph i cân nh c trong vi c s d ng vùng nh này
3.5.3 T c đ truy xu t
Các thao tác trên vùng nh này (non-volatile memory) t t nhiên s ch m
h n nhi u khi b n truy xu t d li u trên b nh RAM (volatile memory)
N u RecordStore c a b n ch đ c s d ng b i m t MIDlet, b n không
ph i lo l ng v v n đ này vì RMS s dành riêng m t Thread đ th c hi n các thao tác trên RecordStore Tuy nhiên n u có nhi u MIDlet và Thread cùng chia s m t RecordStore thì ph i chú ý đ n k thu t l p trình Thread
đ đ m b o không có s xung đ t d li u
L u tr b n ghi cho phép l u d li u khi ng d ng thoát, kh i đ ng l i
và khi thi t b di đ ng t t hay thay pin D li u l u tr b n ghi s t n t i trên thi t b di đ ng cho đ n khi ng d ng th t s đ c xóa kh i thi t b di
đ ng Khi m t MIDlet b xóa, t t c các l u tr b n ghi c a nó c ng b xóa
Trang 27CH NG 4: L P TRÌNH M NG
4.1 Khái quát
c t MIDP 1.0 phát bi u r ng các tri n khai c a MIDP trên thi t b di
đ ng b t bu c ph i h tr ít nh t là k t n i HTTP 1.1 s d ng khung k t n i chung (GCF – Generic Connection Framework) S d ng k t n i client HTTP 1.1 ngh a là thi t b g i m t yêu c u (request) và server g i v m t h i đáp (response) t ng ng
B ng cách ch dùng k t n i HTTP client ngh a là server không th thi t l p liên l c v i thi t b ngo i tr b ng cách h i đáp m t request M t MIDlet HTTP client thông th ng s dùng c hai ph ng th c HTTP GET và POST
c t MIDP 2.0 phát bi u r ng c HTTP và HTTPS b t bu c ph i đ c h
tr
¬ Thân c a thông đi p HTTP: Thông tin g i trong thân thông đi p HTTP
request và response đ n gi n là m t lu ng byte MIDlet và servlet ch n
ki u đ nh d ng thông tin đ mã hóa các byte này
¬ Thân c a thông đi p SOAP/HTTP: Các đi m cu i d ch v Web d a trên
SOAP trao đ i các thông đi p SOAP v i nhau HTTP là m t c ch m c
đ nh dùng đ truy n thông đi p SOAP Thông đi p SOAP ch a d li u theo
đ nh d ng XML Thông đi p XML có th dùng c UTF-8 hay UTF-16 đ làm b ng mã và mã hóa
Trang 28c a nó đ c đ nh ngh a và mô t b ng XML nh ngh a c a nó có th
đ c nh n ra b ng các h th ng ph n m m khác Các h th ng này sau đó
có th t ng tác v i d ch v Web theo ph ng cách đ c mô t trong đ nh ngh a c a nó, s d ng các thông đi p theo XML đ c chuy n b ng các giao th c Internet
4.2.2 Các đ c t trong webservice
Hai đ c t quan tr ng v d ch v Web là Ngôn ng mô t d ch v Web (Web Services Description Language – WSDL) và Giao th c truy xu t đ i
t ng đ n gi n (Simple Object Access Protocol – SOAP)
- WSDL đ c dùng đ mô t m t d ch v Web đã đ c tri n khai
- SOAP đ c dùng đ đ nh ngh a đ nh d ng c a thông đi p đ c trao đ i
gi a các đi m cu i (thí d nh client và server) c a d ch v Web trong
c t MIDP 1.0 và MIDP 2.0 không xác đ nh b t k h tr nào cho XML hay SOAP Các nhà phát tri n MIDP mu n s d ng XML hay SOAP th ng
ph i s d ng các th vi n bên ngoài i u này r t b t l i vì m i MIDlet ph i
ch a các th vi n này Các th vi n nh v y th ng kho ng 25 đ n 50 KB
Trang 29(kích th c file class) i u này có kh n ng s làm gi m không gian cho ng
d ng MIDlet
Lu n v n này, em s d ng các th vi n m KXML và KSOAP Ngoài ra,
m t vài th vi n XML và SOAP khác nh m đ n thi t b J2ME c ng có th d dàng đ c tìm th y, và có th đ c s d ng theo ph ng cách t ng t .
Trang 30CH NG 5: NH V THI T B DI NG
xác đ nh v trí c a đi n th ai di đ ng ta có nhi u công ngh khác nhau
đ th c hi n Sau đây là 2 công ngh c b n nh t
Ü S d ng m ng đi n th ai di đ ng GSM
Ü S d ng thi t b đ nh v GPS
5.1 M ng đi n tho i GSM
ây là cách đ n gi n và khá ph bi n trong l nh v c xác đ nh v trí c a đi n
th ai u đi m c a ph ng pháp này là có th s d ng cho t t c các đi n tho i
di đ ng Tuy nhiên đ làm đ c này ta c n có s h p tác và cho phép c a nhà cung c p d ch v đi n th ai đ có th s d ng h th ng GSM c a h Vì lý do
đó trong lu n v n này em không th th c hi n ph ng pháp này
GSM hi n đang là h th ng thông tin di đ ng đ c s d ng r ng rãi nh t trên th gi i Trong h th ng GSM ch c n ng qu n lý kh n ng di đ ng (MM-Mobility Management) đ c th c thi khá đ y đ V trí các thuê bao trong
m ng GSM có th đ c xác đ nh ngay thông qua c ch qu n lý v trí trong
ch c n ng MM Có th t c h tr đ th c hi n đi u này đó là: C p nh t v trí (Location Update) và Paging V trí qu n lý trong h th ng GSM có th sau đó tham chi u v i t a đ th c và đ a ra v trí đ a lý c a thuê bao v i đ chính xác không cao Bên c nh đó n u các th t c này đ c đ a vào s d ng nh m t
d ch v cho t t c ng i dùng thì s ph i s d ng thêm tài nguyên h th ng
hi n đang s d ng cho các d ch v khác
Trang 315.2 Thi t b đ nh v GPS
H th ng đ nh v tòan c u (GPS), s d ng 24 v tinh bay trên qu đ o trái đ t GPS xác đ nh v trí c a thi t b tính toán s khác bi t trong th i gian tín hi u t các v tinh đi đ ti p c n v i ng i nh n Tín hi u GPS đ c mã hóa, do đó, các thi t b di đ ng ph i đ c trang b máy thu GPS GPS có kh n ng là ph ng pháp chính xác nh t (gi a 4 và 40 mét, n u nh n GPS có m t l n xem c a b u
Trong tr ng h p này, ta s d ng gói JSR 179 - JavaLocationAPI
JSR 179 đ nh ngh a các l p và các giao di n cho vi c xây d ng các ng
d ng đ nh v trên n n các thi t b di đ ng phát tri n ng d ng đ nh v v i JSR 179 yêu c u thi t b di đ ng đ c thi t k h tr JSR 179 Hi n t i Sun có cung c p b công c WTK h tr l p trình cho các ng d ng JSR 179 v i yêu
c u CLDC t 1.1 tr lên vì các phiên b n CLDC tr v tr c không h tr d u
ph y đ ng Hi n t i m i nh t WTK 2.5.2 h tr đ y đ các specification c a JSR 179
V i JSR 179 ta có th d dàng th c hi n vi c l y thông tin v trí GPS nh sau:
// Set criteria for selecting a location provider:
// accurate to 500 meters horizontally Criteria cr= new Criteria();
Trang 32double lon = c.getLongitude();
Trong cách này ta ch y u s d ng gói JSR 82 – Bluetooth API đ
th c hi n các thao tác liên quan v BlueTooth
đ c thông tin t m t thi t b GPS, ta c n th c hi n các giai đo n sau:
ki m, k t n i v i thi t b BlueTooth
Trang 33b c 3 này, ngoài vi c thi t b BlueTooth th c hi n vi c g i d
li u liên t c dó do ta c ng ph i th c hi n thao tác đ c liên t c d li u
nh n đ c và ghép chúng thành nh ng câu hoàn ch nh C n chú ý r ng, thi t b GPS g i tr v r t nhi u lo i câu GPS khác nhau nh :
$GPBOD - Bearing, origin to destination
$GPBWC - Bearing and distance to waypoint, great circle
$GPGGA - Global Positioning System Fix Data
$GPGLL - Geographic position, latitude / longitude
$GPGSA - GPS DOP and active satellites
$GPGSV - GPS Satellites in view
$GPHDT - Heading, True
$GPR00 - List of waypoints in currently active route
$GPRMA - Recommended minimum specific Loran-C data
$GPRMB - Recommended minimum navigation info
$GPRMC - Recommended minimum specific GPS/Transit data
$GPRTE - Routes
$GPTRF - Transit Fix Data
$GPSTN - Multiple Data ID
$GPVBW - Dual Ground / Water Speed
$GPVTG - Track made good and ground speed
$GPWPL - Waypoint location
$GPXTE - Cross-track error, Measured
$GPZDA - Date & Time
Tùy vào yêu c u c a ch ng trình mà ta s phân tích chu i nào và
lo i b chu i nào lu n v n này, do c a ch ng trình l ch l y thông
tin v trí, nên em ch ph n tích 2 chu i c b n GPGGA và GPRMC
6 = GPS quality indicator (0=invalid; 1=GPS fix; 2=Diff GPS fix)
7 = Number of satellites in use [not those in view]
8 = Horizontal dilution of position
9 = Antenna altitude above/below mean sea level (geoid)
10 = Meters (Antenna height unit)
11 = Geoidal separation (Diff between WGS-84 earth ellipsoid and mean sea level -=geoid is below WGS-84 ellipsoid)
12 = Meters (Units of geoidal separation)
13 = Age in seconds since last update from diff reference station
Trang 3414 = Diff reference station ID#
15 = Checksum
Ü Chu i GPRMC
$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh
1 = UTC of position fix
2 = Data status (V=navigation receiver warning)
3 = Latitude of fix
4 = N or S
5 = Longitude of fix
6 = E or W
7 = Speed over ground in knots
8 = Track made good in degrees True
Trang 35CH NG 6: PHÂN TÍCH THI T K NG D NG
6.1 Kh o sát hi n tr ng
Hi n nay, khi chi c đi n tho i di đ ng đang đ c s d ng r ng rãi h n
Chúng tuy nh bé nh ng h t s c ti n l i, ngoài ch c n ng liên l c, nó còn là
m t ph tá không th thi u trong công vi c và là ph ng ti n gi i trí lý thú
Hi n nay ph n m m b n đ trên đi n tho i di đ ng là không thi u, nh ng chúng th ng b h n ch c b n v m t d li u ( d li u n m kèm theo ch ng
trình ) Còn nh ng ph n m m b n đ ho t đ ng theo c ch Client-Server là r t
ít, do t c đ truy n d li u gi a Server và đi n tho i di đ ng còn h n ch Tuy
nhiên v i vi c các nhà cung c p d ch v di đ ng chay đua v i nhau cung c p
d ch v 3G, h a h n t c đ truy n t i d li u gi a Server và đi n tho i di đ ng
s c i thi n h n
Trong b i c nh Vi t Nam đang h i nh p v i th gi i Vi c cho ra đ i m t
s n ph m b n đ trên đi n tho i di đ ng hi n th b n đ c a 64 t nh thành c a
Trang 36- H th ng l y nh đã có trên máy, v lên màn hình
- H th ng ki m tra xem, vùng b n đ trên màn hình đã hoàn ch nh
Trang 372: Paint
3: Check Map
4: Call Webservice get map information
Trang 386.3.4 Tìm đ ng đi ng n nh t gi a hai đi m
• Mô t : Ng i dùng mu n tìm đ ng đi ng n nh t gi a 2 đi m trên b n
- N u ch a xác đ nh đi m đ u hay đi m cu i k t thúc s ki n
- H th ng y u c u webservices cung c p thông tin v đ ng đi ng n
nh t theo các tham s trên
2: Check zoom level
3: Set zoom value
4: Paint
Trang 39- N u webservice tr v null k t thúc s ki n, hi n th thông báo
- Ng c l i, h th ng phân tích đ i t ng tr v đ l y thông tin
- Hi n th k t qu đ ng đi
- V đ ng đi lên b n đ
Trang 40- Ch ng trình tính toán v trí c a ng i dùng v i t a đ trên đ ng đi
đ ch ra h ng d n ( h ng d n g m: âm thanh và m i tên ch d n
đ ng đi )
User
1: Select begin point
2 Select end point
3 Find shorstest path
7 Paint
4: Get.ShortestPath
ShortestPathRecord ShortestPathList
6: Show result.
5: ParseInformation