Ng Hien Cu u Java Mobile

download Ng Hien Cu u Java Mobile

of 234

Transcript of Ng Hien Cu u Java Mobile

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    2/234

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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: ................................................................................................263.4. Lp MIDletStateChangeException: ............................................................283.5. Display.........................................................................................................283.6. Lp Displayable: .........................................................................................303.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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    8/234

    Hnh 9.3 Lc use case ......................................................................................177Hnh 9.4 M hnh thc th kt hp ER...................................................................183Hnh 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................................................................................218Hnh 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/2/2019 Ng Hien Cu u Java Mobile

    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 ................................................................................................27Bng 3.2 Lp Display ...............................................................................................29Bng 3.3 Lp Displayable.........................................................................................32Bng 3.4 Cc Command Type ..................................................................................37Bng 3.5 Command v CommandListener ...............................................................38Bng 3.6 Item v ItemStateListener..........................................................................39Bng 4.1 Lp Screen.................................................................................................42Bng 4.2 Lp Form ...................................................................................................44Bng 4.3 Lp Item ....................................................................................................45Bng 4.4 Lp DateField ............................................................................................46

    Bng 4.5 Lp Gauge .................................................................................................49Bng 4.6 Lp StringItem...........................................................................................51Bng 4.7 Cc Rng Buc ca TextField ...................................................................53Bng 4.8 Lp TextField ............................................................................................55Bng 4.9 Lp ChoiceGroup ......................................................................................58Bng 4.10 Lp Image................................................................................................62Bng 4.11 nh dng ImageItem ..............................................................................62Bng 4.12 Lp ImageItem ........................................................................................63Bng 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............................................................................................70Bng 4.17 Lp Alert..................................................................................................73Bng 4.18 AlertType.................................................................................................75Bng 4.19 Lp Ticker ...............................................................................................77Bng 5.1 Truy vn kch thc Canvas......................................................................79Bng 5.2 Lp Canvas ................................................................................................81Bng 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 .............................................................................................90Bng 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/2/2019 Ng Hien Cu u Java Mobile

    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......................................................................................109Bng 6.3 Lp RecordEnumeration .........................................................................117Bng 6.4 Cc gi tr hng sp xp record...........................................................118Bng 6.5 Lp RecordListener .................................................................................121Bng 7.1 Lp Connector .........................................................................................128Bng 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 .......................................................................139Bng 7.8 Lp Datagram..........................................................................................140Bng 7.9 Thuc tnh ca SocketConnection...........................................................142Bng 7.10 Lp SocketConnection ..........................................................................143Bng 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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    22/234

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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 cp 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/2/2019 Ng Hien Cu u Java Mobile

    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 lp 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 lp v resource, trong file Jar cn c mt tp tin c gi l

    manifest. y l tp tin m t ni dung ca ton file Jar. Tp 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/2/2019 Ng Hien Cu u Java Mobile

    31/234

    Java Mobile

    File Icon MIDlet (c th khng cn)

    Tn lp s c np 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 cp 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/2/2019 Ng Hien Cu u Java Mobile

    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 np 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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    37/234

    Java Mobile

    Chng 3: Cc vn c bn ca chng

    trnh MIDlet

    3.1. Cu trc cbn:

    Chng ta gi chung cc chng trnh J2ME l MIDlet. Cc chng trnh MIDlet

    ny u c k tha t lp MIDlet. Khng ging nh chng trnh trn my PC,

    cc chng trnh MIDlet khng cn hm main() thc thi. Trc ht chng ta s

    xem xt v vng i (lifecycle) ca cc ng dng MIDlet.

    Mt chng trnh MIDlet khi c np vo thit b c nhng trng thi sau: Paused: Mt chng trnh MIDlet sc a vo trng thi paused sau khi

    thc hin phng thc khi to (constructor) v trc khi c chng trnh

    qun l ng dng (application manager) trn thit b gi thc thi. Trong qu

    trnh hot ng, chng trnh MIDlet cng c th ba tr li trng thi

    paused bi thit b (khi cn tr li cuc gi n ) hoc bi chnh chng

    trnh MIDlet.

    Active: Chng trnh MIDlet ang thc thi.

    Destroyed: Chng trnh MIDlet gii phng tt c ti nguyn v c

    tt bi trnh qun l ng dng trn thit b.

    3.2. Xy dng mtng dng MIDlet:

    Chng ta xy dng mt ng dng MIDlet bng cch k tha (extends) lpMIDlet. Lp ny thc cht l mt interface v chng ta phi khai bo ba hm sau

    y: startApp(), pauseApp() v destroyApp(). y l mt v d v mt chng trnh

    MIDlet n gin:

    public class Shell extends MIDlet

    {

    25

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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 lp 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 lp 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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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 np 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/2/2019 Ng Hien Cu u Java Mobile

    43/234

    Java Mobile

    Lp Screen cn c chia thnh nhng lp 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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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 cp hm

    commandListener x l cc events.

    Khi chng ta to mt Command c ba thng s cn cung cp:

    35

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    52/234

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    54/234

  • 8/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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/2/2019 Ng Hien Cu u Java Mobile

    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);

    fmMain.setCommandListener(this);

    49

  • 8/2/2019 Ng Hien Cu u Java Mobile

    62/234

    Java Mobile

    //to 1 bin Gauge biu din tin trnh Download (ch khng tng tc):

    Gauge gDownload = new Gauge(Download Progress, false, 20,1);

    //gn Gauge vo Form

    fmMain.append(gDownload);

    fmMain.setCommandListener(this);

    //cp nht gi tr lin tc cho Gauge bng cch s dng 1 bin timer

    //khong cch mi ln cp nht l 1000 mili giy

    Timer tTimer = new Timer();

    DTTask ttTimerTask = new DTTask(); //class DTTask extends TimerTask

    tTimer.scheduleAtFixedRate (ttTimerTask, 0, 1000);

    //lp DDTaskc vit bn trong MIDlet

    private class DTTask extends TimerTask{

    public final void run () {

    //nu gi tr hin ti ca gDownload < gi tr cc i th tip tc tng, khng th

    dng li

    if (gDownload.getValue() < gDownload.getMaxValue())

    gDownload.setValue(gDownload.getValue()+1);

    else

    cancel(); //xo bnh thi

    }

    }

    50

  • 8/2/2019 Ng Hien Cu u Java Mobile

    63/234

    Java Mobile

    4.3.3. String Item:

    i tng StringItem dng hin th 1 on vn bn ln mn hnh. Ngi dng

    chc php xem m khng c thay i ni dung on vn bn ny.

    Cc phng thc v chc nng tng ng ca lp StringItem:

    Lp StringItem: javax.microedition.lcdui.StringItem

    Phng thc Chc nng

    StringItem (String label, String text) Khi to mt i tng StringItem

    String getText () Ly ni dung on vn bn

    void setText (String text) Gn ni dung on vn bn cn hin th

    Bng 4.6 Lp StringItem

    ly gi tr nhn (label) hay thay i ni dung nhn c th dng cc phng thc

    getLabel(), setLabel(String label) ca lp Item.

    VD:

    //to mt i tng Str