o Thêm các API h tr Multimedia: Mobile Media API MMAPI.
Trang 1CH NG 1 GI I THI U T NG QUAN
1.1 Lý do ch n đ án
Công ngh thông tin ngày nay có vai trò r t quan trong trong cu c 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 trong đ i
s ng giúp công vi c đ c ti n hành m t cách nhanh chóng và hi u qu h n Có r t nhi u công ngh m i phát tri n song song v i vi c phát tri n công ngh thông tin
nh Bluetooth, ADSL, Wireless, Mobile, WAP,…nh m giúp công ngh thông tin ngày càng thân thi t v i ng i dùng h n M t trong nh ng công ngh mà góp ph n không nh trong vi c đ a công ngh thông tin đ n v i ng i s d ng và góp ph n không nh trong công vi c hàng ngày c a chúng ta là công ngh di đ ng
V i t c đ phát tri n c a công ngh di đ ng ngày nay và nh ng l i ích mà nó mang l i cho chúng ta là r t l n Không gi ng nh nh ng chi c đi n tho i tr c đây – ch có nhi m v tho i, đi n tho i hi n nay không ch có nhi m v tho i mà còn h
tr r t nhi u ng d ng khác nh : g i/nh n mail, truy c p Intenet, xem phim, nghe
nh c, ch i game,… Nh ng chi c đi n tho i di đ ng hi n nay h tr r t m nh v âm thanh, hình nh, đ ho góp ph n làm t ng tính n ng gi i trí c a đi n tho i di
đ ng c ng đ ng th i tìm hi u vi c xây d ng các ng d ng trên đi n tho i di đ ng, chúng em ch n đ án là Tìm hi u v J2ME (Java 2 Micro Edition) và vi t nh ng game đ n gi n nh m khai thác các tính n ng m nh c a đi n tho i di đ ng hi n nay Qua đ án chúng em c g ng n m b t và ng d ng đ c t t các k thu t l p trình trên thi t b di đ ng Hi v ng k t qu c a đ án s là m t tài li u tham kh o có ích cho các b n sinh viên
1.2 M c tiêu
Sau khi th c hi n đ án, các m c tiêu mà chúng em c n đ t đ c là:
̇ Hi u chi ti t v J2ME và ng d ng c a nó đ l p trình trên các thi t b di
đ ng
Trang 2̇ N m đ c các k thu t x lý âm thanh, hình nh và l u tr trên đi n tho i di
đ ng
̇ ng d ng các k t qu nghiên c u đ c xây d ng game đ n gi n khai thác các đi m m nh v âm thanh, hình nh, đ h a nh m ph c v cho nh c u
gi i trí c a ng i dùng
̇ Áp d ng thành công trên m t s máy đi n tho i di đ ng có h tr Java nh Nokia, Samsung, Sony Ericsson…
1.3 i t ng nghiên c u
xây d ng ng d ng trên đi n tho i di đ ng, đ i t ng mà chúng em c n tìm
hi u g m các ph n sau:
- Nghiên c u ngôn ng l p trình Java và công ngh J2ME ng d ng l p trình trên đi n tho i di đ ng
- Nghiên c u các k thu t x lý đ h a và ho t hình
- Nghiên c u các k thu t x lý phím trên đi n tho i di đ ng
- Nghiên c u các k thu t l u tr d li u trên đi n tho i di đ ng
- Nghiên c u các k thu t x lý âm thanh trên đi n tho i di đ ng
- K thu t x lý b nh
- Cách nén và t i u code cho ng d ng trên đi n tho i di đ ng
1.4 Ph m vi nghiên c u
Nghiên c u chi ti t v công ngh J2ME và tìm hi u các k thu t l p trình trên
đi n tho i di đ ng ng d ng k t qu nghiên c u đ xây d ng đ c ng d ng khai thác đ c các th m nh c a đi n tho i di đ ng Vì th i gian không nhi u nên chúng
em ch trình bày m t s k thu t trên đi n tho i di đ ng thu c các hãng l n nh Nokia, Samsung hay Sony Ericssion Chúng em c g ng khai thác h t các th m nh
v âm thanh, hình nh mà các nhà s n xu t cung c p
1.5 Môi tr ng th c hi n đ án
- H đi u hành Windows 2000, Windows XP
- Borland JBuiler 9, X
Trang 3- JDK 1.4.2
- Nokia Developer’s Suite 2.1 for J2ME , Series 40 Developer SDK
- Samsung JaUmi Wireless Tookit 2.0, Samsung SDK 1.0
- Sony Ericssion Wireless Tookit 1.0, 2.0
1.6 Gi i thi u v Java và ng d ng l p trình trên thi t b
di đ ng
Công ngh di đ ng ngày càng phát tri n Chi c đi n tho i di đ ng hi n nay không còn đ n gi n th c hi n duy nh t nhi m v tho i mà ngày càng tr nên m t
tr lý không th thi u và còn là thi t b ph c v cho nhu c u gi i trí Công ngh Java là công ngh đi tiên phong trong vi c xâm nh p vào l nh v c di đ ng N u b n
có chi c đi n tho i di đ ng h tr Java, b n có th ch i game, ch y các ng d ng
vi t b ng Java b t k n i đâu và b t k lúc nào
1.6.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 thi 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à nh 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 V i s phát tri n c a Java hi n nay, các nhà phát tri n đã xây
d ng nhi u nhánh m i cho Java nh : JavaMail(th đi n t ), Java TAPI( vi n thông), Java3D (đ ho 3 chi u), J2ME ( ng d ng cho thi t b di đ ng) Java có các phiên b n sau:
J2EE TM (Java 2 Platform, Enterprise Edition): phiên b n dành cho máy ch
l n v i s c m nh x lý và dung l ng b nh l n
J2SE TM (Java 2 Platform, Standard Edition): phiên b n chu n ch y trên các
máy PC và laptop v i m t s MB b nh Các máy tính này m c dù không m nh
b ng các máy ch nh ng v n m nh h n nhi u so v i các thi t b di đ ng
Trang 4J2ME (Java 2 Platform, Micro Edition): là m t phiên b n rút g n c a Java
cho các thi t b di đ ng gi i h n v b nh và b x lý
1.6.2 Gi i thi u v J2ME và ng d ng l p trình cho đi n tho i di đ ng
1.6.2.1 Gi i thi u v J2ME
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 (Micro có ngh a là nh trong ti ng Anh)
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:
M i t ng trên t ng ph n c ng là t ng tr u t ng, nó cung c p cho l p trình viên nhi u giao di n l p trình ng d ng thân thi n h n
MIDP – Mobile
Imfomation
Device Profile
Các API khác
C u hình CLDC – Connected
Limited Device Configuration
Máy o JAVA
Ph n c ng thi t b
Trang 5o T ng ph n c ng thi t b (Device Hardware Layer): đây là thi t b di
đ ng th t s v i c u hình ph n c ng (b nh và t c đ x lý) c th Các thi t b di đ ng có th có b vi x lý khác nhau và các t p 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
o 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 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 các thi t b di đ ng T ng này cung c p m t s chu n hoá cho các thi t b di đ ng đ ng d ng J2ME sau khi đã biên d ch có th ch y
đ c trên b t k thi t b di đ ng nào có h tr J2ME KVM
o T ng c u hình (Configuration Layer): 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à các 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)
o T ng hi n tr ng (profile layer): cung c p t p các hàm API h u d ng h n
cho l p trình M c đích c a t p hi n tr ng là xây d ng nê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 B ng mô t m t s thi t b s d ng J2ME:
PCs JDKTM 1.1.x JavaTM 2 Platform Standard Edition
(J2SE TM) PDAs and
Communicators
Personal JavaTM JavaTM 2 Platform, Micro Edition
(J2ME TM) / CDC
Embedded Devices Embedded JavaTM J2ME/CLDC
Smart Cards JavaCardTM JavaCard
Trang 61.6.2.2 Lý do ch n J2ME
Java ban đ u đ c thi t k dành cho các máy v i tài nguyên b nh h n ch 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.6.2.3 Gi i thi u các thành ph n trong n n t ng J2ME
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 s l ng b nh
• 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 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 là CDDC và CDC
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
Trang 7Wireless ), 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 …
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
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 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 Chúng ta s đi m qua 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ó
Trang 8th 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)
Hi n nay, MIDP có hai phiên b n là MIDP 1.0 và MIDP 2.0 Nh ng ch c
n ng mà MIDP cung c p:
o Các l p và các ki u d li u: ph n l n các l p quen thu c v i các l p trình viên trong Java v n gi l i, ví d : các l p trong gói java.util nh Stack, Vector, Hastable,…
o H tr đ i t ng Display: 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
o H tr Form và giao di n ng i dùng
o H tr Timer và Alert
o Record Management System (RMS) cho vi c l u tr d li u
MIDP 2.0 đ c SUN cho ra đ i vào tháng 11/2003 v i hàng lo t tính n ng m i (hi n nay m t s lo i đi n tho i h tr MIDP 2.0 nh Nokia 6600, Sony Ericssion P900) ây là b ng mô t nh ng tính n ng n i b t c a MIDP 2.0 so v i MIDP 1.0:
o Nâng c p tính n ng b o m t: doanload qua m ng an toàn h n qua vi c h tr giao th c HTTPS Ki m soát vi c k t n i gi a máy di đ ng v i Server: ví d các ch ng trình s không th k t n i đ n server n u không có s ch p nh n
c a ng i dùng
o Thêm các API h tr Multimedia: Mobile Media API (MMAPI)
o 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, nh ng thay đ i l n nh t là trong Form và Item
o H tr l p trình game v i Game API: Tr c đây v i MIDP 1.0, l p trình viên
ph i t vi t code cho hành đ ng c a nh n v t và đ h a Vi c này làm t ng kích th c ch ng trình c ng nh kh n ng l i V i Game API trong MIDP 2.0, công vi c này tr nên nh nhàng h n nhi u Ý t ng c b n c a Game API là gi đ nh m t màn hình game nh là t p h p các l p (layer) Ví d :
Trang 9trong game đua xe thì màn hình n n là m t layer, con đ ng là m t layer và chi c xe là m t layer khác
o 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à bi u di n hình nh d i d ng m ng các s nguyên, cho phép thao tác v i d li u hình nh m t cách tr c ti p
Trong đ án chúng em ch t p trung vào MIDP 1.0 vì hi n nay các đi n tho i
h tr MIDP 1.0 là r t nhi u nh ng h tr MIDP 2.0 thì t ng đ i ít
- 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.3
1.7 MIDlet
Các ng d ng J2ME đ c g i là MIDlet (Mobile Imformation Device Applet)
M t MIDlet là m t l p Java m r ng (extend) c a l p tr u t ng
java.microedition.midlet.MIDlet và th c thi (implement) các ph ng th c
startApp(), pauseApp() và destroyApp().
Hình sau bi u di n b khung yêu c u t i thi u c a m t ng d ng MIDlet
Import javax.microedition.midlet.*;
Public class exampleMIDlet extends MIDlet { Public exampleMIDlet(){}
Public void startApp(){}
Public void pauseApp(){}
Public void destroyApp(boolean unconditional){}
}
- Các phát bi u import đ c dùng đ include các l p c n thi t t các th vi n CLDC và MIDP
- Ph n chính c a MIDlet: đ c đ nh ngh a nh là l p m r ng c a l p MIDlet, trong ví d này là exampleMIDlet
Trang 10- Hàm t o (Constructor): hàm t o ch đ c th c thi m t l n khi MIDlet kh i
t o l n đ u tiên, hàm t o s không đ c g i l i tr khi MIDlet thoát và sau đó
kh i đ ng l i
- startApp(): ph ng th c startApp() đ c g i b i b qu n lý ng d ng khi MIDlet đ c kh i t o hay khi MIDlet tr v tr ng thái t m d ng
- pauseApp(): ph ng th c pauseApp() đ cg i b i b qu n lý ng d ng
m i khi ng d ng c n đ c t m d ng
- destroyApp(): ph ng th c này đ c g i khi thoát MIDlet
1.8 Chu k s ng c a MIDlet
S đ bi u di n chu k s ng c a Midlet
Khi ng i dùng yêu c u th c thi ng d ng, b qu n lý ng d ng s th c thi MIDlet Khi ng d ng th c thi, nó s đ c xem là tr ng thái t m d ng, b qu n lý
ng d ng s g i hàm t o và hàm startApp(). Hàm startApp() có th đ c g i nhi u l n trong quá trình th c thi ng d ng Hàm destroyApp() ch có th g i khi
ng d ng tr ng thái ho t đ ng ho c t m d ng
destroyApp(
)
startApp() pauseApp()
T m d ng
Ho t đ ng
H y
Ch ng trình đ c