You are on page 1of 28

LP TRNH J2ME CHO THIT B DI NG

PHN 1

Ging vin: Nguyn Anh Chuyn

1.Gii thiu v J2ME


Lch s

J2ME c pht trin t kin trc Java Card, Embeded Java v Personal Java ca phin bn Java 1.1. n s ra i ca Java 2 th Sun quyt nh thay th Personal Java v c gi vi tn mi l Java 2 Micro Edition, hay vit tt l J2ME. ng vi tn gi, J2ME l nn tng cho cc thit b c tnh cht nh, gn.
L do chn J2ME

Java ban u c thit k dnh cho cc my vi ti nguyn b nh hn ch. Th trng ca J2ME c m rng ra cho nhiu chng loi thit b nh: Cc loi th c nhn nh Java Card My in thoi di ng My PDA (Personal Digital Assistant - thit b tr gip c nhn) Cc hp iu khin dnh cho tivi, thit b gii tr gia dng

Kin trc ca J2ME (1)

Cc thnh phn trong nn tng J2ME

nh ngha v Configuration (Cu hnh): l c t nh ngha mt mi trng phn mm cho mt dng cc thit b c phn loi bi tp hp cc c tnh, v d nh: Kiu v s lng b nh Kiu v tc b vi x l Kiu mng kt ni Do y l c t nn cc nh sn xut thit b nh Samsung, Nokia bt buc phi thc thi y cc c t do Sun qui nh cc lp trnh vin c th da vo mi trng lp trnh nht qun v thng qua s nht qun ny, cc ng dng c to ra c th mang tnh c lp thit b cao nht c th. Hin nay Sun a ra 2 dng Configuration:
5

Kin trc ca J2ME (2)


CLDC (Connected Limited Device Configuration-Cu hnh thit b kt ni gii hn): c thit k nhm vo th trng cc thit b cp thp (low-end), cc thit b ny thng thng l my in thoi di ng v PDA vi khong 512 KB b nh. V ti nguyn b nh hn ch nn CLDC c gn vi Java khng dy (Java Wireless ), dng nh cho php ngi s dng mua v ti v cc ng dng Java, v d nh l Midlet. CDC- Connected Device Configuration (Cu hnh thit b kt ni): CDC c a ra nhm n cc thit b c tnh nng mnh hn dng thit b thuc CLDC nhng vn yu hn cc h thng my bn s dng J2SE. Nhng thit b ny c nhiu b nh hn (thng thng l trn 2Mb) v c b x l mnh hn. Cc sn phm ny c th k n nh cc my PDA cp cao, in thoi web, cc thit b gia dng trong gia nh

Kin trc ca J2ME (2)


nh ngha v Profile: Profile m rng Configuration bng cch thm vo cc class b tr cc tnh nng cho tng thit b chuyn bit. C 2 Configuration u c nhng profile lin quan v t nhng profile ny c th dng cc class ln nhau. n y ta c th nhn thy do mi profile nh ngha mt tp hp cc class khc nhau, nn thng ta khng th chuyn mt ng dng Java vit cho mt profile ny v chy trn mt my h tr mt profile khc. Cng vi l do , bn khng th ly mt ng dng vit trn J2SE hay J2EE v chy trn cc my h tr J2ME. Sau y l cc profile tiu biu: Mobile Information Device Profile (MIDP): profile ny s b sung cc tnh nng nh h tr kt ni, cc thnh phn h tr giao din ngi dng vo CLDC. Profile ny c thit k ch yu nhm vo in thai di ng vi c tnh l mn hnh hin th hn ch, dung lng cha c hn. Do MIDP s cung cp mt giao din ngi dng n gin v cc tnh nng mng n gin da trn HTTP. C th ni MIDP l profile ni ting nht bi v n l kin thc c bn cho lp trnh Java trn cc my di ng (Wireless Java)

Gii thiu MIDP (1)


nh ngha:

y l Profile c nh ngha dnh ring cho cc thit b di ng v l thnh phn chnh trong J2ME. MIDP cung cp cc chc nng c bn cho hu ht cc dng thit b di ng ph bin nht nh cc my in thoi di ng v cc my PDA. Tuy nhin MIDP khng phi l cy a thn cho mi lp trnh vin v nh chng ta bit, MIDP c thit k cho cc my di ng c cu hnh rt thp.
Nhng chc nng MIDP khng thc hin c:

Php tnh du phy ng (floating point): Php tnh ny i hi rt nhiu ti nguyn CPU v phn ln cc CPU cho cc thit b di ng khng h tr php tnh ny, do MIDP cng khng c. B np lp (Class Loader).

Gii thiu MIDP (1)


H tr t kha finalize() nh trong J2SE: Vic dn dp ti nguyn trc khi n b xa c y v pha cc lp trnh vin. Khng h tr JNI H tr hn ch thao tc bt li. Phn ln cc th vin API cho Swing v AWT khng th s dng c trong MIDP. Khng h tr cc tnh nng qun l file v th mc: y c th lm bn ngc nhin nhng thc t l cc thit b J2ME khng c h tr cc thit b lu tr thng thng nh cng v.v. Tuy nhin, iu khng c ngha l bn phi mt i mi d liu quan trng mi khi tt my, Sun cung cp mt chc nng khc tng ng gi l Record Management system (RMS) cung cp kh nng lu tr cho cc thit b ny.

Gii thiu MIDP (2)


Nhng chc nng MIDP cung cp :

Cc lp v kiu d liu: cc lp trong gi java.util nh Stack, Vector, Hastable cng nh Enumeration. H tr i tng Display: mt chng trnh MIDP s h tr duy nht mt i tng Display,i tng qun l vic hin th d liu trn mn hnh in thoi. H tr Form v cc giao din ngi dng. H tr Timer v Alert Cung cp tnh nng Record Management System (RMS) cho vic lu tr d liu Thng 11 nm 2003 Sun tung ra MIDP 2.0 vi hng lot tnh nng khc c cung cp thm so vi bn 1.0. Nhng ci tin ni bt so vi MIDP 1.0 Nng cp cc tnh nng bo mt nh: Download qua mng an ton hn qua vic h tr giao thc HTTPS.

10

Gii thiu MIDP (3)


Thm cc API h tr Multimedia.Ci tin hp dn nht ca MIDP 2.0 l tp cc API media. Cc API ny l mt tp con ch h tr m thanh ca Mobile Media API (MMAPI). M rng cc tnh nng ca Form. Nhiu ci tin c a vo API javax.microedition.lcdui trong MIDP 2.0, nhng cc thay i ln nht (ngoi API cho game) l trong Form v Item. H tr cc lp trnh vin Game bng cch tung ra Game API.Vi MIDP 1.0 th cc lp trnh vin phi t mnh vit code qun l cc hnh ng ca nhn vt cng nh qun l ha.

11

Gii thiu MIDP (3)


Vic ny s lm tng kch thc file ca sn phm cng nh vic xut hin cc on m b li. c hng li nht t Game API trong MIDP 2.0 khng ch l cc lp trnh vin Game m cn l cc lp trnh vin cn s dng cc tnh nng ha cao cp. tng c bn ca Game API l vic gi nh rng mt mn hnh game l tp hp cc layer (lp). V d nh: trong mt game ua xe th mn hnh nn l mt layer, con ng l mt layer v chic xe c xem nh ang nm trn layer khc. Vi Game API nh pht trin cn c cung cp cc tnh nng nh qun l cc thao tc bn phm. H tr kiu nh RGB: mt trong nhng ci tin hp dn cho cc nh pht trin MIDP l vic biu din hnh nh di dng cc mng s nguyn, cho php MIDlet thao tc vi d liu hnh nh mt cch trc tip.

12

Mi trng pht trin J2ME (1)


Mt mi trng pht trin tch hp (IDE) nhm ci thin nng sut ca lp

trnh vin bng cch cung cp mt tp cc cng c lp trnh tch hp thng qua mt giao din ngi dng ha (GUI) Mt IDE cho J2ME cn phi cung cp cc tin ch sau: Qun l project - Qun l cc tp tin ngun v cc thng s MIDlet Trnh son tho - Son tho m ngun v cc ti nguyn Build (Bin dch)
obfuscate (tu chn): s loi b cc thng tin khng cn thit trong class (nh

tn ca cc bin cc b, cc lp, phng thc,..). Ngoi vic bo v m ngun, obfuscate cn gim kch thc ca cc tp tin class, lm cho kch thc ca tp tin JAR cng gim i pre-verify (tin kim tra)

ng gi (package) - ng gi cc MIDlet thnh cc tp tin JAR v JAD Gi lp (emulation) - Thc thi cc MIDlet vi mt trnh gi lp G ri (debugger) - G ri MIDlet

13

Mi trng pht trin J2ME (2)


Cc J2ME IDE ph bin v ni ting sau:

Sun J2ME Wireless Toolkit 2.5 Borland Jbuilder NetBeans IDE IntelliJ IDEA 3089 Eclipse vi EclipseME plug-in

Sun J2ME Wireless Toolkit 2.5 (WTK)

WTK l mt b cng c pht trin Java J2ME (Java Development Kit - JDK) cung cp cho cc lp trnh vin mi trng gi lp, cng c, ti liu v cc v d cn thit pht trin cc ng dng MIDP.

14

Mi trng pht trin J2ME (2)


WTK khng phi l mt IDE hon chnh, v n b cc tnh nng son tho v g ri vn c xem l bt buc phi c trong mt IDE. Nhng KToolbar, c cung cp trong b WTK l mt mi trng pht trin ti thiu cung cp mt GUI dnh cho vic bin dch, ng gi v thc thi cc ng dng MIDP. WTK 2.5 cng cung cp cc b gi lp c ci tin vi cc tnh nng gi lp, monitor v debug mi. C mt c ch c thm vo tin trnh build ca KToolbar cho php vic tch hp v thc thi b obfuscate Java byte code khi ng gi MIDlet suite.

15

Mi trng pht trin J2ME (3)


Ci t b J2SE vo my tnh, a ch ti J2SE http://java.sun.com/j2se/ Ci t J2ME Wireless Toolkit, a ch http://java.sun.com/j2me/download.html

Chn "New Project..." to mt project mi. Nhp tn project (tn ca file JAR v tn ca th mc project mi), nhp tn ca MIDlet class (l main class ca ng dng) Th mc : C:\WTK25-Beta2\apps\Vidu2\src, y s l ni cha source ca ng dng. C th dng bt k chng trnh son tho vn bn no son code. Tin hnh build v run chng trnh

16

Mi trng pht trin J2ME (4)


Nhn vo "Settings..." trn toolbar vo menu cu hnh cho project. ng n trng "MIDlet-Jar-Size" (vi gi tr l "100" bytes), Chng

ta s lm cho gi tr t c thit lp ng. Chn MIDlets tab trong ca s dialog cu hnh ca porject. Chn hng duy nht trong bng ("MIDlet-1") lm ni n v chn. Sau nhn vo nt "Edit. Xo trng "Icon" nu khng c tp tin *.PNG t vo tp tin JAR. Chp nhn cc thay i. (1) Project --> Clean: Xo tt c tp tin *.class. (2) Build : Build tt c tp tin *.class v preverify. (3)Project --> Package --> Create Package: Sinh ra tp tin *.JAR v *.JAD. Khi lm 3 bc trn, tp tin *.JAR v *.JAD kt qu c th sn sng c thc thi trong chng trnh m phng, hay a ln WWW site download. Trng kch thc ca *.JAR trong tp tin *.JAD s t ng. ng qun thc hin bc 3 mi khi rebuild

17

Chng trnh n gin : Hello(Li cho)


import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class TestMidlet extends MIDlet { private Form mForm; public TestMidlet() { mForm = new Form("Lap trinh voi J2ME"); mForm.append(new StringItem(null, "Hello world!, MIDP!")); } public void startApp() { Display.getDisplay(this).setCurrent(mForm); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} }

18

Vng i ca mt MIDlet
Ging nh dng chng trnh Applet trn J2SE, mt Midlet lun lun k tha javax.microedition.midlet Hm c bn nht trong mi Midlet l startApp(), hm ny s khi to Midlet cng nh vn hnh cc thnh phn hoc i tng khc, Mi Midlet cn c pauseApp() v destroyApp(), mi hm ny s c gi thc thi tng ng khi user chn dng hoc thot chng trnh.

19

IMPORT JAVAX.MICROEDITION.LCDUI &MIDLET


import javax.microedition.lcdui Interfaces: Choice, CommandListener, ItemCommandListener,

ItemStateListener Classes: Alert, AlertType, Canvas,ChoiceGroup, Command, CustomItem, DateField, Display,Displayble, Font, Form,Gauge, Graphics, Image, ImageItem,Item, List, Screen, StringItem, TextBox, TextField,Ticker.. V d ta c th khai bo: import javax.microedition.lcdui.*; Hoc khai chi tit import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; //.............. import javax.microedition.midlet Classes: MIDlet Ta c th khai bo: import javax.microedition.midlet.*; Hay : import javax.microedition.midlet.MIDlet;

20

2. Cc thnh phn giao din mc cao ca ng dng MIDP


Mt ng dng MIDlet ch c 1 i tng th hin Display. i tng ny dng ly thng tin v i tng trnh by.

Mt i tng Displayable l mt thnh phn c hin th trn mt thit b. MIDP cha 2 lp con ca lp Displayable l Screen v Canvas. Mt i tng Screen khng phi l mt ci g hin ra trn thit b, lp Screen s c tha k bi cc thnh phn hin th mc cao, chnh cc thnh phn ny s c hin th ra trn mn hnh.
21

o Form
form.append("\nChung ta bat dau lam viec nao!\n Mot dong moi\n"); form.append("Day la mot dong rat dai chung ta khong viet chung tren mot dong duoc"); form.append(new TextField("Ho va ten:", "Le Thi Cham Chi", 32, TextField.ANY)); form.append("Dia chi:"); form.append(new TextField(null, null, 32, TextField.ANY)); display.setCurrent(form); started = true; } } protected void pauseApp() {} protected void destroyApp(boolean unconditional) {} }
22

To Form :Form(String title, Item[] items); V d: TaoForm form.append("Tat ca cac ban");


import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class CreateForm extends MIDlet { protected Display display; // Flag indicating first call of startApp protected boolean started; protected void startApp() { if (!started) { display = Display.getDisplay(this); Form form = new Form("Tieu de Form"); form.append("Chao");

Cc hnh ng
Cc hnh ng (Command) nh: Thot (EXIT), tr li (BACK) v gi mt

phng thc ..Cc Type: BACK, EXIT,CANCEL,HELP,ITEM,SCREEN,STOP,OK Command(String label, int commandType, int priority); V d:

private Command cmExit; // khai bo cmExit = new Command("Exit", Command.EXIT, 1); // to hnh ng thot fmMain.addCommand(cmExit); // a hnh ng vo Form fmMain.setCommandListener(this); // Listen for Event public void commandAction(Command c, Displayable s) { // Thc thi n if (c == cmExit){ destroyApp(false); notifyDestroyed(); } }
V d: CacHanhDong

23

Thnh phn Form


Khai bo: import javax.microedition.lcdui.Screen Mt Form ch n gin l mt khung cha cc thnh phn, m mi thnh phn c tha k t lp Item StringItem TextField DateField Gauge ChoiceGroup Image and ImageItem CustomItem Spacer

24

StringItem v TextField
Mt thnh phn StringItem c dng hin th mt nhn hay chui vn bn. Ngi dng khng th

thay i nhn hay chui vn bn khi chng trnh ang chy. StringItem khng nhn ra s kin. Phng thc dng ca lp StringItem StringItem(String label, String text)

V d StringItem :chuoi, chuoi2, chuoi3 Mt thnh phn TextField nh bt k cc i tng nhp vn bn tiu biu no. C th ch nh mt nhn, s k t ti a c php nhp, v loi d liu c php nhp. V TextField cn cho php nhp vo mt khu m cc k t nhp vo c che bi cc k t mt n. Phng thc dng ca lp TextField TextField(String label, String text, int maxSize, int constraints) constraints: xc nh loi d liu no c php nhp vo TextField MIDP nh ngha cc tham s rng buc sau cho thnh phn TextField: ANY: nhp bt k k t no EMAILADDR: ch cho php nhp cc a ch email hp l NUMERIC: ch cho php nhp s PHONENUMBER: Ch cho php nhp s in thoi URL: Ch cho php nhp cc k t hp l bn trong URL PASSWORD: che tt c cc k t nhp vo

d TextField : ONhapLieu, TextField1,Login,

25

DATEFIELD , GAUGE
Thnh phn DateField: thao tc i tng Date, nh ngha trong

java.util.Date. To mt i tng DateField: chnh sa ngy, gi hay c hai. Cc phng thc ca lp DateField gm: DateField(String label, int mode) DateField(String label, int mode, TimeZone timeZone) Cc mode tng ng ca lp DateField gm: DateField.DATE_TIME: cho php thay i ngy gi DateField.TIME: ch cho php thay i gi DateField.DATE: ch cho php thay i ngy V d:hien thoi,thay doi: ThoiGian, Thnh phn Gauge: m t mc hon thnh mt cng vic. C 2 loi Gauge l loi tng tc(thay i Gauge) v khng tng tc(cp nht Gauge).Hm dng ca lp Gauge: Gauge(String label, boolean interactive, int maxValue, int initialValue) private Gauge gaVolume; // iu chnh m lng gaVolume = new Gauge("Sound Level", true, 100, 4); V d: HoanThanh ; Tng hp c hai: bai4 hoc ktra4

26

CHOICEGROUP
Thnh phn ChoiceGroup: chn t

mt danh sch u vo c nh ngha trc. ChoiceGroup(String label, int choiceType, String[] stringElements, Image[] imageElements); ChoiceType c 2 loi: EXCLUSIVE (chn mt mc): nhm ny lin quan n cc radio button MULTIPLE (chn nhiu mc): nhm ny lin quan nhm cc checkbox

V d:chon nhieu muc (CheckBox): NhomChon Chon mot muc (Radio): NhomChonRadio, NhomChonRadio1 Tng hp: ktra5 (multile); ktra6 (exclusive)

private ChoiceGroup radio1; private int defaultIndex; private int RadioGroup; radio1 = new ChoiceGroup(Moi ban chon:", Choice.EXCLUSIVE); radio1.append(Chon 1", null); radio1.append(Chon 2", null); defaultIndex = radio1.append(Chon 3", null); radio1.setSelectedIndex(defaultIndex, true); radioButtonsIndex = form.append(radio1); public void itemStateChanged(Item item){ if (item == radio1){ StringItem msg = new StringItem(Ban da chon: ", radio1.getString(radio1.getSelectedIndex())); form.append(msg); } }

27

IMAGE AND IMAGEITEM


Hai lp hin th hnh nh: Image v ImageItem. Image dng to mt i tng hnh nh v gi

thng tin chiu cao, chiu rng, v d nh c bin i hay khng. Lp ImageItem: tm nh s c hin th, v d tm nh t trung tm, bn tri, bn trn ca mn hnh. MIDP a ra 2 loi hnh nh l loi khng bin i v bin i. Mt nh khng bin i k t lc n c to ra. Loi nh ny c c t mt tp tin. Mt nh bin i c bn l mt vng nh. iu ny ty thuc vo vic bn to ni dung ca tm nh b ng cch ghi n ln vng nh. Cc phng thc dng cho lp Image v ImageItem Image createImage(String name) Image createImage(Image source) Image createImage(int width, int height) Image createImage(Image image, int x, int y, int width,int height, int transform)(TOP|LEFT) I mageItem(String label, Image img, int layout, String altText) Form fmMain = new Form("Images"); // Tao mot image Image img = Image.createImage("/terrain1.png"); // Them vao form fmMain.append(new ImageItem(null, img, ImageItem.LAYOUT_CENTER, null));
V d: HinhAnh

28

Thnh phn List, Textbox


List khng tng minh uc dng th hin mt thc n cc chn

la. List(String title, int listType, String[] stringElements, Image[] imageElements); V d: Danh sch c phn image - DanhSach Danh sch chn kiu checkbox - DanhSachCheckBox chn cc mode (listType) ca danh sch - DanhSach1 TextBox dng cho php nhp nhiu dng. TextBox v TextField c rng buc ging nhau cho php nhp liu. V d ANY, EMAIL, URI Phng thc dng ca mt TextBox: TextBox(String title, String text, int maxSize, int constraints) V d: Vit ra li cho dng TextBox HelloTextBox Nhap du lieu - NhapTextBox

29

Alert, v Ticker
Mt Alert n gin l mt hp thoi rt nh. C 2 loi Alert:

Modal: hp thoi thng bo c trnh by n khi ngi dng n nt ng Non-modal: hp thoi thng bo ch c trnh by trong mt s giy nht nh Cc phng thc dng ca Alert: Alert(String title) Alert(String title, String alertText, Image alertImage, AlertType alertType) AlertType s dng m thanh thng bo cho ngi dng bit c mt s kin xy ra. AlertType bao gm 5 loi m thanh nh sn l: thng bo, xc nhn, bo li, thng bo v cnh bo. Cc phng thc dng ca Alert cho bit l Alert c th bao gm 1 tham chiu n mt i tng AlertType. V d: Thng bo c s dng nh ThongBao1 Hai loi thng bo ThongBao2 Cc loi thng bo - HopThoaiBao Ticker th hin mt on chui chy theo chiu ngang. Tham s duy nht ca Ticker l on vn bn c trnh by. Tc v chiu cun c xc nh bi vic ci t trn thit b no. Phng thc dng ca Ticker Ticker(String str) T cy phn cp,ta thy Ticker khng l lp con ca lp Screen m Ticker l mt bin ca lp Screen. Ngha l mt Ticker c th c gn vo bt c lp con ca lp Screen bao gm c Alert. V d: Chy dng ch - ChuoiChay,Ticker1,

30

You might also like