NghienCuuJavaMobile
Transcript of NghienCuuJavaMobile
-
8/14/2019 NghienCuuJavaMobile
1/234
TRNG I HC KHOA HC TNHINKHOA CNG NGH THNG TIN
B MN MNG MY TNH VIN THNG
NG NGUYN KIM ANH O ANH TUN
NGHIN CU JAVA MOBILEV XY DNG NG DNG
MINH HA
KHA LUN CNHN TIN HC
TP.HCM, 2005
-
8/14/2019 NghienCuuJavaMobile
2/234
TRNG I HC KHOA HC TNHINKHOA CNG NGH THNG TIN
B MN MNG MY TNH VIN THNG
NG NGUYN KIM ANH 0112424O ANH TUN 0112451
NGHIN CU JAVA MOBILEV XY DNG NG DNG
MINH HA
KHA LUN CNHN TIN HC
GIO VIN HNG DN
Thy NGUYN MINH TUN
NIN KHA 2001-2005
-
8/14/2019 NghienCuuJavaMobile
3/234
Li Cm n!
Sau hn nm thng tm hiu v thc hin, lun vn Nghin cu cng nghJava Mobile v xy dng ng dng minh ho cbn hon thnh. t c
kt qu ny, chng ti n lc ht sc ng thi cng nhn c rt nhiu s
quan tm, gip , ng h ca cc thy c, bn b v gia nh.
Trc ht, chng em xin gi li cm n chn thnh n B mn Mng my
tnh v Vin thng, Khoa Cng ngh Thng tin, trng i hc Khoa hc T nhin
v cc thy c c bit l Thy Nguyn Minh Tun tn tnh gip , hng dn
chng em hon thnh lun vn ny.
Chng ti rt cm n cc bn b trong khoa, cc anh ch, cc bn trong cng
ng Java Vit Nam bn cnh ng h, ng gp kin cho chng ti trong qu
trnh thc hin lun vn.
V chng con cng xin chn thnh cm n gia nh lun ng vin, to
iu kin tt nht cho chng con hc tp v hon tt lun vn.
Lun vn hon thnh vi mt s kt qu nht nh, tuy nhin vn khng
trnh khi sai st. Knh mong s cm thng v ng gp kin t cc thy c v
cc bn.
Thnh ph H Ch Minh, thng 7 nm 2005
ng Nguyn Kim Anh - o Anh Tun
-
8/14/2019 NghienCuuJavaMobile
4/234
MC LC
Li Ni u...................................................................................................... 1Phn 1: Kin thc nn tng J2ME ................................................................ 5Chng 1: Tng quan v J2ME.................................................................... 5
1.1 Gii thiu J2ME (Java 2 Micro Edition).......................................................51.2 L do chng ta cn J2ME..............................................................................61.3 Cc thnh phn ca J2ME:............................................................................7
1.3.1Configuration:.............................................................................................71.3.2Profile: ........................................................................................................91.3.3My o Java..............................................................................................10
Chng 2: Gii thiu CLDC v MIDP ...................................................... 132.1. CLDC ..........................................................................................................13
2.1.1.Yu cu phn cng: ..................................................................................132.1.2.Yu cu phn mm:..................................................................................132.1.3.My o Java:.............................................................................................13
2.2. MIDP:..........................................................................................................162.2.1.Yu cu phn cng: ..................................................................................162.2.2.Yu cu phn mm:..................................................................................162.2.3.Cu trc MID Profile:...............................................................................162.2.4.MIDlet Suite: ............................................................................................182.2.5.Mi trng pht trin ng dng J2ME.....................................................22
Chng 3: Cc vn cbn ca chng trnh MIDlet ......................... 25
3.1. Cu trc cbn: ..........................................................................................253.2. Xy dng mt ng dng MIDlet:................................................................253.3. Lp MIDlet: ................................................................................................26 3.4. Lp MIDletStateChangeException:............................................................28 3.5. Display.........................................................................................................283.6. Lp Displayable: .........................................................................................30 3.7. Qun l cc s kin (event).........................................................................32
3.7.1.Command & CommandListener...............................................................333.7.2.Item v ItemStateListener.........................................................................38
Chng 4: Giao din ha cp cao.......................................................... 40
4.1. Screen: .........................................................................................................424.2. Form: ...........................................................................................................434.3. Item:.............................................................................................................45
4.3.1.DateField: .................................................................................................464.3.2.Gauge:.......................................................................................................484.3.3.String Item:...............................................................................................514.3.4.TextField: .................................................................................................534.3.5.ChoiceGroup: ...........................................................................................574.3.6.Image v ImageItem:................................................................................61
4.4. List:..............................................................................................................64
-
8/14/2019 NghienCuuJavaMobile
5/234
4.5. TextBox:......................................................................................................694.6. Alert v AlertType: .....................................................................................72
4.6.1.Alert:.........................................................................................................724.6.2.AlertType:.................................................................................................74
4.7. Ticker: .........................................................................................................77Chng 5: Giao din ha cp thp........................................................ 78
5.1. Canvas: ........................................................................................................785.1.1.H to:..................................................................................................795.1.2.V trn i tng Canvas:........................................................................795.1.3.Bt s kin trong cc i tng Canvas:..................................................825.1.4.Game action:.............................................................................................855.1.5.S kin con tr:.........................................................................................87
5.2. Graphics: .....................................................................................................895.2.1.Mu sc:....................................................................................................905.2.2.Nt v:.......................................................................................................935.2.3.Font ch:...................................................................................................985.2.4.V cc i tng hnh nh (image): .......................................................1015.2.5.Cc phng thc tnh tin i tng:.....................................................1035.2.6.Vng xn (Clipping regions):.................................................................105
Chng 6: Lu trthng tin vi RMS.................................................... 1066.1. Gii thiu RMS .........................................................................................1066.2. Duyt danh sch Record vi RecordEnumeration ....................................1156.3. Sp xp bng RecordComparator..............................................................117
6.4.
Lc record vi RecordFilter......................................................................119
6.5. Nhn thng ip khi Record Store thay i..............................................1216.6. X l li khi thao tc vi Record Store.....................................................122
Chng 7: Kt ni mng vi Generic Connection Framework (GCF) 1247.1. Gii thiu GFC..........................................................................................1247.2. Lc lp ...............................................................................................1247.3. Kt ni HTTP:...........................................................................................127
7.3.1.Khi to kt ni: .....................................................................................1277.3.2.Cc c im ca kt ni HTTP bng J2ME: ........................................1307.3.3.Thng s kt ni: ....................................................................................137
7.4. Kt ni socket Datagram (UDP) ...............................................................1387.5. Kt ni TCP socket ...................................................................................1417.6. Gi v nhn SMS ......................................................................................144
Phn 2 : Web Service v ng dng "ng K Hc Phn" .................... 149Chng 8: Gii thiu Web Service........................................................... 149
8.1. ng dng phn tn (Distributed Application) ..........................................1498.1.1.Gii thiu................................................................................................1498.1.2.Cc vn ny sinh trong h thng ng dng phn tn.........................1508.1.3.Hn ch ca nhng m hnh ng dng phn tn trc y....................151
8.2. Web Service ..............................................................................................152
-
8/14/2019 NghienCuuJavaMobile
6/234
8.2.1.nh ngha ..............................................................................................1528.2.2.Thnh phn cbn ca Web service:.....................................................1528.2.3.Hot ng ca Web service....................................................................1528.2.4.u im ca web service .......................................................................155
8.3. Cc thnh phn chnh ca Web Service....................................................1578.3.1.SOAP (Simple Object Access Protocol) ................................................1578.3.2.WSDL (Web Service Definition Language) ..........................................162
Chng 9: ng dng ng k hc phn.................................................. 1729.1 c t chng trnh:..................................................................................172
9.1.1Tng quan:..............................................................................................1729.1.2Cc chc nng chnh: .............................................................................172
9.2 Kin trc chng trnh: .............................................................................1749.2.1M hnh kt ni: .....................................................................................1749.2.2M hnh bo mt (m ho password): ....................................................176
9.3 Phn tch - thit k:....................................................................................1779.3.1M hnh use case: ...................................................................................1779.3.2c t mt s use case chnh:.................................................................178
9.4 Thit k m hnh d liu: ..........................................................................1839.4.1M hnh thc th kt hp: ......................................................................1839.4.2Cc bng d liu:....................................................................................1839.4.3Chi tit cc bng d liu:........................................................................1849.4.4Rng buc d liu:..................................................................................1889.4.5M hnh d liu: .....................................................................................1909.4.6Cc chc nng store procedures: ............................................................1909.4.7Thit k lp:............................................................................................191
9.5 Ci t - th nghim:.................................................................................1929.5.1Yu cu phn cng: ................................................................................1929.5.2Yu cu phn mm:................................................................................1939.5.3Giao din chng trnh:..........................................................................193
Chng 10: Tng kt ............................................................................... 20510.1 Kt lun: ....................................................................................................20510.2 Hng pht trin: ......................................................................................207
Ti liu tham kho ...................................................................................... 210
Ph Lc A:Hng dn sdng cng c Sun Wireless ToolKit 2.3 ...... 211Ph Lc B:Xy dng v Sdng Web Service....................................... 217Ph Lc C:Gii thiu cc thvin JSR ................................................... 222
-
8/14/2019 NghienCuuJavaMobile
7/234
Danh Sch Cc Hnh
Hnh 1.1 Cc thit b J2ME h tr..............................................................................6Hnh 1.2 Cc thnh phn ca J2ME............................................................................7Hnh 1.3 Configurations v cc thit b ......................................................................9Hnh 1.4 Cu trc chng trnh J2ME......................................................................11Hnh 1.5 Cu trc chng trnh MIDP .....................................................................11Hnh 2.1 Cu trc thit b MID .................................................................................17Hnh 3.1 Command Exit ...........................................................................................34Hnh 3.2 Command Label .........................................................................................36Hnh 3.3 nh x soft-button......................................................................................36Hnh 4.1 S cc lp giao din ho ..................................................................40
Hnh 4.2 Giao din i tng DateField...................................................................46Hnh 4.3 Giao din i tng Gauge ch tng tc ............................................48Hnh 4.4 Giao din i tng Gauge ch khng tng tc .................................49Hnh 4.5 Giao din i tng StringItem .................................................................52Hnh 4.6 Giao din i tng TextField...................................................................56Hnh 4.7 Giao din i tng ChoiceGroup ch mt la chn ...........................59Hnh 4.8 Giao din i tng ChoiceGroup ch nhiu la chn.........................60Hnh 4.9 Giao din i tng List dng menu..........................................................67Hnh 4.10 Giao din i tng List cho php chn nhiu la chn .........................68Hnh 4.11 Giao din i tng TextBox...................................................................71
Hnh 4.12 Giao din i tng Alert ........................................................................76Hnh 4.13 Giao din Ticker.......................................................................................77Hnh 5.1 Cc phng thc vng cong ...............................................................94Hnh 5.2 Cc phng thc v hnh ch nht ............................................................95Hnh 5.3 Cc phng thc h trv Text ................................................................97Hnh 5.4 Cc nh dng trong Text Graphic.............................................................97Hnh 5.5 Cc phng thc to font.........................................................................100Hnh 5.6 V bng i tng Immutable Image ......................................................101Hnh 5.7 V bng i tng Mutable Image ..........................................................102Hnh 5.8 Cc nh dng v tr trong Graphics .........................................................103
Hnh 7.1 Lc cc lp trong th vin GCF .......................................................125Hnh 7.2 Kt ni UDP.............................................................................................138Hnh 7.3 Kt Ni TCP.............................................................................................141Hnh 7.4 Lc lp th vin WMA.....................................................................145Hnh 8.1 Hot ng ca Web Service.....................................................................152Hnh 8.2 Mt client truy xut n nhiu web services cng lc.............................154Hnh 8.3 Mt web service c th triu tp n cc web services khc...................155Hnh 8.4 Web Service Endpoint..............................................................................162Hnh 9.1 Kin trc chng trnh ng dng.............................................................174Hnh 9.2 M hnh m ho password .......................................................................176
-
8/14/2019 NghienCuuJavaMobile
8/234
Hnh 9.3 Lc use case ......................................................................................177Hnh 9.4 M hnh thc th kt hp ER...................................................................183 Hnh 9.5 Rng buc chu trnh .................................................................................189Hnh 9.6 M hnh csd liu ..............................................................................190
Hnh 9.7 M hnh Lp.............................................................................................192Hnh 9.8 S cc mn hnh ..................................................................................194Hnh 9.9 Mn hnh welcome...................................................................................195Hnh 9.10 Mn hnh ng nhp...............................................................................196Hnh 9.11 Confirm ..................................................................................................197Hnh 9.12 Menu chc nng.....................................................................................198Hnh 9.13 Mn hnh ng k hc phn l thuyt....................................................199Hnh 9.14 Mn hnh ng k hc phn thc hnh ..................................................200Hnh 9.15 Mn hnh xem thi kho biu ................................................................201Hnh 9.16 Mn hnh xem kt qu hc tp...............................................................202Hnh 9.17 Mn hnh xem phiu ng k.................................................................203Hnh 9.18 Mn hnh xem thi kho biu ................................................................204Hnh 10.1 Hng pht trin thc t ........................................................................207Hnh A.1 Cng c Sun WirelessToolkit 2.3 ...........................................................211Hnh A.2 Mn hnh chnh ca cng c ...................................................................212Hnh A.3 To project mi .......................................................................................212Hnh A.4 Cc options cho project ...........................................................................213Hnh A.5 Chnh sa ni dung file Jad v Jar ..........................................................214Hnh A.6 Bin dich project .....................................................................................215Hnh A.7 ng gi ng dng..................................................................................216Hnh B.1 To project Web Service .........................................................................217Hnh B.2 Khai bo lp v hm................................................................................218 Hnh B.3 Export nhiu hm cng lc......................................................................219Hnh B.4 Mn hnh thc thi Web Service ca IE ...................................................219Hnh B.5 File WSDL...............................................................................................220Hnh B.6 Cng c Stub Generator ..........................................................................221Hnh B.7 Cc options ca cng c Stub Generator.................................................221
-
8/14/2019 NghienCuuJavaMobile
9/234
Danh Sch Cc Bng
Bng 2.1 Cu trc file manifest.................................................................................19Bng 2.2 Cu trc file JAD.......................................................................................20
Bng 3.1 Lp MIDlet ................................................................................................27 Bng 3.2 Lp Display ...............................................................................................29 Bng 3.3 Lp Displayable.........................................................................................32 Bng 3.4 Cc Command Type ..................................................................................37Bng 3.5 Command v CommandListener ...............................................................38Bng 3.6 Item v ItemStateListener..........................................................................39Bng 4.1 Lp Screen.................................................................................................42 Bng 4.2 Lp Form ...................................................................................................44 Bng 4.3 Lp Item ....................................................................................................45 Bng 4.4 Lp DateField............................................................................................46
Bng 4.5 Lp Gauge .................................................................................................49 Bng 4.6 Lp StringItem...........................................................................................51 Bng 4.7 Cc Rng Buc ca TextField ...................................................................53Bng 4.8 Lp TextField ............................................................................................55 Bng 4.9 Lp ChoiceGroup ......................................................................................58 Bng 4.10 Lp Image................................................................................................62 Bng 4.11 nh dng ImageItem ..............................................................................62Bng 4.12 Lp ImageItem ........................................................................................63 Bng 4.13 So snh List v ChoiceGroup ..................................................................65Bng 4.14 Lp List....................................................................................................66
Bng 4.15 So snh TextField v TextBox ................................................................69Bng 4.16 Lp TextBox............................................................................................70 Bng 4.17 Lp Alert..................................................................................................73 Bng 4.18 AlertType.................................................................................................75Bng 4.19 Lp Ticker ...............................................................................................77 Bng 5.1 Truy vn kch thc Canvas......................................................................79Bng 5.2 Lp Canvas ................................................................................................81 Bng 5.3 Giao tip vi Application Manager ...........................................................81Bng 5.4 M Phm.....................................................................................................83Bng 5.5 S kin keyPressed ....................................................................................84Bng 5.6 S kin Game Action.................................................................................85Bng 5.7 Bt s kin trong Game Action .................................................................86Bng 5.8 S kin con tr ...........................................................................................87Bng 5.9 Lp Graphics .............................................................................................90 Bng 5.10 Cc phng thc v .................................................................................93Bng 5.11 X l Text................................................................................................96Bng 5.12 Gi tr Anchor ..........................................................................................96Bng 5.13 X l Font ch .........................................................................................98Bng 5.14 Cc gi tr Font ........................................................................................99Bng 5.15 V hnh nh............................................................................................101
-
8/14/2019 NghienCuuJavaMobile
10/234
Bng 5.16 Gi tr Image Anchor .............................................................................103Bng 5.17 Cc phng thc tnh tin .....................................................................103Bng 5.18 Vng xn................................................................................................105Bng 6.1 M hnh Record Store..............................................................................107
Bng 6.2 Lp RecordStore......................................................................................109 Bng 6.3 Lp RecordEnumeration .........................................................................117 Bng 6.4 Cc gi tr hng sp xp record...........................................................118 Bng 6.5 Lp RecordListener .................................................................................121 Bng 7.1 Lp Connector .........................................................................................128 Bng 7.2 Mode Kt Ni ..........................................................................................128Bng 7.3 Cc Request Method chnh......................................................................130Bng 7.4 Cc phng thc set/get Request Method...............................................131Bng 7.5 Cc phng thc truy vn HTTP Header................................................134Bng 7.6 Ly thng s kt ni ................................................................................137Bng 7.7 Lp DatagramConnection .......................................................................139 Bng 7.8 Lp Datagram..........................................................................................140 Bng 7.9 Thuc tnh ca SocketConnection...........................................................142Bng 7.10 Lp SocketConnection ..........................................................................143 Bng 7.11 Cc interfaces chnh ca WMA.............................................................144Bng 9.1 Danh sch cc Use Case ..........................................................................178Bng 9.2 Table ChuyenNganh ................................................................................184Bng 9.3 Table SV ..................................................................................................184Bng 9.4 Table MonHoc .........................................................................................185Bng 9.5 Table GV .................................................................................................185Bng 9.6 Table Lop.................................................................................................185Bng 9.7 Table Lop_MonLT ..................................................................................186Bng 9.8 Table Lop_MonTH..................................................................................187Bng 9.9 Table PhanCongTH .................................................................................187Bng 9.10 Table DangKyLT...................................................................................187Bng 9.11 Table DangKyTH ..................................................................................187Bng 9.12 Table ThongBao ....................................................................................188
-
8/14/2019 NghienCuuJavaMobile
11/234
Cc chvit tt, thut ngc sdng
API Application Program InterfaceCDC Connected Device Configuration
CLDC Connected Limited Device Configuration
Configurationc t qui nh cc th vin gc J2ME phi h trcho mt dng
phn cng.
DES Thut ton m ha kha b mt 64 bits
GCF General Connection Framework
IIS Internet Information Services-Web server chun trn Windows
J2EE Java 2 Enterpise Edition, phin bn Java cho nhng d n ln.
J2ME Java 2 Micro Edition, phin bn Java cho nhng thit b nh.
J2SEJava 2 Standard Edition, phin bn Java ra i u tin, dnh cho
PC thng thng.
JCP T chc Java Community Process
JDK Java Development Kits
JSRJava Specification Requests, nhng yu cu cn b sung cho cc
phin bn Java.
JSR-172 Th vin truy xut web service cho ngn ng J2ME.
JSR-177 Th vin m ha v bo mt cho ngn ng J2ME.
KVM My o Java cho mi trng CLDC.
MIDlet Tn gi chung cho cc ng dng J2ME.
MIDP Mobile Information Device Profile.
MMSMultimedia Message Service, tin nhn hnh nh, m thanh, video
cho di ng.
PDA Personal Digital Assistant.
Profile Cc tp th vin cp cao nh ngha trn nn Configuration.
RMS RecordStore Management System, cch lu tr ca J2ME.
-
8/14/2019 NghienCuuJavaMobile
12/234
SMSShort Message Service, tin nhn thng thng cho in thoi di
ng.
SOAPSimple Object Access Protocol, nh dng thng ip ca Web
Service.
Symbian Hiu hnh cho in thoi di ng ca hng Symbian.
UDDI Universal Description, Discovery, and Integration
Web Service Giao thc gi hm t xa da trn XML v HTTP.
WMA Wireless Message API
WSDL Web Service Definition Language
XML Extensible Markup Language
-
8/14/2019 NghienCuuJavaMobile
13/234
Java Mobile
Li Ni u
Mng in thoi di ng xut hin ti Vit Nam tu nhng nm 1990 v
theo thi gian, s lng cc thu bao cng nh cc nh cung cp dch v di ng ti
Vit Nam ngy cng tng. Cng vi s pht trin ca s lng thu bao di ng l
sa dng ho cc dch v hng n thit b di ng. Ngy nay in thoi di ng
khng ch cn mang chc nng gi in hay nhn tin thng thng m cn l mt
thit b gii tr, tra cu thng tin rt tin li. Do , xy dng cc ng dng cho in
thoi di ng ang l mt yu cu tt yu trong xu th hin nay. Ngnh cng nghipphn mm cho cc thit b di ng c xem nh mt mnh t mu mv ha hn
em li nhiu t la doanh thu.
Hai hng pht trin ng dng trn in thoi di ng ph bin hin nay l
s dng ngn ng C++ trn nn hiu hnh Symbian v J2ME. Cc ng dng vit
trn nn Symbian c cc u th truy cp trc tip cc ti nguyn ca in thoi cng
nh h trh thng tp tin, th mc nh my tnh c nhn v c h tr trc
tip bi hiu hnh. Tuy nhin hiu hnh Symbian li c kch thc kh ln
nn ch c cc th hin thoi tng i cao cp, v xy dng ng dng dng
Symbian API cng phc tp hn.
i trng vi Symbian API l cng ngh J2ME vi kch thc nh gn,
tin dng, c h trbi hu ht cc th hin thoi mi ra i, k c cc in
thoi c hiu hnh Symbian. J2ME khng nhng l mt ngn ng hng n cc
thit b di ng m cn l ngn ng chnh lp trnh trn cc thit b gia dng, th
tn dng in t v cc thit b thng minh khc. Chng ta c th ni i tng ca
ngn ng J2ME l rng hn rt nhiu so vi C++ trn nn Symbian. Ti thi im
hin ti, ngn ng J2ME khng h trc nhiu tnh nng nh C++ trn Symbian
nhng li c nhng u im tri hn.
J2ME l mt ngn ng nh, gn nhng rt cht ch v d nm bt, vi
nhng lp trnh vin c kinh nghim vi Java vic lp trnh vi J2ME trnn rt
1
-
8/14/2019 NghienCuuJavaMobile
14/234
Java Mobile
d dng. J2ME cn l mt ngn ngc cc t chc m ngun mng h mnh
m v pht trin rt nhanh chng, JCP (Java Community Process-
http://www.jcp.org) l mt chng trnh do Sun thnh lp lun tip thu cc kin
v a ra cc c t mi dnh cho Java ni chung v J2ME ni ring. Cc c t
ny thng c tip u ng JSR v l cc tnh nng b sung mi cho J2ME.
Nhng JSR quan trng c thc nhc n nh JSR-82 (Bluetooth), JSR
205 (Gi tin nhn SMS, MMS), JSR-172 (Web service), JSR-177 (Security and
Trust Services), JSR 184 (3D Game) Cc c t ny ngy cng phong ph v
phn no pht trin nhanh hn c s pht trin ca phn cng.
Tht kh so snh gia cc dng ngn ng lp trnh vi nhau v mi loi uc u v khuyt im ring. Trong lun vn ca mnh, chng ti chn nghin cu
v J2ME v nhng u im kh r rng nu trn, mt khc chng ti cng mun
th sc mt lnh vc kh mi m l tip cn vi phn mm m ngun m.
V chng trnh ng dng, tnh kh thi v thc t ngy cng c cao.
Chng ti nhn thy xu hng m rng cc ng dng trn web sang in thoi di
ng ang c ch trng. Thng mi in t (e-commerce) ang tin dn sang
thng mi di ng (m-commerce). Vi thc trng Vit Nam hin nay, s ngi s
hu my vi tnh c nhn, c bit l my tnh xch tay cha nhiu nhng t l s
ngi c in thoi di ng li kh cao. Vic chuyn cc ng dng thng mi t
mi trng web sang mi trng di ng s khin s tin dng tng cao, s ngi
s dng dch v trc tuyn chc chn s tng nhanh v i vi nhiu ngi chic
in thoi di ng d s dng hn rt nhiu so vi chic my tnh "phc tp v kh
hiu".
ng dng chng ti chn thc hin bc chn vo lnh vc kh mi m
ny l ng dng "ng K Hc Phn" qua mng di ng. i vi sinh vin khoa
cng ngh thng tin, h thng ng k hc phn SMS qua mi trng web l mt
ng dng rt quen thuc. Chng ti mun pht trin ng dng ca mnh nh mt
mrng ca h thng ng k hc phn ny trn in thoi di ng nhm h trcc
bn sinh vin c th s dng cc tin ch ca h thng m khng cn phi c my
2
http://www.jcp.org/http://www.jcp.org/ -
8/14/2019 NghienCuuJavaMobile
15/234
Java Mobile
tnh kt ni mng. Vi ng dng ny, tnh tin dng ca h thng ng k hc phn
SMS c mrng. Ch cn c mt in thoi di ng h trGPRS cc bn sinh
vin c thng k hc phn ngay c khi ang v qu n tt nhng vng internet
cha ph bin nhng ph sng di ng hay khi ang di chuyn trn tu xe V
mt s iu kin c bit ca in thoi, hin nay ng dng ny ch chy trn
chng trnh gi lp. Tuy nhin, chng ti hi vng trong mt tng lai rt gn, khi
cc th hin thoi mi c gi thnh va phi ra i v h trmt s cng ngh
nh WebService, m ho m chng ti ang s dng xy dng phn mm th
ng dng ny c thc p dng rng ri trong thc t cho sinh vin ca khoa.
Cn phi ni thm, ng dng hin ti hon ton c th s dng c trong thc tVit Nam nhng c mt si hi v thit b kh t tin (xin xem thm Chng
10, phn Kt Lun), ch khng ch mi l l thuyt trn giy t.
Vi vic xy dng thnh cng h thng ng k hc phn qua mng in
thoi di ng, chng ti rt t tin v vic xy dng cc h thng thng mi di ng
ln hn. Trong tng lai gn, khch hng c th ngi trn taxi mua v my bay, t
ch khch sn, xem li ti khon ngn hng vi chic in thoi di ng nh b.
Chic in thoi di ng s tr thnh mt cng c giao dch khng th thiu trong
thi i mi, thi i ca thng mi in t ton cu.
Lun vn c trnh by thnh hai phn lp:
Phn 1: Gii thiu v l thuyt nn tng ca J2ME, cc th vin, cc k thut lp
trnh, ng gi ng dng di ng.
Chng 1. Tng quan v J2ME : Gii thiu tng quan v J2ME, cc c im v
cc thnh phn con.
Chng 2. Gii thiu CLDC v MIDP: Trnh by chi tit v hai thnh phn quan
trng ca J2ME dnh cho in thoi di ng, mi trng pht trin ng dng J2ME.
Chng 3. Cc vn cbn ca chng trnh MIDlet: Chng ny s trnh by
nhng c im quan trng nht ca mt ng dng J2ME, cc bc cbn xy
dng ng dng ny.
3
-
8/14/2019 NghienCuuJavaMobile
16/234
Java Mobile
Chng 4. Giao din ha cp cao: Trnh by v th vin ha cp cao nh
Form, List, TextBox trong J2ME.
Chng 5. Giao din ha cp thp: Trnh by v lp trnh ha cp thp, cc
phng thc v, x l font, game action trong J2ME.
Chng 6. Lu tr thng tin vi RMS: Trnh by v Record Management System,
mt cch lu tr ring ca J2ME.
Chng 7. Lp trnh mng vi GCF: Trnh by v kh nng lp trnh mng trong
J2ME.
Phn 2: Gii thiu v Web Service, mt cng ngh rt mi xy dng cc ng
dng thng mi in t phn tn v gii thiu chi tit vng dng cng nhngnh gi, tng kt.
Chng 8. Gii thiu vng dng phn tn v web service
Chng 9. Trnh by chi tit vng dng "ng K Hc Phn"
Chng 10. nh gi, tng kt cc kt qut c v hng pht trin trong
tng lai.
Tuy u t kh nhiu th giv cng sc vo lun vn ny nhng chc
chn chng ti cng khng trnh khi nhng sai st. Rt mong nhn c kin
ng gp v s thng cm ca qu thy c v cc bn! Xin chn thnh cm n!
Kim Anh Anh Tun
4
-
8/14/2019 NghienCuuJavaMobile
17/234
Java Mobile
Phn 1: Kin thc nn tng J2ME
Chng 1: Tng quan v J2ME
1.1 Gii thiu J2ME (Java 2 Micro Edition)
J2ME l mt nhnh ca ngn ng lp trnh JAVA c pht trin nhm hng
ti vic lp trnh cho cc thit b nh (micro) c b nh, kh nng hin th v x
l hn ch.
Ban u Java c xy dng ch gm mt phin bn duy nht, ngy nay c
bit n vi tn J2SE (Java 2 Standard Edition), vi phng chm l vit mt ln,
chy trn mi mi trng (Write once, run anywhere). Java c hnh thnh trn
tng xy dng mt ngn ng m lp trnh vin ch cn vit mt ln duy nht
nhng ng dng c th chy trn bt c mi trng no c h trmy o Java (Java
Virtual Machine). lm c vic ny, Java s dng mt phng thc bin dch
m ngun tng i khc so vi cc ngn ng lp trnh truyn thng. B bin dch
Java khng bin dch m ngun trc tip sang m my m bin dch sang mt dngm trung gian m my o Java hiu c (m bytecode). Khi c nhu cu s dng
ng dng, my o Java sc m trung gian ny v dch ra m my v thc thi; nh
vo qu trnh trung gian mt ng dng Java c th chy trn bt k mi trng
no c ci t my o Java tng thch.
c gii thiu ln u vo nm 1995, ngy nay mc tiu Java nhm n cng
thay i kh nhiu. Java hin nay khng ch nhm n h my tnh bn n
thun; hai nm sau ngy u c ra mt, mt phin bn Java mi l J2EE (Java 2
Enterprise Edition) c gii thiu nhm ti vic pht trin cc ng dng c qui
m ln hn.
Phin bn mi nht c thm vo dng ngn ng Java l J2ME (Java 2 Micro
Edition). J2ME nhm n vic pht trin ng dng cho cc ng dng c nng lc
hn ch nhu gii m k thut s TV set-top boxes, in thoi di ng
5
-
8/14/2019 NghienCuuJavaMobile
18/234
Java Mobile
1.2 L do chng ta cn J2ME
Ngy nay ngnh cng nghip sn xut thit b di ng trn th gii ang pht
trin nhanh chng. Cc thit b di ng ngy cng hin i hn, thng minh hnv ngy cng c nhiu tnh nng ni bt. n c nh chic in thoi di ng, ngy
nay chng khng chn thun m nhn chc nng hi thoi m cn c thm
nhiu chc nng nh chp nh, nghe nhc, xem phim nh mt trung tm gii
tr. Cc thit b gia dng khc nh l vi ba, TV cng ngy cng c trang b
nhng tnh nng hin i hn. Nhu cu pht trin phn mm cho cc thit b di
ng, gia dng ngy cng tng cao v c nh gi l mt ngnh cng ngh c th
em li nhiu t la doanh thu. Mt thc tt ra cho cc nh pht trin phn
mm trn cc thit b ny l hin nay khng c mt chun ha no dnh cho cc nh
sn xut phn cng. Cc thit b trn th trng hin nay rt a dng v mang nhiu
c im cng nh cu hnh khc nhau. Trc thc t, vic c th chy trn
nhiu mi trng l mt li th rt ln ca ngn ng Java. Cc nh pht trin Java
cho ra i ngn ng J2ME hng n vic pht trin phn mm cho cc thit b
di ng. Ngn ng J2ME thc s l mt ngn ng nh gn, d nm bt, cht ch v
thch hp cho cc thit b c kh nng hn ch. Cc thit b di ng trn th trng
hin nay, c bit l in thoi di ng hu ht u h trrt tt ngn ng J2ME v
J2ME thc s trthnh mt trong nhng ngn ng ph bin nht trong lnh vc
lp trnh di ng.
Hnh 1.1 Cc thit b J2ME h tr
6
-
8/14/2019 NghienCuuJavaMobile
19/234
Java Mobile
1.3 Cc thnh phn ca J2ME:
Hnh 1.2 Cc thnh phn ca J2ME
Khi nim thit b di ng l tng i rng ln. Chng bao hm nhng thit b
c kch thc vt l khc nhau nhiu ln v cho d cng kch thc nhng thit b
ny vn c kh nng x l cng nh hin th khc nhau ( nhng chic in thoi
hin th 12,000 pixels cho n nhng chic PDA 20,000 pixels). p ng c
nhu cu khc nhau ca nhng thit b ny, bn thn ngn ng J2ME cng c chia
thnh nhng thnh phn nh hn.
Chng ta s tm hiu hai khi nim mi l Configurations v Profiles.
1.3.1 Configuration:
p ng nhu cu cho nhiu chng loi thit b khc nhau, Sun a ra khi
nim Configuration. Khi nim Configuration c mi lin h cht ch vi my o
Java. Ni chnh xc hn, mt Configuration qui nh nhng thnh phn v nhng
th vin gc ca ngn ng Java m my o phi h trcho configuration .
Vic phn chia thnh nhng Configurations khc nhau ch yu da vo kh
nng b nh, nng lc hin th, nng lc x l v kh nng kt ni mng ca cc
thit b. Nh chng ta bit, cc thit b di ng rt khc nhau v ngun ti
nguyn, v kh nng phn cng. Vi nhng thit b c nng lc hn ch, nu ta a
7
-
8/14/2019 NghienCuuJavaMobile
20/234
Java Mobile
qu nhiu th vin h trvo my o trn thit b s gy chm h thng v d
tha khng cn thit. Vi nhng thit b c kh nng cao hn, chng ta sa thm
nhiu th vin h trvo my o gip ch cho cng vic lp trnh ca cc nh pht
trin. Do , nhu cu phn chia thnh nhiu Configurations l vic cn thit.
Hin nay Sun a ra hai loi Configurations khc nhau:
CDC (Connected Device Configuration):
512 kb (minimum) b nh chy Java
256 kb (minimum) b nhcp pht ng.
Kt ni mng lin tc, bng thng rng.
CLDC(Connected Limited Device Configuration): 128 kb (minimum) b nh chy Java
32 kb (minimum) b nhcp pht ng.
Giao din ngi dng hn ch
Nng lng tiu tn t (ch yu dng pin)
Kt ni mng Wireless, chm.
Vic phn chia ny thc cht cng ch mang tnh tng i. Cng ngh hin nay
ang pht trin kh nhanh, v vic pht trin ny cng lm cho ranh gii gia cc
loi Configuration ny trnn khng r rng.
8
-
8/14/2019 NghienCuuJavaMobile
21/234
Java Mobile
Hnh 1.3 Configurations v cc thit b
1.3.2 Profile:
Configuration thc ra ch cung cp mt s rt t cc lp v ngi pht trin ng
dng hu nh khng th ch lm vic n thun vi cc configuration ny. Ta c th
thy iu ny qua mt v d: cc configuration khng h trcc cng c v giao
din (GUI), do nu ch dng configuration th lp trnh vin phi xy dng tt c
cc chc nng giao din tu. V l do ny Sun linh hot v a thm mt khi
nim mi nm tng trn ca configuration, l Profiles.
Ta c th xem Profile l mt mrng ca khi nim Configuration. Profile nh
ngha cc th vin gip lp trnh vin pht trin pht trin ng dng cho mt dng
thit b no . V d Mobile Information Device Profile (MIDP) nh ngha cc
hm API cho cc thnh phn giao din, nhp liu v x l s kin, lu tr, kt ni
mng v x l thi gian, ph hp vi mn hnh hin th v kh nng x l ca cc
thit b di ng. Profile MIDP c nh ngha trn nn tng ca CLDC. Ngoi ra
chng ta cn mt s Profile tiu biu khc nh
PDA Profile: tng t MIDP, nhng vi th trng l cc my PDA vi mn
hnh v b nhln hn
9
-
8/14/2019 NghienCuuJavaMobile
22/234
Java Mobile
Foundation Profile: cho php mrng cc tnh nng ca CDC vi phn ln
cc th vin ca b Core Java2 1.3
Ngoi ra cn c Personal Basis Profile, Personal Profile, RMI Profile, Game
Profile.
Lun vn ch yu ch cp n Profile MIDP v cc th vin lin quan
phc v cho vic vit ng dng trn in thoi di ng.
1.3.3 My o Java
Nh chng ta bit, mt chng trnh Java sc bin dch thnh m trung
gian sau chnh my o Java s bin dch phn m ny sang m my thc thi.My o Java s chu trch nhim vic cung cp tnh nng bo mt, cp pht v thu
hi b nhv qun l vic iu phi cc tin trnh. Chng ta c th ni chnh my
o Java lm cho chng trnh ca chng ta chy.
Vi CDC, my o Java c cng cc c tnh nh J2SE. Tuy nhin, vi CLDC,
Sun pht trin ring mt dng my o chuyn bit c gi l K Virtual
Machine, gi tt l KVM. Chnh nhng hn ch v ti nguyn ca cc thit b di
ng ra nhu cu v s ra i ca KVM. KVM khng phi l mt my o Javatruyn thng:
My o ch cn 40-80 kb b nh
Chi hi 20-40 kb b nhng (heap)
C th chy vi b vi x l 16-bit v xung nhp 25 MHz.
n y chng ta c th hnh dung phn no cu trc tng th ca mt chng
trnh J2ME nh sau:
10
-
8/14/2019 NghienCuuJavaMobile
23/234
Java Mobile
Hnh 1.4 Cu trc chng trnh J2ME
Nu chng trnh c bin dch vi CDC, chng trnh s chy trn cc my
o truyn thng v mang cc c tnh nh chng trnh J2SE.
Nu chng trnh c bin dch vi CLDC, chng trnh s chy vi my o
chuyn bit KVM v nhng c tnh ring do CLDC i hi.
Vi chng trnh xy dng bi MIDP, chng ta c cu trc chuyn bit sau:
Hnh 1.5 Cu trc chng trnh MIDP
Tng di cng l h iu hnh c h tr my o Java (KVM), bn trn l
CLDC v trn cng l MID Profile. Lc ny khi nim Vit mt ln, chy bt c
11
-
8/14/2019 NghienCuuJavaMobile
24/234
Java Mobile
mi trng no ca Sun khng cn ng hon ton v xut hin my o chuyn
bit KVM. Mt s chng trnh vit bng MIDP s khng chy trn mi trng
J2SE v ngc li. Tuy nhin chng ta phi cm kch cc n lc ca Sun gip
cho Java trthnh mt trong nhng ngn ng c kh nng c lp vi mi trng
bn di nht hin nay, iu ny ng vi c mi trng thit b di ng.
nhng phn tip theo chng ta s tm hiu k hn v hai thnh phn cbn
ca J2ME l Configuration v Profile.
12
-
8/14/2019 NghienCuuJavaMobile
25/234
Java Mobile
Chng 2: Gii thiu CLDC v MIDP
2.1. CLDC
2.1.1. Yu cu phn cng:
Khi ra yu cu v phn cng vic xem xt cc chi tit nh b x l, b nh
v cc phn mm hin c trn cc thit b di ng l vic v cng quan trng. Nhm
mc ch phc v ti a cc thit b hin c trn th trng, CLDC ch ra cc yu
cu v b nhv khng ra yu cu no cho cc thnh phn khc. Yu cu ti
thiu c th s dng CLDC nh sau: 128 kilobytes chy JVM v cc th vin ca CLDC. Khng phn bit loi
b nhs dng (Rom, Flash,), b nhca thit b phi bo lu c ni
dung lu di, ngay c khi ngt in. B nh ny thng c gi l
nonvolatile memory.
32 kilobytes b nh trng cp pht cc i tng (objects). B nh ny
thng c gi l volatile memory (hay l heap).
2.1.2. Yu cu phn mm:
CLDC c yu cu ti thiu v mt phn mm. Hiu hnh phi tng thch vi
JVM v c chc nng qun l cc ng dng Java, bao gm:
Cho php chn v kch hot ng dng
Cho php gbng dng khi thit b
2.1.3. My o Java:
Do cc thit b di ng dng CLDC thng c ti nguyn hn ch nn Sun
ra my o Java KVM phc v ring cho cc thit b ny. My o KVM thc cht l
mt b phn con ca cc my o trn mi trng J2SE v J2EE nn cng c nhiu
hn ch v khc bit so vi hai phin bn trn.
13
-
8/14/2019 NghienCuuJavaMobile
26/234
Java Mobile
Mt s hn ch:
Khng h tr kiu d liu float: Vic s l s float i hi nhiu ti
nguyn x l, ngoi ra cc thit b di ng khng c nhng cu hnh phn
cng dnh ring cho vic x l s float nn trong J2ME chng ta khng
th khai bo cc bin, mng float, cc hm cng khng nhn tham s v
tr v cc s float.
Phng thc finalize: Trong J2SE, chng ta c th khai bo phng thc
finalize (tng t nh phng thc destructor). Garbage Collector s gi
phng thc ny trc khi hy b mt i tng, phng thc ny
thng c dng thu hi cc ti nguyn h thng nh sockets, filehandles trc khi i tng b ph hy. Tuy nhin trong J2ME chng
ta khng c phng thc finalize.
Error Handling: Trong J2ME chng ta vn c h trcc cng c v by
li (ch yu thng qua try v catch). Tuy nhin kh nng v x l li ca
J2ME cng hn ch hn vi hai phin bn cn li.
Khng h trvic s dng code ca cc ngn ng lp trnh khc
Khng h trReflection: Trong J2SE v J2EE, chng ta c th dng cc
lp Reflection tm hiu thng s mi trng my o Java ang thc thi.
Khng h trThreadGroup: mi thread c qun l ring bit, khng
cn lp ThreadGroup. Nu mun iu khin mt lc nhiu threads chng
ta c th dng mng hoc Vector.
J2ME cng cn mt sim khc bit so vi J2SE v J2EE, mt trong nhngkhc bit chnh l qu trnh Class Verify (tm dch l kim tra lp). Cc lp trc
khi c load s thng qua mt qu trnh kim tra v s hp l v tnh nguyn
vn. y l mt c ch quan trng bo m an ton (security) ca Java. Qu
trnh ny trong J2SE v J2EE c th chim n 50 kbytes b nh, trong J2ME
chng c chia thnh 2 giai on:
14
-
8/14/2019 NghienCuuJavaMobile
27/234
Java Mobile
Tin kim tra (Pre-verification): Trc khi mt lp c np vo thit b,
mt phn mm sc s dng thm vo mt s thng s b sung vo
file class. Qu trnh ny gim thi gian v b nhcn thit my o thc
hin giai on 2 trong qu trnh kim tra. File class sau khi c tin
kim tra s tng dung lng khong 5%
Kim tra ni thit b (In-device verification): Khi thit b np cc file class
c tin kim tra, cng c kim tra trong thit b s thc hin mt vi
kim tra xc nhn tnh hp l ca on code. Nu pht hin mt li no
b kim tra s pht sinh bo co v t chi np lp i tng vo b
nh. Qu trnh ny i hi t b nhv ti nguyn hn nhiu ln so vitrong J2SE v J2EE.
CLDC khng h trtt c cc lp v th vin c h trtrong ngn ng Java
truyn thng m ch h trnhng th vin tht s cn thit i vi thit b di ng.
Ngoi ra trong CLDC chng ta cng c h trvic truy vn mt s thuc tnh
ca h thng:
Ly thng tin v platform ca thit b:
System.getProperty("microedition.platform")
Ly thng tin v bng m mc nh:
System.getProperty("microedition.encoding")
Ly trng tin v version v tn ca configuration:
System.getProperty("microedition.configuration")
Ly thng tin v Profile:
System.getProperty("microedition.profiles")Ngoi ra chng ta c th truy cp lp Runtime ly cc thng s v thit b nh:
Runtime rtime= Runtime.getRuntime();
System.out.println("Total memory: " + rtime.totalMemory());
//thng tin v tng b nh
System.out.println("Free memory: " + rtime.freeMemory());
//thng tin v b nhtrng
15
-
8/14/2019 NghienCuuJavaMobile
28/234
Java Mobile
2.2. MIDP:
2.2.1. Yu cu phn cng:
Mn hnh t nht phi c 96 x 54 pixels
C t nht mt thit b nhp liu: bn phm hoc mn hnh cm ng.
C t nht 128 kilobytes b nhnon-volatile chy cc thnh phn ca MID
C t nht 8 kilobytes b nhnon-volatile lu cc cu hnh chng trnh v d
liu
C t nht 32 kilobytes chy Java
C kt ni khng dy (wireless network)
2.2.2. Yu cu phn mm:
Mc d hiu hnh ca tng thit b c th khc nhau nhng phi p ng
c cc yu cu ti thiu sau:
Hiu hnh phi h trvic x l ngt, x l exception v h trx l
ha bitmap xut d liu ra mn hnh Hiu hnh phi nhn c tn hiu nhp liu (input) v chuyn d liu
cho my o Java
Hiu hnh phi h trvic c/ghi vo b nhnon-volatile. Khng i hi
hiu hnh phi nh ngha file system nhng phi cho php ghi d liu dng
persistent (khng b mt i khi tt my, ngt in).
Phi h tr truy xut mng, c bit phi c tnh nng c/ghi d liu thng
qua mng khng dy (wireless network).
2.2.3. Cu trc MID Profile:
16
-
8/14/2019 NghienCuuJavaMobile
29/234
Java Mobile
Hnh 2.1 Cu trc thit b MID
Tng di cng l phn cng ca thit b di ng. Bn trn phn cng ta c h
iu hnh iu khin cc hot ng.
Bn trn hiu hnh ta c th chia thnh 2 phn ring bit. Chng ta s thy
phn bn phi l cc chng trnh native application (tm dch l chng trnh
nguyn gc). Trc khi J2ME ra i, thng thng y l loi chng trnh duy
nht c trn cc thit b. y l loi chng trnh c nh sn xut a sn vo
my di ng lc sn xut nh chng trnh chn ting chung, chnh thng sin
thoi, chnh gi Chnh nhJ2ME ra i chng ta mi c chc nng ci t thm
cc chng trnh c vit thm vo in thoi.
CLDC l nn tng c bn cho MID Profile, cc chng trnh MIDP (MIDP
Applications) c th s dng cc lp c cung cp bi c CLDC v MIDP. Ngoira chng ta cn c cc lp OEM (original equipment manufacturer) l cc lp do
cc nh sn xut cung c p thm cho in thoi (cc hng nh Nokia, Samsung,
Motorola thng c thm nhiu lp cp cao h trcho lp trnh vin) v bn trn
l cc ng dng c xy dng t cc lp ny, cc ng dng ny thng ch chy
trn cc in thoi ca hng cung cp th vin lp OEM.
17
-
8/14/2019 NghienCuuJavaMobile
30/234
Java Mobile
2.2.4. MIDlet Suite:
Chng ta gi chng trnh Java chy trn thit b di ng l mt MIDlet. MIDlet
s s dng cc l p cung cp bi CLDC v MIDP. Mt MIDlet Suite (mt b
MIDlet) cha mt hay nhiu ng dng MIDlet c nn chung trong mt file JAR
(Java Archive).
Cu trc file Jar:
Ngoi cc file l p v resource, trong file Jar cn c mt t p tin c gi l
manifest. y l t p tin m t ni dung ca ton file Jar. T p tin ny c tn
manifest.mf v bn thn n cng c nn trong file Jar. Trong file manifest chng
ta c thnh ngha cc thuc tnh ca file jar nhng quan trng nht l 6 thuc tnhsau:
- MIDlet-Name
- MIDlet-Version
- MIDlet-Vendor
- MIDlet- (mi mt MIDlet cn mt mu thng tin ny)
- MicroEdition-Profile
- MicroEdition-Configuration
Nu 1 trong 6 thng tin ny thiu th thit b s t chi chy cc ng dng trong file
Jar ny.
Bng sau m t cc thuc tnh c thnh ngha trong file manifest:
Thuc tnh Mc ch Bt buc
MIDlet-Name Tn ca b MIDlet C
MIDlet-Version S phin bn CMIDlet-Vendor Cho bit ngi to MIDlet Suite C
MIDlet- Tham chiu n tng MIDlet trong b
MIDlet (trong file Jar), mi mt MIDlet cn
mt mu tin ny, mu tin ny gm 3 mu tin
con:
Tn MIDlet
C
18
-
8/14/2019 NghienCuuJavaMobile
31/234
Java Mobile
File Icon MIDlet (c th khng cn)
Tn lp s c n p khi thc thi MIDlet
ny
MicroEdition-
Profile
Tn profile cn thit chy MIDlet ny,
thng l MIDP1.0 hoc MIDP2.0
C
MicroEdition
Configuration
Configuration cn chy MIDlet (thng
l CLDC 1.0)
C
MIDlet-Icon File icon (.pgn) ca b MIDlet Khng
MIDlet-Description M t (text) ca b MIDlet Khng
MIDlet-Info-URL a ch trang web nh pht trin MIDlet KhngBng 2.1 Cu trc file manifest
y l mt v dn gin ca file manifest:
MIDlet-Name: Todo List
MIDlet-Version: 1.0
MIDlet-Vendor: Core J2ME
MIDlet-1: TodoList, /images/Todo.png, Todo.TodoMIDlet
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
File JAD (Java Application Descriptor File):
Bn cnh file Jar, mt bng dng MIDlet cn c thm file JAD (.jad) cung
cp thng tin v cc MIDlet trong file JAR. Vic t ra file JAD c mt s mc ch
sau: Cung cp thng tin v ni dung file Jar. T thng tin ny, b qun l ng dng
trn thit b mi quyt nh ng dng ny c thch hp chy trn thit b hay
khng.
Cung c p cc tham s dng cho MIDlet trnh thay i file JAR. File JAR
cha m ng dng nn cn trnh b thay i.
19
-
8/14/2019 NghienCuuJavaMobile
32/234
Java Mobile
Danh sch cc thuc tnh trong file Jad:
Thuc tnh Mc ch Bt buc
MIDlet-Name Tn ca b MIDlet C
MIDlet-Version S phin bn C
MIDlet-Vendor Cho bit ngi to MIDlet Suite C
MIDlet- Tham chiu n tng MIDlet trong b
MIDlet (trong file Jar), mi mt MIDlet cn
mt mu tin ny, mu tin ny gm 3 mu tin
con:
Tn MIDletFile Icon MIDlet (c th khng cn)
Tn lp s c n p khi thc thi MIDlet
ny
C
MIDlet-Jar-URL a ch URL ca file Jar C
MIDlet-Jar-Size Kch thc file Jar tnh bng byte C
MIDlet-Data-Size Kch thc ti thiu tnh bng byte ghi
cc d liu ca chng trnh (persistent
data)
Khng
MIDlet-Description M t MIDlet (dng text) Khng
MIDlet-Delete-
Confirm
Thng bo nhc nhkhi xa MIDlet Khng
MIDlet-Install-
Notify
URL nhn thng bo v qu trnh ci t Khng
Bng 2.2 Cu trc file JAD
Ta cng c thnh ngha thm cc thuc tnh ring, bt u bng MIDlet- ty
theo mc ch ca lp trnh vin. Nhng thuc tnh sau phi ging nhau file Jad
v file manifest (nm trong file Jar):
- MIDlet-Name
- MIDlet-Version
20
-
8/14/2019 NghienCuuJavaMobile
33/234
Java Mobile
- MIDlet-Vendor
- MIDlet- for each MIDlet
- MIDlet-Jar-URL
Nu cc thuc tnh ny khng ging nhau, ng dng s b thit b t chi. Vi
cc thuc tnh cn li, nu file Jad v file manifest khc nhau th thuc tnh trong
file Jad sc u tin hn.
Sau y l mt v dn gin v file Jad:
MIDlet-Name: Todo List
MIDlet-Version: 1.0MIDlet-Vendor: Core J2ME
MIDlet-Jar-URL: http://www.corej2me.com/TodoMIDlet.jar
MIDlet-Jar-Size: 17043
MIDlet-1: TodoList, /images/Todo.png, Todo.TodoMIDlet
y c mt cu hi c t ra: Ti sao phi ghp nhiu ng dng MIDlet
thnh mt file nn dng JAR. Mc ch ca vic kt hp ny gip cho cc ng dng
MIDlet c nn chung ny c th chia x chung cc ti nguyn vi nhau. Mt v
d c th cp n l vic chia s chung cc Record Store: trong mi trng
J2ME chng ta khng c khi nim file system; mi nhu cu lu tr d liu c
thng qua cc Record. Trong mt b MIDlet Suite th tn cc Record phi phn bit
v cc ng dng MIDlet cng chung trong mt b s c th chia s cc Record ny
vi nhau. iu ny kh thun li, n c th gip chng ta vit cc games cng chia
s danh sch ngi chi, danh sch cc ngi chi c im cao nht
Khi np ng dng vo thit b ta cng lc np hai file .Jar v .Jad; file .Jad s l
file thc thi v file .Jar cha m thc thi ca chng trnh
21
-
8/14/2019 NghienCuuJavaMobile
34/234
Java Mobile
2.2.5. Mi trng pht trin ng dng J2ME
Phn ny chng ta s tm hiu v cc phn mm cn thit dng pht trin mt
ng dng J2ME, cch ci t v cu hnh cc phn mm ny. Ngoi ra chng ta s
nghin cu v cc tools pht trin c h trthm.
vit mt ng dng J2ME chng ta cn t nht 3 chng trnh sau:
Java Development Kit (JDK) , version 1.3 hoc cao hn (phin bn mi nht tnh
n lc lun vn c thc hin l phin bn 1.42)
http://java.sun.com/products/jdk/
Connected, Limited Device Configuration (CLDC):
http://java.sun.com/products/cldcMobile Information Device Profile(MIDP):
http://java.sun.com/products/midp/
Ghi ch: y xem Microsoft Windows nh hiu hnh mc nh c s dng,
nu ngi dng s dng hiu hnh khc th phi c mt siu chnh ph hp
vi hiu hnh .
Ci t cc phn mm:
Ci t JDK:
File ci t JDK c dng file thc thi (.exe), chng ta ch cn chy v lm theo
cc hng dn s ci t thnh cng b JDK (gi s th mc ci t l C:\jdk1.3.1)
Set bin mi trng (Environment Variable):
Vic set bin mi trng gip chng ta chy trnh bin dch t bt c v tr no,
khng cn phi g tn v ng dn y ca trnh bin dch.
Vo Control Panel, Chn System. Chn Environment (hoc Advanced/Environment)
Tm mc PATH, thm th mc \bin ca th mc JDK (v d C:\JDK\bin)
vo bin mi trng PATH (PATH=..;c:\jdk\bin;)
Ci t CLDC v MIDP:
File CLDC v MIDP c dng zip, ta gii nn vo chung mt th mc (v d
C:\J2ME).
22
http://java.sun.com/products/jdk/http://java.sun.com/products/cldchttp://java.sun.com/products/midp/http://java.sun.com/products/midp/http://java.sun.com/products/cldchttp://java.sun.com/products/jdk/ -
8/14/2019 NghienCuuJavaMobile
35/234
Java Mobile
Th mc J2ME c dng:
C:\J2ME
j2me_cldc (th mc cha CLDC)
midp1.0.1.fcs (th mc cha MIDP)
Sau cng ta set hai bin mi trng PATH v CLASSPATH nh sau:
PATH=C:\jdk1.3.1\bin;C:\j2me\j2me_cldc\bin;C:\j2me\midp1.0.3fcs\bin;
CLASSPATH=C:\j2me\midp1.0.3fcs\classes;. (du "." ch th mc hin hnh)
Lc ny ta cng c xy dng ng dng J2ME. Chng ta c nhiu cng c
h trcho qu trnh bin dch v thc thi MIDlet nhng ban u chng ta s tm
hiu cch s dng nhng cng c cbn nht v l cng c chun ca J2ME.Qu trnh bin dch v thc thi ng dng J2ME phi qua mt s thao tc bng dng
lnh (command lines), chng ta gi s th mc cha m ngun l th mc
C:\Midlets.
Ta s xy dng mt ng dng J2ME n gin m phng qu trnh bin dch v
thc thi, ng dng c tn Welcome v file source code c tn Welcome.java
C:\Midlets\Welcome\Welcome.java
Qu trnh bin dch v Pre-verify:
bin dch ta chuyn n th mc cha ng dng (C:\Midlets\Welcome\) v
gi lnh:
javac -bootclasspath c:\j2me\midp1.0.3fcs\classes Welcome.java
hoc
javac bootclasspath %CLASSPATH% Welcome.java
(CLASSPATH l bin mi trng c nh ngha trc thay cho
c:\j2me\midp1.0.3.fcs\classes;.)
Javac l chng trnh bin dch ca b JDK, thng s -bootclasspath ra lnh cho
chng trnh dich ly cc file lp c s ti th mc c:\j2me\midp1.0.3fcs\classes
(y l file lp c sca MIDP). Nu khng c thng s ny, file lp c sca
JDK sc s dng, file lp csny khc vi file ca MIDP nn J2ME c th
khng s dng c.
23
-
8/14/2019 NghienCuuJavaMobile
36/234
Java Mobile
Sau qu trnh ny file Welcome.class sc to ra v mc ch chung th mc
vi file m ngun.
Sau khi c file class ta cn thc hin vic pre-verify ( c cp phn trc
ca lun vn).
Ta thc thi dng lnh:
preverify -classpath c:\j2me\midp1.0.3fcs\classes;. -d . Welcome
hoc
preverify classpath %CLASSPATH% d . Welcome
Tng t, thng s classpath ch ra v ch cc file class ti th mc
c:\j2me\midp1.0.3fcs\classes v th mc hin hnh (du .). Thng s -d ch ra thmc output kt qu l th mc hin hnh.
Qu trnh Pre-verify ny l bt buc, nu khng thc hin cng on ny thit
b di ng s tchi thc thi ng dng
Thc thi ng dng MIDlet:
Ta thc thi cu lnh:
midp -classpath . Welcome
Thng s class path ch ra th mc cha file cn thc thi, y l th mc hin
hnh, tn ng dng l Welcome (file Welcome.class c pre verify).
Trn y l qu trnh cbn nht bin dch v thc thi mt ng dng J2ME,
s dng nhng tnh nng cao hn (to MIDlet Suite cha nhiu MIDlet, to file
Jad, file Jar) xin vui lng xem file hng dn trong a CD nh km hoc xem ti
liu ca cc b bin dch. tit kim thi gian, chng ta thng dng cc cng c
tin ch nh Sun Wireless Toolkit, xin xem phn ph lc bit cch s dng.
24
-
8/14/2019 NghienCuuJavaMobile
37/234
-
8/14/2019 NghienCuuJavaMobile
38/234
Java Mobile
// phng thc khi to (constructor) khng bt buc phi c
public Shell(){ }
// c application manager gi trc khi thc thi MIDlet
public void startApp(){}// c gi trc khi tm dng MIDlet
public void pauseApp(){ }
// c gi trc khi kt thc chng trnh
public void destroyApp(boolean unconditional){ }
}
3.3. Lp MIDlet:Nh cp, mi ng dng ca ta u k tha t lp MIDlet. Lp ny c
khai bo nh sau:
public abstract class MIDlet {
protected abstract void startApp()
throws MIDletStateChangeException;
protected abstract void pauseApp();
protected abstract void destroyApp(boolean
unconditional) throws
MIDletStateChangeException;
}
Ba hm c nu trn l ba hm bt buc chng ta phi xy dng khi to ngdng MIDlet. Lp MIDlet c cha trong package javax.microedition.midlet
Sau y l danh sch cc hm thng dng trong lp MIDlet:
Phng thc: M t:
abstract void destroyApp
(boolean unconditional)
Hm ny c gi khi c nhu cu tt MIDlet. y
l ni gii phng cc ti nguyn dng.
abstract void pauseApp() Hm ny c gi gii phng cc ti nguyn
26
-
8/14/2019 NghienCuuJavaMobile
39/234
Java Mobile
trc khi tm dng chng trnh.
abstract void startApp() c gi khi MIDlet sp c a vo trng thi
thc thi (active state).
final void notifyDestroyed() Bo cho application manager bit chng trnh
MIDlet gii phng ti nguyn v cn c tt.
(sau khi gi destroyApp)
final void notifyPause() Bo cho application manager bit chng trnh
MIDlet gii phng ti nguyn v mun vo trng
thi tm dng (sau khi gi pauseApp)
final void resumeRequest() Bo cho application manager ta cn a MIDletvo trng thi hot ng trli. (Sau application
manager s gi startApp).
final String getAppProperty
(String key)
Ly cc thng s ca chng trnh (t file jad v
file manifest).
Bng 3.1 Lp MIDlet
y chng ti xin m t hai qu trnh quan trng nht ca mt ng dng MIDlet
l qu trnh khi np v qu trnh thot ng dng:
Qu trnh np:
User chn kch hot ng dng MIDlet
Application manager khi to cc bin, gi phng thc khi to
(constructor).
ng dng MIDlet sau khi c np vo b nhsc a vo trng thi
paused (nhng hm pauseApp() s khng c gi). Application manager gi hm startApp(). Thc cht hm startApp() s
c gi mi khi ng dng c a vo trng thi thc thi (active); khi ta
tm ngng ng dng v c nhu cu kch hot tr li hm ny cng c
gi.
Qu trnh thot:
User chn thot chng trnh
27
-
8/14/2019 NghienCuuJavaMobile
40/234
Java Mobile
Hm destroyApp() c gi, hm ny phi bo m vic gii phng ti
nguyn.
Hm notifyDestroyed() c gi bo cho application managerng dng
gii phng ht ti nguyn v sn sng b tt.
3.4. Lp MIDletStateChangeException:
Khi tm hiu v package javax.microedition.midlet, cn mt l p quan trng
chng ta phi ch n l lp MIDletStateChangeException. ng dng MIDlet c
hai hm c kh nng to ra (throw) Exception ny l hm destroyApp() v hm
startApp().Nh chng ta bit, trc khi ng dng c a vo trng thi active th hm
startApp() sc gi. Nu trong qu trnh gi hm ny dn n pht sinh li (thit
b ht ti nguyn, ti nguyn cn dng ang b ng dng khc chim) th
MIDletStateChangeException s c to ra. Trong qu trnh thot, hm
destroyApp() cng c th pht sinh exception ny, v d nh khi chng ta thot m
chng trnh ang nhn d liu ht sc quan trng t network ta c th pht sinh
exception dng vic thot.
Ta xem xt hm destroyApp(boolean condition):
Tham s condition y c mt ngha kh th v, nu tham s ny l true d
chng ta c pht sinh exception MIDletStateChangeException th ng dng vn
thot; ch khi no tham s ny l false th exception MIDletStateChangeException
mi c kh nng hy vic thot chng trnh.
3.5. Display
ng dng ca chng ta chc chn c nhu cu xut d liu ra mn hnh. Vic
ny trong mt ng dng MIDlet do mt i tng thuc l p display m nhim.
Lp ny nm trong package javax.microedition.lcdui,package ny cha hu nh tt
c cc lp phc v cho vic pht trin giao din ca ng dng.
Chng ta s xem xt mt s hm quan trng nht ca lp Display:
28
-
8/14/2019 NghienCuuJavaMobile
41/234
Java Mobile
Phng thc: M t:
static Display getDisplay(MIDlet m) Ly i tng Display ca MIDlet
Displayable getCurrent() Ly i tng Displayable hin thi (s
cp sau)
void setCurrent (Alert alert,
Displayable nextDisplayable)
void setCurrent (Displayable
nextDisplayable)
To i tng alert (s cp sau)
boolean isColor() Cho bit thit b c h trmu hay khng?
int numColors() C bao nhiu mu c h tr?Bng 3.2 Lp Display
Mt MIDlet s c mt v ch mt i tng Display iu khin vic th hin d
liu. i tng Display khng c phng thc khi to m c khi to trc tip
t phng thc static ca lp.
V d:
Display display=Display.getDisplay(this);
Tham s u vo l mt MIDlet, y chng ta gi hm t lp k tha t
MIDlet nn c th truyn vo con tr this. Thc ra cng dng chnh ca Display l
cho php hin thi tng no ln mn hnh hin thi. Cc i tng c th hin
th ln mn hnh l cc i tng thuc lp Displayable (sc gii thiu sau), v
d nh form, TextBox, Canvas,Screen
Ta xt v d sau:
public class Vidu extends MIDlet{
Form mainForm;
Vidu{
mainForm=new Form(.);
}
29
-
8/14/2019 NghienCuuJavaMobile
42/234
Java Mobile
public void startApp()
{
Display display=Display.getDisplay(this);
Display.setCurrent(mainFrom);
.
}
.
}
Ban u ta khi to mt form th hin ln mn hnh, sau khi ng dng
MIDlet c n p vo b nh constructorc gi to form. Sau , phng
thc startApp() c gi, trong phng thc ny ta chn Form mainForm th
hin ln mn hnh bng lnh setCurrent. Khi ng dng b tm ngng (paused) v
phc hi tr li (resume) th hm startApp() cng c gi v form li c th
hin trn mn hnh. n y chng ta c th hnh dung c phn no tc dng ca
i tng Display.
3.6. Lp Displayable:
Nh cp, mt ng dng MIDlet ch c mt i tng Display duy nht v
i tng Display ny dng th hin cc i tng Displayable ln mn hnh.
Nh tn ca lp Displayable cho chng ta thy, y l cc i tng c kh nng
hin th thng tin ln mn hnh thit b. Lp Displayable bao gm 2 lp con l lp
Screen v lp Canvas. C th chng c nh ngha nh sau:
abstract public class Displayable;
public abstract class Canvas extends Displayable;
public abstract class Screen extends Displayable;
30
-
8/14/2019 NghienCuuJavaMobile
43/234
Java Mobile
L p Screen cn c chia thnh nhng l p con nh hn nh: TextBox, List,
Form v Alert. y l nhng lp giao din cp cao (v phn ln cc cng vic th
hin ca cc lp ny c ci t sn). Cc i tng ca lp Canvas c gi l
nhng i tng ha cp thp, cc lp ny cho php chng ta x l cc giao tc
ha tng di, x l mu sc v ch yu dng trong qu trnh vit games.
nhng phn sau chng ta s tm hiu k hn v cc lp giao din cp thp ln cp
cao.
* To mt i tng Displayable:
Thng thng chng ta khng to trc tip mt i tng thuc lp Displayablem s dng cc lp con ca n. vit cc ng dng ha ta thng k tha t
lp Canvas:
public class GameScreen extends Canvas
{
draw images, shapes, text
}
Khi xy dng cc ng dng tin ch (t dng n cc chc nng ha) ta s dng
cc lp ha cp cao nh Form, TextBox hoc k tha t cc lp ny.
Cc hm chnh ca lp Displayable:
Phng thc: M t:
void addCommand(Command cmd) Thm mt i tng Command vo i
tng Displayable
void removeCommand (Command
cmd)
Xa b mt i tng Command ti
tng Displayable
void setCommandListener
(CommandListener l)
Thm CommandListener vo i tng
Displayble
31
-
8/14/2019 NghienCuuJavaMobile
44/234
Java Mobile
boolean isShown() Kim tra i tng Displayable c c
th hin trn thit b hay khng?
Bng 3.3 Lp Displayable
*Ghi ch: Cc i tng Command v CommandListener sc cp chi tit
phn sau.
Ti thi im ny chng ta c th hnh dung mt Command nh mt nt n iu
khin trong ng dng ca chng ta, CommandListener c tc dng chuyn cc s
kin khi ngi dng kch hot mt Command n lp x l ca ng dng. bt
c cc s kin c chuyn ti khi ngi dng kch hot mt Command, ngdng ca chng ta phi ci t hm commandAction. V d nh sau:
public void commandAction(Command c, Displayable s)
{
if (c == cmExit)
{
destroyApp(true);
notifyDestroyed();
}
}
3.7. Qun l cc skin (event)
Ngy nay, vic x l s kin l mt trong nhng vn cbn nht ca mt
chng trnh. C th ni, trong th gii phn mm ngy nay khng mt chng
trnh no li khng c kh nng tng tc vi ngi dng, do vic qun l cc s
kin pht sinh l mt vn m bt c phn mm no cng phi thc hin. Qu
trnh x l cc s kin pht sinh bao gm 3 qu trnh cbn:
Phn cng (thit b di ng) phi cm nhn c khi c mt s kin pht
sinh: ngi dng n mt phm, mt cable c cm vo hay rt ra.
32
-
8/14/2019 NghienCuuJavaMobile
45/234
Java Mobile
Phn mm trn thit b (hiu hnh) phi nhn bit c c s kin pht
sinh
Hiu hnh chuyn thng tin v s kin cho ng dng, bt u ty l
cng vic ca nhng lp trnh vin J2ME. Ty theo cc thng tin v s
kin m chng ta phi a ra cc gii php thch hp
Trong phn ny chng ta s ch nghin cu v cc s kin c pht sinh
nhng ng dng s dng cc chc nng ha mc cao (Form, TextBox), cn
cc s kin pht sinh nhng ng dng s dng cc th vin ha mc thp
nh cc games sc cp sau.Thc cht nhn c thng bo t hiu hnh v cc s kin pht sinh lp
ng dng chnh ca chng ta phi ci t (implement) cc listener. Trong J2ME
h tr sn cho chng ta 2 listener l CommandListener v ItemStateListener. Lp
CommandListener c hm commandListener() v tng ng lp ItemStateListener
c hm itemStateChange(), y l 2 hm chng ta cn ci t nhn bit cc s
kin xy ra. Trc khi i su vo x l cc s kin chng ta s tm hiu 2 tc nhn
chnh pht sinh mt s kin l Command v Item.
3.7.1. Command & CommandListener
Ta nh ngha Command l mt i tng gi thng tin v mt s kin (Event).
Ni mt cch n gin nht th command nh mt nt n (button) trn ng dng di
ng, khi ta chn nt ny th s pht sinh mt s kin tng ng.
33
-
8/14/2019 NghienCuuJavaMobile
46/234
Java Mobile
Hnh 3.1 Command Exit
Trong v d trn ta thy Command Exit tng ng vi mt nt n trn in
thoi. Vic xem mt Command tng ng vi mt nt n trn thit b l mt quan
nim nhm n gin ha vn nhng khng hon ton chnh xc. Nu chng ta
xem xt cc hn ch v kch thc v mn hnh v s lng nt n c trn thit b
th vn s trnn phc tp hn, c nhng form s lng command c th nhiu
hn s nt n chc nng trn thit b, lc ny cc command c t chc theo dngmenu. Trc tin, ta s tm hiu cc cng vic phi lm thm mt command vo
ng dng:
To mt command lu gi thng tin v event
Thm command ny vo Form, TextBox hay Alert (cc i tng
displayable)
Thm mt listener vo cc Form hay TextBox trn.
Khi pht hin mt event c kch hot, b listener s gi hm commandListener()
v truyn cc thng tin v event lm thng s cho hm. Sau y l mt on code v
d:
public class TestCommand extends MIDlet implements CommandListener
{
34
-
8/14/2019 NghienCuuJavaMobile
47/234
Java Mobile
private Form fmMain; // To mt form
private Command cmExit; // To mt command thot khi ng dng
...
fmMain = new Form("Core J2ME"); // Khi to form
cmExit = new Command("Exit", Command.EXIT, 1); // Khi to command
...
fmMain.addCommand(cmExit); // Thm command vo form
fmMain.setCommandListener(this); // Thm b listener cho form
...
//hm dng bt cc s kinpublic void commandAction(Command c, Displayable s)
{
if (c == cmExit)//nu l command exit, thot chng trnh
{
destroyApp(true);
notifyDestroyed();
}
}
}
Qua v d trn ta thy vic to mt command v x l n tng i n gin.
im quan trng cn ch l lp ng dng ca ta phi ci t mt b listener
(trong v d trn ta implements CommandListener) v phi cung c p hm
commandListener x l cc events.
Khi chng ta to mt Command c ba thng s cn cung cp:
35
-
8/14/2019 NghienCuuJavaMobile
48/234
Java Mobile
Label: on vn bn c xem nh nhn ca command. Nh trong hnh 3.1, Exit
l nhn ca command. Nh trong hnh 3.2, ta thy y cng l label ca command
nhng c th hin dng khc: dng menu.
Hnh 3.2 Command Label
Type: Tht thun tin nu ta c th nh x mt command vi mt nt trn thit b
(ta gi l soft-button). Gi s ta c mt command tn help v nh xc vi
HELP Button trn thit b th tht trc quan v d dng cho ngi dng.
Thng s Type gip chng ta lm chuyn ny: Ta chn Command.HELP. Nu thit
b khng c nt help, thng s ny khng c ngha v command c i x nh
cc command thng thng. Tuy nhin, ta cn lu khi ta tt type l
Command.HELP th khng c ngha khi ta chn command ny cc hng dn s
c pht sinh m ta cn phi lm vic ny trong hm commandAction(). Thng s
type ch gip vic nh x cc nt soft-button c d dng.
Hnh 3.3 nh x soft-button
36
-
8/14/2019 NghienCuuJavaMobile
49/234
Java Mobile
Cc type c h tr:
Gi tr M t
BACK Dng i ngc li mn hnh trc .
CANCEL Dng hy cng vic ang thc hin
EXIT Dng thot chng trnh
HELP Cung cp thng tin trgip
ITEM Dng nh x mt Command vi mt item trn mn hnh. Gi
s khi ta dng giao din List, khi chn mt item ta c th gn item
ny vi mt command pht sinh mt s kin no .
OK Xc nhn mt yu cu no hoc thot khi mn hnh thngbo.
SCREEN Thng thng thit b khng c cc soft button tng ng vi cc
command dng ny. Vic th hin cc command s ty vo tng
thit b (s c cc v d)
STOP Dng mt cng vic ang thc hin.
Bng 3.4 Cc Command Type
Nh cp, cc type ch c ngha khi thit b c mt nt tng ng dnh
ring cho type ny (nh nt help ca thit b hnh 3.3).
Priority: u tin, dng sp xp cc command t trn xung di hay tri sang
phi khi c th hin chung dng menu. Hnh 3.2 th hin command Upload c
u tin cao hn command Download. Gi tr ny cng cao th u tin cng thp.
Sau y l cc hm chnh ca lp Command v CommandListener (hai lp ny nm
trong package javax.microedition.lcdui).Lp javax.microedition.lcdui.Command
C php ngha
Command (String label, int
cmdType, int priority)
Hm khi to, cc thng s c trnh by
bn trn
int getCommandType() Cho bit Type ca Command
37
-
8/14/2019 NghienCuuJavaMobile
50/234
Java Mobile
int getLabel() Cho bit Label ca Command
int getPriority() Cho bit u tin
Lp javax.microedition.lcdui.CommandListener
void commandAction(Command
c, Displayable d)
c gi khi command c nm trn i tng
Displayable d pht sinh mt s kin
Bng 3.5 Command v CommandListener
3.7.2. Item v ItemStateListener
S kin (event) khng chc pht sinh thng qua kch hot commands m
cn c thc pht sinh thng qua cc items. Mt item l mt b phn c th gn
km ln trn cc form. ChoiceGroup, DateField, Gauge v TextField l cc dng
khc nhau ca Item v mi dng u c th pht sinh cc s kin (chng ta s tm
hiu v cc items ny trong phn Ha Cp Cao). Items ch c thc s dng
nh mt thnh phn ca form, khc vi Commands c th c s dng trong
Form, TextBox, List v Canvas.
Khi chng ta thm mt Item vo Form, x l c cc s kin pht sinh ta
phi ci t mt Listener (y l ItemStateListener). Khi c mt thay i trn Item(v d nh ta chn mt mc trong ChoiceGroup hay thay i d liu ca mt
DateField) th i tng listener sc thng bo c mt s kin pht sinh cng
cc thng tin v s kin ny. S kin ny s kch hot hm itemStateChanged()
c chng ta ci t.
Hin ti MIDP h tr cc loi Items sau: ChoiceGroup, DateField, Gauge,
ImageItem, StringItem v TextField. y c mt ngoi l l hai loi StringItem v
ImageItem khng h trpht sinh s kin mc d chng l lp con ca lp Item.
Chng ta ci t mt listener trong lp Form, khi mt Item pht sinh s kch hot
hm itemStateChanged(), tuy nhin khng phi khi chng ta thay i gi tr nhiu
items cng lc th itemStateChanged() sc gi by nhiu ln. y c mt
lut c ra:
38
-
8/14/2019 NghienCuuJavaMobile
51/234
Java Mobile
Nu mt Item b thay i, hm itemStateChanged() phi c gi i vi
Item ny trc khi nhng thay i trn nhng Item sau c nhn
bit.
Nu chnh bn thn MIDlet thay i gi tr mt Item (gi s chng ta dng
m lnh thay i ch khng phi do ngi dng), hm
itemStateChanged() khng c gi.
Nu thit b nhn bit c ngi dng chuyn t Item ny sang Item
khc (chuyn focus) th hm itemStateChanged() phi c gi trc khi
chuyn sang Item k tip.
Sau y l cc hm quan trng khi s dng Item:
Lp javax.microedition.lcdui.Item
C php ngha
String getLabel() Ly nhn ca Item
void setLabel(String label) t nhn cho label
Lp javax.microedition.lcdui.ItemStateListener
void itemStateChanged(Item item) c gi khi gi tr item thay i
Bng 3.6 Item v ItemStateListener
39
-
8/14/2019 NghienCuuJavaMobile
52/234
Java Mobile
Chng 4: Giao din ha cp cao
MIDP h trthit k giao din di hai cp :
Giao din cp cao (high-level interfaces): ch yu dng cho cc chng trnh ng
dng. cp ny, MIDP cung cp sn cc thnh phn giao din thng dng
(nh textbox, choicegroup, alert...) v h trvic hin th cc thnh phn giao
din ny ln mn hnh thit b. Ngi vit chng trnh ch cn gi cc phng
thc hin th c cung cp m khng cn quan tm n cc phng thc
ho c s dng bn di. Giao din c p th p (low-level interfaces): ch yu s dng trong cc chng
trnh games. Cc lp hocp ny cung cp cc phng thc v trc tip
cc i tng ho (nhim, ng thng, ng trn...)ln mn hnh v bt
s kin phm bm.
Tt c cc lp h tr hoc ng gi trong package javax.microedition.cldui.
Trong , lp Screen v cc lp k tha t n l cc thnh phn giao din cp cao;
lp Canvas thuc phn giao din cp thp.
Hnh 4.1 S cc lp giao din ho
40
-
8/14/2019 NghienCuuJavaMobile
53/234
Java Mobile
public class Display
public abstract class Displayable
public abstract class Screen extends Displayable
public abstract class TextBox extends Screen
public abstract class List extends Screen
public abstract class Item
public class ChoiceGroup extends Item implements Choice
public class DateField extends Item
public class TextField extends Itempublic class Gauge extends Item
public class ImageItem extends Item
public class StringItem extends Item
pubilc abstract class Canvas extends Displayable
public class Command
public class Ticker
public class Graphics
public interface Choice
41
-
8/14/2019 NghienCuuJavaMobile
54/234
Java Mobile
4.1. Screen:
Lp Screen khng c s dng trc tip nh mt i tng trong chng trnh
m cc lp con ca n (Textbox, List, Alert, Form) mi l cc thnh phn hin th
trn mn hnh. Ti mt thi im ch c duy nht mt i tng thuc mt trong
cc lp ny hin th trn mn hnh. y l im khc bit khi so snh vi cc lp
con ca lp Item sau ny.
Lp Screen cng nh ngha sn mt i tng Ticker kt buc vi n. i tng
ny th hin mt chui k t tng cun lin tc t phi sang tri mn hnh.
Cc phng thc v chc nng tng ng ca lp Screen:
Lp Screen: javax.microedition.lcdui.Screen
Phng thc Chc nng
String getTitle () Ly tiu ca Screen
void setTitle (String s) Gn tiu cho Screen
TickergetTicker () Ly bin Ticker ca Screen
void setTicker (Ticker ticker) Gn bin Ticker cho Screen
Bng 4.1 Lp Screen
42
-
8/14/2019 NghienCuuJavaMobile
55/234
Java Mobile
4.2. Form:
Form l lp thng dng nht trong cc i tng Displayable. Nu khi s dng
Texbox, List, Alert, ta ch c th hin th mt i tng duy nht ti mt thi im
th khi s dng Form, chng ta c th hin th nhiu i tng c chc nng tng
t ti cng mt thi im. lm c iu ny, ta ch cn to mt i tng thuc
lp Form v gn vo i tng ny mt hay nhiu i tng thuc lp con ca lp
Item (TextField, DateField, ChoiceGroup, Gauge, ImageItem, StringItem). Lp
Form cng h trsn chc nng cun mn hnh nu thit b khng hin th ht tt c
cc Item trong mt mn hnh.
Lp Form h trsn cc phng thc thm, xo, sa cc thnh phn trong Form
mt cch d dng. Khi gn mt i tng thnh phn - mt i tng thuc lp con
ca Item - vo Form, ta s nhn c mt gi tr tr v tng ng vi ch mc ca
thnh phn trong Form. Vi ch mc ny, ta c th tham chiu n thnh phn
ny khi cn tra cu hay thay i thng tin i tng.
Cc phng thc v chc nng tng ng ca lp Form:
Lp Form: javax.microedition.lcdui.FormPhng thc Chc nng
Form (String title) Khi to mt Form
Form (String title, Item[] items) Khi to mt Form v thm cc Item vo
Form
int append (Image image) Thm mt bin Image vo Form
int append (Item item) Thm mt bin Item vo Form
int append (String string) Thm mt bin String vo Form
void delete (int itemNum) Xo mt Item khi bit ch mc ca n
void insert (int itemNum, Item item) Chn mt Item vo v tr ch mc cho trc
Item getItem (int ItemNum) Ly mt bin Item khi bit ch mc ca n
void set (int itemNum, Item item) Thay bin Item ch mc cho trc bng
bin Item mi
43
-
8/14/2019 NghienCuuJavaMobile
56/234
Java Mobile
void setItemStateListener(
ItemStateListener iListener)
Thm bin Listener vo Form
int size () Ly s Item trong Form
Bng 4.2 Lp Form
44
-
8/14/2019 NghienCuuJavaMobile
57/234
Java Mobile
4.3. Item:
Mt Item l mt thnh phn c th thm vo Form. Cc lp con ca Item gm:
ChoiceGroup, DateField, TextField, Gauge, ImageItem v StringItem.
Item thng c dng chung vi lp ItemStateListener. Khi mun bt s kin
ca 1 Item, ta ch cn kt buc Item vi 1 bin listener thuc lp
ItemStateListener. Bin listener ny s lng nghe cc s kin v t gi phng thc
itemStateChanged() khi Item kt buc vi n c s thay i. Trong phng thc
ny, ta c th vit x l cho cc s kin cn bt ca Item.
Vd: to 1 DateField cho Form v gn bin listener bt s kin:
private Form fmMain;
private DateField fdToday;
...
fmMain = new Form (Core J2ME);
dfToday = new DateField (Today: , DateField.DATE);
...public void itemStateChanged(Item item) {
if (item == dfToday)
//x l
}
Cc phng thc v chc nng tng ng ca lp Item:
Lp Item: javax.microedition.lcdui.Item
Phng thc Chc nng
String getLabel () Ly nhn ca Item
void setLabel (String label) Gn nhn cho Item
Bng 4.3 Lp Item
45
-
8/14/2019 NghienCuuJavaMobile
58/234
Java Mobile
4.3.1. DateField:
Dng hin th mt i tng ngy gi (java.util.Date) v cho php ngi
dng thay i gi tr ngy giny bng cc phm bm ca thit b di ng. Giao
din DateField d dng, khi to mi mt i tng DateField, ta c th la chn
cho php ngi dng ch thay i gi tr ngy thng, gipht hay c hai :
Hnh 4.2 Giao din i tng DateField
Cc phng thc v chc nng tng ng ca lp DateField:
Lp DateField: javax.microedition.lcdui.Date
Phng thc Chc nng
DateField (String label, int mode) Khi to mt i tng DateField
DateField (String label, int mode,
TimeZone timeZone)
Khi to mt i tng DateField vi
mi gicho trc
Date getDate () Ly gi tr ngy thng ca i tng
void setDate (Date date) Gn gi tr ngy thng ca i tngint getInputMode () Ly thng tin kiu nhp liu
void setInputMode () Gn kiu nhp liu
Bng 4.4 Lp DateField
C th chn 1 trong 3 kiu nhp liu cho i tng DateField:
DATE: ch cho php ngi dng thay i gi tr ngy thng
TIME: ch cho php ngi dng thay i gi tr gipht
46
-
8/14/2019 NghienCuuJavaMobile
59/234
Java Mobile
DATE_TIME: cho php ngi dng thay i gi tr c ngy thng ln
gipht
VD:
//to 1 bin DateField cho php ngi dng nhp ngy thng
DateField dfDate = new DateField(Ngay thang,DateField.DATE);
//gn ngy thng hin thi cho bin dfDate
dfDate.setDate(new Date());
//cho php ngi dng thay i thng tin ngy thng v gipht
dfDate.setInputMode(DateField.DATE_TIME);
....
//ly thng tin ngy thng ca bin dfDate (thng ly gi tr mi m ngi dng va nhp )
Date dNewDate=new Date;
dNewDate=dfDate.getDate();
47
-
8/14/2019 NghienCuuJavaMobile
60/234
Java Mobile
4.3.2. Gauge:
Gauge dng biu din tin hon thnh mt vic no (download, upload...)
hoc cp t thp n cao (ca m lng, kh...). Gauge c trng bi hai gi
tr: gi tr hin hnh v gi tr cc i cho php. Gi tr hin hnh ny lun c duy
tr gia 0 v gi tr cc i. Gauge gm hai dng:
Ch tng tc (Interactive mode): Trong ch ny, i tng
Gauge sc v dng cc thanh song song c chiu cao tng dn
biu th cc cp t thp n cao. Ngi s dng c thiu chnh
gi tr hin thi ca Gauge bng cc phm bm. VD: iu chnh m
lng cao thp.
Hnh 4.3 Giao din i tng Gauge ch tng tc
Ch khng tng tc (Non-interactive mode): i tng c biu
din dng cc thanh song song c chiu cao bng nhau, ngi dng
khng c php thay i gi tr ca n. Ngi lp trnh s lp trnh
cho i tng ny tng cp nht gi tr theo thi gian.
48
-
8/14/2019 NghienCuuJavaMobile
61/234
Java Mobile
Hnh 4.4 Giao din i tng Gauge ch khng tng tc
Cc phng thc v chc nng tng ng ca lp Gauge:
Lp Gauge: javax.microedition.lcdui.Gauge
Phng thc Chc nng
Gauge (String label, boolean interactive,
int maxValue, int initValue)
Khi to mt i tng Gauge
int getValue () Ly gi tr hin thi ca Gauge
void setValue (int value) Gn gi tr cho i tng Gauge
int getMaxValue () Ly gi tr cc i cho php ca Gauge
void setMaxValue (int maxValue) Gn gi tr cc i cho php cho
Gauge
boolean isInteractive () Kim tra Gauge c thuc ch tng
tc khng
Bng 4.5 Lp GaugeVD:
//to 1 bin Gauge cho php ngi dng iu chnh m thanh (ch tng tc)
Gauge gVolume= new Gauge (Volume, true, 6, 2);
//gn Gauge vo Form
fmMain.append(gVolume);