j2me_07_1

26
Hận ( BKF) LẬP TRÌNH J2ME CHO THIẾT BỊ DI LẬP TRÌNH J2ME CHO THIẾT BỊ DI ĐỘNG ĐỘNG PHẦN 1 PHẦN 1 Hà nội, 17/06/2009

Upload: sdfg

Post on 11-Nov-2015

212 views

Category:

Documents


0 download

DESCRIPTION

abc

TRANSCRIPT

  • Hn ( BKF)LP TRNH J2ME CHO THIT B DI NGPHN 1H ni, 17/06/2009

  • Hng t nghin cu (1)1. C s v h thng thng tin di ng (lin quan n IT)Mng GSM (Global System for Mobile Communication - H thng thng tin di ng ton cu) Kin trc mng GSM v cc th h ca nKha cnh lin kt sng v tuyn (radio)Kha cnh mng2. Hai cng ngh IEEE802.11 v Bluetooth Khi nim IEEE802.11 ( mng cc b) v BluetoothCc m hnh OSIBluetooth v 802.11 dng cc scenarioBluetooth Multiplayer Games Framework (BluetoothMGF)Cc vn khc

  • Hng t nghin cu (2)3. Giao thc ng dng khng dy (Wireless Application Protocol WAP) Gii thiu giao thc WAP Cng WAPWML (Wireless Markup Language)/ WML scriptWeb Service 4. VoiceXML 5. Cc sn phm T mnh thit k v xy dngNghin cu cc sn phm sn c sau pht trin ln6. Cc la chn khc

  • 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 CardMy in thoi di ngMy 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:

  • 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 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). 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 AlertCung cp tnh nng Record Management System (RMS) cho vic lu tr d liuThng 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.0Nng cp cc tnh nng bo mt nh: Download qua mng an ton hn qua vic h tr giao thc HTTPS. Kim sot vic kt ni gia my di ng v server

  • 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. 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.

  • 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 MIDletTrnh son tho - Son tho m ngun v cc ti nguynBuild (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 ipre-verify (tin kim tra)ng gi (package) - ng gi cc MIDlet thnh cc tp tin JAR v JADGi lp (emulation) - Thc thi cc MIDlet vi mt trnh gi lpG ri (debugger) - G ri MIDlet

  • Mi trng pht trin J2ME (2)Cc J2ME IDE ph bin v ni ting sau:Sun J2ME Wireless Toolkit 2.5Borland JbuilderNetBeans IDEIntelliJ IDEA 3089Eclipse vi EclipseME plug-inSun 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.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.

  • 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

  • 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

  • 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) {}}

  • 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.

  • import javax.microedition.lcdui &midletimport javax.microedition.lcduiInterfaces: Choice, CommandListener, ItemCommandListener, ItemStateListenerClasses: 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 titimport javax.microedition.lcdui.Display;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.StringItem;import javax.microedition.lcdui.TextField; //..............import javax.microedition.midletClasses: MIDletTa c th khai bo: import javax.microedition.midlet.*; Hay : import javax.microedition.midlet.MIDlet;

  • 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.

  • To Formimport 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");form.append("Tat ca cac ban"); 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) {}} To Form :Form(Stringtitle, Item[]items); V d: TaoForm

  • Cc hnh ngCc hnh ng (Command) nh: Thot (EXIT), tr li (BACK) v gi mt phng thc ..Cc Type: BACK, EXIT,CANCEL,HELP,ITEM,SCREEN,STOP,OKCommand(Stringlabel, intcommandType, intpriority); V d:private Command cmExit; // khai bocmExit = new Command("Exit", Command.EXIT, 1); // to hnh ng thotfmMain.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

  • Thnh phn FormKhai bo: import javax.microedition.lcdui.ScreenMt 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 ImageItemCustomItemSpacer

  • 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, chuoi3Mt 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 voV d TextField : ONhapLieu, TextField1,Login,

  • 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 ngyV 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

  • ChoiceGroupThnh phn ChoiceGroup: chn t mt danh sch u vo c nh ngha trc. ChoiceGroup(Stringlabel, intchoiceType, 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 checkboxprivate 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); } }V d:chon nhieu muc (CheckBox): NhomChon Chon mot muc (Radio): NhomChonRadio, NhomChonRadio1 Tng hp: ktra5 (multile); ktra6 (exclusive)

  • 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 bng 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

  • Thnh phn List, TextboxList khng tng minh uc dng th hin mt thc n cc chn la. List(Stringtitle, intlistType, String[]stringElements, Image[]imageElements);V d: Danh sch c phn image - DanhSach Danh sch chn kiu checkbox - DanhSachCheckBoxchn 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

  • Alert, v TickerMt 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 - HopThoaiBaoTicker 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,