1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu kỹ thuật lập trình trên điện thoại di động

42 233 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 367 KB

Nội dung

Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Trờng đại học vinh Khoa công nghệ thông tin - Đỗ Thị Hồng Tóm tắt Khoá luận tốt nghiệp đại học Tìm hiểu kỹ thuật lập trình điện thoại di động Chuyên ngành: cử nhân công nghệ thông tin Giáo viên hớng dẫn: Th.s Lê Văn Tấn Vinh 2008 LI NểI U Cụng ngh di ng ngy cng phỏt trin Chic in thoi di ng gi õy khụng ch l phng tin liờn lc m cũn l mt phng tin phc v nhu cu gii trớ ca ngi Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Cụng ngh Java l mt nhng cụng ngh tiờn phong xõm nhp vo lnh vc ng dng cho thit b di ng Nu bn cú mt thit b di ng h tr Java, bn cú th chi Game, chy cỏc ng dng c vit bng Java trờn chic in thoi ca mỡnh bt k õu v bt k lỳc no v nhng chic in thoi di ng hin h tr rt mnh v õm thanh, hỡnh nh, ho gúp phn lm tng tớnh nng gii trớ ca in thoi di ng cng ng thi tỡm hiu vic xõy dng cỏc ng dng trờn in thoi di ng, nờn em ó mnh dn tỡm hiu cỏc k thut lp trỡnh trờn in thoi di ng Ni dung ti gm: Chng I: Tng quan Chng II: Tỡm hiu v J2ME Chng III: K thut lp trỡnh trờn din thoi di ng Chng IV: Th nghim hon thnh khoỏ lun ny em xin by t lũng bit n sõu sc ti thy giỏo Th.S Lờ Vn Tn - ngi ó tn tỡnh hng dn, giỳp em k t nhn ti cho n khoỏ lun c hon thnh Em xin chõn thnh cm n cỏc thy giỏo, cụ giỏo khoa CNTT, cng nh bn bố, ngi thõn ó luụn ng viờn, giỳp , to iu kin cho em sut quỏ trỡnh hc v thc hin ti Em xin chõn thnh cm n! Vinh, thỏng nm 2008 Sinh viờn thc hin Th Hng Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng CHNG I:TNG QUAN Lý chn ti Cụng ngh thụng tin ngy cú vai trũ rt quan trong cuc sng hng ngy ca chỳng ta Vic ng dng cụng ngh thụng tin vo cỏc lnh vc i sng giỳp cụng vic c tin hnh mt cỏch nhanh chúng v hiu qu hn Cú rt nhiu cụng ngh mi phỏt trin song song vi vic phỏt trin cụng ngh thụng tin nh Bluetooth, ADSL, Wireless, Mobile, WAP,nhm giỳp cụng ngh thụng tin ngy cng thõn thit vi ngi dựng hn Mt nhng cụng ngh m gúp phn khụng nh vic a cụng ngh thụng tin n vi ngi s dng l cụng ngh di ng Vi tc phỏt trin ca cụng ngh di ng ngy v nhng li ớch m nú mang li cho chỳng ta l rt ln Khụng ging nh nhng chic in thoi trc õy ch cú nhim v thoi, in thoi hin cũn h tr rt nhiu ng dng khỏc nh: gi/nhn mail, truy cp Intenet, xem phim, nghe nhc, chi game, Nhng chic in thoi di ng hin h tr rt mnh v õm thanh, hỡnh nh, ho gúp phn lm tng tớnh nng gii trớ ca in thoi di ng cng ng thi tỡm hiu vic xõy dng cỏc ng dng trờn in thoi di ng, nờn em chn ti l Tỡm hiu k thut lp trỡnh trờn in thoi di ng nhm khai thỏc cỏc tớnh nng mnh ca in thoi di ng hin Mc tiờu Sau thc hin, cỏc mc tiờu cn t c l: - Hiu chi tit v J2ME v ng dng ca nú lp trỡnh trờn cỏc thit b di ng - Nm c cỏc k thut x lý õm thanh, hỡnh nh, phớm v k thut lu tr trờn in thoi di ng - ng dng cỏc kt qu nghiờn cu c xõy dng ng dng nhm khai thỏc cỏc im mnh v õm thanh, hỡnh nh, nhm phc v cho nhu cu gii trớ ca ngi dựng Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng i tng nghiờn cu xõy dng ng dng trờn in thoi di ng, i tng cn tỡm hiu gm cỏc phn sau: - Nghiờn cu ngụn ng lp trỡnh Java v cụng ngh J2ME ng dng lp trỡnh trờn in thoi di ng - Nghiờn cu cỏc k thut x lý v hot hỡnh - Nghiờn cu cỏc k thut x lý phớm trờn in thoi di ng - Nghiờn cu cỏc k thut x lý õm trờn in thoi di ng - Nghiờn cu cỏc k thut lu tr d liu trờn in thoi di ng Phm vi nghiờn cu Nghiờn cu v cụng ngh J2ME v tỡm hiu cỏc k thut lp trỡnh trờn in thoi di ng ng dng kt qu nghiờn cu xõy dng mt chng trỡnh ng dng cho in thoi di ng Mụi trng thc hin - H iu hnh Windows XP - JDK 1.4.2 - J2ME Wireless Toolkit 1.0 - EclipseME - Borland JBuiler 9X Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng CHNG II: TèM HIU V J2ME Cụng ngh di ng ngy cng phỏt trin Chic in thoi di ng hin khụng cũn n gin thc hin nht nhim v thoi m cng tr nờn khụng th thiu i vi nhu cu thụng tin, gii trớ ca ngi Cụng ngh Java l cụng ngh i tiờn phong vic xõm nhp vo lnh vc di ng Nu bn cú chic in thoi di ng h tr Java, bn cú th chi game, chy cỏc ng dng vit bng Java bt k ni õu v bt k lỳc no I GII THIU V JAVA Vo nhng nm 1990, Java c i t d ỏn xanh (Green Project) v ban u c xõy dng kim soỏt cỏc thit b dõn dng nh TV, VCR, ốn, in thoi v mt s thit b cm tay Java c xõy dng ch yu da b cụng c phỏt trin (Java Development Kit JDK) ú cha trỡnh biờn dch, trỡnh thụng dch, giỳp , ti liu, õy chớnh l nn tng cho vic phỏt trin ng dng Java Vi s phỏt trin ca Java hin nay, cỏc nh phỏt trin ó xõy dng nhiu nhỏnh mi cho Java nh: JavaMail(th in t), Java TAPI( vin thụng), Java3D ( ho chiu), J2ME (ng dng cho thit b di ng) Java cú cỏc phiờn bn sau: J2EETM (Java Platform, Enterprise Edition): phiờn bn dnh cho mỏy ch ln vi sc mnh x lý v dung lng b nh ln J2SETM (Java Platform, Standard Edition): phiờn bn chun chy trờn cỏc mỏy PC v laptop vi mt s MB b nh Cỏc mỏy tớnh ny mc dự khụng mnh bng cỏc mỏy ch nhng mnh hn nhiu so vi cỏc thit b di ng J2METM (Java Platform, Micro Edition): l mt phiờn bn rỳt gn ca Java cho cỏc thit b di ng gii hn v b nh v b x lý II GII THIU V J2ME V NG DNG LP TRèNH CHO IN THOI DI NG Gii thiu v J2ME J2ME c phỏt trin t kin trỳc Java Card, Embeded Java v Personal Java ca phiờn bn Java 1.1 n s i ca Java thỡ Sun quyt nh thay th Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Personal Java v c gi vi tờn mi l Java Micro Edition, hay vit tt l J2ME ỳng vi tờn gi, J2ME l nn tng cho cỏc thit b cú tớnh cht nh, gn (Micro cú ngha l nh ting Anh) Mc tiờu ca J2ME l cho phộp ngi lp trỡnh vit cỏc ng dng c lp vi thit b di ng, khụng cn quan tõm n phn cng tht s t c mc tiờu ny, J2ME c xõy dng bng cỏc tng (layer) khỏc giu i vic thc hin phn cng nh phỏt trin Mi tng trờn tng phn cng l tng tru tng, nú cung cp cho lp trỡnh viờn nhiu giao din lp trỡnh ng dng thõn thin hn - Tng phn cng thit b (Device Hardware Layer): õy l thit b di ng tht s vi cu hỡnh phn cng (b nh v tc x lý) c th Cỏc thit b di ng cú th cú b vi x lý khỏc v cỏc lnh khỏc Mc tiờu ca J2ME l cung cp mt chun cho tt c cỏc loi thit b di ng khỏc - Tng mỏy o Java (JAVA Virtual Machine Layer): mó ngun Java c biờn dch nú c chuyn i thnh mó bytecode Mó bytecode ny sau ú c chuyn thnh mó ngụn ng mỏy ca thit b di ng Tng mỏy o bao gm KVM ( K Virtual Machine) l b biờn dch mó bytecode cú nhim v chuyn mó bytecode ca chng trỡnh Java thnh ngụn ng mỏy chy trờn cỏc thit b di ng Tng ny cung cp mt s chun hoỏ cho cỏc thit b di ng ng dng J2ME sau ó biờn dch cú th chy c trờn bt k thit b di ng no cú h tr J2ME KVM - Tng cu hỡnh (Configuration Layer): cung cp cỏc hm API c bn l nhõn ca J2ME Lp trỡnh viờn cú th s dng cỏc lp v cỏc phng thc ca cỏc API ny nhiờn cỏc API hu dng hn c cha tng hin trng (profile layer) - Tng hin trng (profile layer): cung cp cỏc hm API hu dng hn cho lp trỡnh Mc ớch ca hin trng l xõy dng nờn lp cu hỡnh v cung cp nhiu th vin ng dng hn, MIDP nh ngha cỏc API riờng bit cho thit b di ng Gii thiu cỏc thnh phn nn tng J2ME a nh ngha v Configuration(Cu hỡnh): l c t nh ngha mt mụi trng Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng phn mm cho mt dũng cỏc thit b c phõn loi bi hp cỏc c tớnh, vớ d nh: Kiu s lng b nh Kiu v tc b vi x lý Kiu mng kt ni Do õy l c t nờn cỏc nh sn xut thit b nh Samsung, Nokia bt buc phi thc thi y cỏc c t Sun qui nh cỏc lp trỡnh viờn cú th da vo mụi trng lp trỡnh nht quỏn v thụng qua s nht quỏn ny, cỏc ng dng c to cú th mang tớnh c lp thit b cao nht cú th Vớ d nh mt lp trỡnh viờn vit chng trỡnh game cho in thoi Samsung thỡ cú th sa i chng trỡnh ca mỡnh mt cỏch ti thiu nht cú th chy trờn in thai Nokia Qua õy ta thy khu hiu Write Once, Run Everywhere ca Java ó khụng cũn nhng ta cng phi ỏnh giỏ cao s n lc ca Sun vic to mt mụi trng phn mm chung cho vụ s chng loi thit b di ng cú trờn th trng Hin Sun ó a dng Configuration l CLDC v CDC - CLDC (Connected Limited Device Configuration-Cu hỡnh thit b kt ni gii hn): c thit k nhm vo th trng cỏc thit b cp thp (lowend), cỏc thit b ny thụng thng l mỏy in thai di ng v PDA vi khong 512 KB b nh.Vỡ ti nguyờn b nh hn ch nờn CLDC c gn vi Java khụng dõy (Java Wireless ), dng nh cho phộp ngi s dng mua v ti v cỏc ng dng Java, vớ d nh l Midlet - CDC (Connected Device Configuration - Cu hỡnh thit b kt ni): CDC c a nhm n cỏc thit b cú tớnh nng mnh hn dũng thit b thuc CLDC nhng yu hn cỏc h thng mỏy bn s dng J2SE Nhng thit b ny cú nhiu b nh hn (thụng thng l trờn 2MB) v cú b x lý mnh hn Cỏc sn phm ny cú th k n nh cỏc mỏy PDA cp cao, in thoi web, cỏc thit b gia dng gia ỡnh C dng Cu hỡnh k trờn u cha mỏy o Java (Java Virtual Machine) v hp cỏc lp (class) Java c bn cung cp mt mụi trng cho cỏc ng dng J2ME Tuy nhiờn, phi chỳ ý rng i vi cỏc thit b cp thp, hn ch v ti nguyờn nh b nh v b x lý nờn khụng th yờu cu mỏy o h tr tt c Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng cỏc tớnh nng nh vi mỏy o ca J2SE, vớ d, cỏc thit b thuc CLDC khụng cú phn cng yờu cu cỏc phộp tớnh toỏn du phy ng, nờn mỏy o thuc CLDC khụng c yờu cu h tr kiu float v double b nh ngha v Profile Profile m rng Configuration bng cỏch thờm vo cỏc class b tr cỏc tớnh nng cho tng thit b chuyờn bit C Configuration u cú nhng profile liờn quan v t nhng profile ny cú th dựng cỏc class ln n õy ta cú th nhn thy mi profile nh ngha mt hp cỏc class khỏc nhau, nờn thng ta khụng th chuyn mt ng dng Java vit cho mt profile ny v chy trờn mt mỏy h tr mt profile khỏc Cng vi lý ú, bn khụng th ly mt ng dng vit trờn J2SE hay J2EE v chy trờn cỏc mỏy h tr J2ME Chỳng ta s im qua cỏc profile tiờu biu: + Mobile Information Device Profile (MIDP): profile ny s b sung cỏc tớnh nng nh h tr kt ni, cỏc thnh phn h tr giao din ngi dựng vo CLDC Profile ny c thit k ch yu nhm vo in thai di ng vi c tớnh l mn hỡnh hin th hn ch, dung lng cha cú hn Do ú MIDP s cung cp mt giao din ngi dựng n gin v cỏc tớnh nng mng n gin da trờn HTTP Cú th núi MIDP l profile ni ting nht bi vỡ nú l kin thc c bn cho lp trỡnh Java trờn cỏc mỏy di ng (Wireless Java) Hin nay, MIDP cú hai phiờn bn l MIDP 1.0 v MIDP 2.0 Nhng chc nng m MIDP cung cp: - Cỏc lp v cỏc kiu d liu: phn ln cỏc lp quen thuc vi cỏc lp trỡnh viờn Java gi li, vớ d: cỏc lp gúi java.util nh Stack, Vector, Hastable, - H tr i tng Display: mt chng trỡnh MIDP s h tr nht mt i tng Display,l i tng qun lý vic hin th d liu trờn mn hỡnh in thoi - H tr Form v giao din ngi dựng - H tr Timer v Alert - Record Management System (RMS) cho vic lu tr d liu MIDP 2.0 c SUN cho i vo thỏng 11/2003 vi hng lot tớnh nng mi (hin Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng mt s loi in thoi h tr MIDP 2.0 nh Nokia 6600, Sony Ericssion P900) - Nõng cp tớnh nng bo mt: doanload qua mng an ton hn qua vic h tr giao thc HTTPS Kim soỏt vic kt ni gia mỏy di ng vi Server: vớ d cỏc chng trỡnh s khụng th kt ni n server nu khụng cú s chp nhn ca ngi dựng - Thờm cỏc API h tr Multimedia: Mobile Media API (MMAPI) - M rng cỏc tớnh nng ca Form: nhiu ci tin c a vo API javaxmicroedition.lcdui, nhng thay i ln nht l Form v Item - H tr lp trỡnh game vi Game API: Trc õy vi MIDP 1.0, lp trỡnh viờn phi t vit code cho hnh ng ca nhõn vt v Vic ny lm tng kớch thc chng trỡnh cng nh kh nng li Vi Game API MIDP 2.0, cụng vic ny tr nờn nh nhng hn nhiu í tng c bn ca Game API l gi nh mt mn hỡnh game nh l hp cỏc lp (layer) Vớ d: game ua xe thỡ mn hỡnh nn l mt layer, ng l mt layer v chic xe l mt layer khỏc - H tr kiu nh RGB: mt nhng ci tin hp dn cho cỏc nh phỏt trin MIDP l biu din hỡnh nh di dng mng cỏc s nguyờn, cho phộp thao tỏc vi d liu hỡnh nh mt cỏch trc tip Trong ti em ch trung vo MIDP 1.0 vỡ hin cỏc in thoi h tr MIDP 1.0 l rt nhiu nhng h tr MIDP 2.0 thỡ tng i ớt + PDA Profile: tng t MIDP, nhng vi th trng l cỏc mỏy PDA vi mn hỡnh v b nh ln hn + Foundation Profile: cho phộp m rng cỏc tớnh nng ca CDC vi phn ln cỏc th vin ca b Core Java 1.3 MIDlet Cỏc ng dng J2ME c gi l MIDlet (Mobile Imformation Device Applet) Mt MIDlet l mt lp Java m rng(extend) ca lp tru tng java.microedition.midlet.MIDlet v thc thi (implement) cỏc phng thc startApp(), pauseApp() v destroyApp() B khung yờu cu ti thiu ca mt ng dng MIDlet Import javax.microedition.midlet.*; Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Public class exampleMIDlet extends MIDlet { Public exampleMIDlet(){} Public void startApp(){} Public void pauseApp(){} Public void destroyApp(boolean unconditional){} } Cỏc phỏt biu import c dựng include cỏc lp cn thit t cỏc th vin CLDC v MIDP - Phn chớnh ca MIDlet: c nh ngha nh l lp m rng ca lp MIDlet, vớ d ny l exampleMIDlet - Hm to (Constructor): hm to ch c thc thi mt ln MIDlet to ln u tiờn, hm to s khụng c gi li tr MIDlet thoỏt v sau ú ng li - StartApp(): phng thc startApp() c gi bi b qun lý ng dng MIDlet c to hay MIDlet tr v trng thỏi tm dng - PauseApp(): phng thc pauseApp() c gi bi b qun lý ng dng mi ng dng cn c tm dng - DestroyApp(): phng thc ny c gi thoỏt MIDlet * Chu k sng ca MIDlet S biu din chu k sng ca Midlet Chng trỡnh c Tạm dừng startApp() pauseApp() Hoạt động destroyApp() Huỷ Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 10 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Nhng khú khn v hng gii quyt x lý õm Ta thy rng qua tỡm hiu ba loi in thoi khỏc l Nokia, Samsung, Ericssion s dng MIDP 1.0, cỏch lp trỡnh x lý õm l khỏc Mt s khú khn m chỳng ta thy lp trỡnh õm cho cỏc loi in thoi di ng l: - MIDP 1.0 khụng h tr õm nờn khụng cú mt chun c th no cho vic lp trỡnh õm trờn cỏc dũng in thoi di ng khỏc - Mi nh sn xut iu cung cp cỏc API riờng cho tng sn phm ca h - m m mi nh sn xut dựng cho in thoi ca h cng khỏc Vy lm vit mt ng dng cú th chy c trờn cỏc dũng sn phm khỏc m khụng cn phi vit nhiu ln cho nhiu dũng sn phm khỏc ? Cỏch gii quyt nh sau: - To lp tru tng cho vic x lý õm chung, gm cỏc phng thc chớnh cú th chi nhc - To cỏc lp chi õm ng vi cỏc dũng sn phm tng ng k tha t lp tru tng - Dựng className tỡm mt s lp c trng ca tng sn phm, nu tỡm thy thỡ xỏc nh c sn phm thuc loi no v dựng lp tng ng chi nhc Ci t chi tit cỏch x lý õm nh sau: public class AbSound { //Lp Abstract cho vic chi õm public AbSound(){} public void StopSound(){} public void PlaySound(int i, int j, int k){} public synchronized void sound(byte type){} public void a(int i){} Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 28 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng public void Init(){} public void Vibration(){} public void Light(){} } Lp õm cho Nokia: import com.nokia.mid.sound.*; import java.io.*; import com.nokia.mid.ui.DeviceControl; public class soundnokia extends AbSound implements SoundListener { // Khai bỏo cỏc bin õm // Ci t tt c cỏc phng thc tru tng public void StopSound() { // Code ca Nokia } public void PlaySound(int i, int j, int k) { // Code ca Nokia } public synchronized void sound(byte type) { // Code ca Nokia } } Lp õm cho SAMSUNG: import com.samsung.util.*; public class SoundSS extends AbSound Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 29 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng { // Khai bỏo cỏc bin õm // Ci t tt c cỏc phng thc tru tng public void PlaySound(int j, int k, int l) { // Code play nhc ca Samsung } public void StopSound() { // Code Stop nhc ca Samsung } public synchronized void sound(byte type) { Code // ca Samsung } public void Vibration() { Code // ca Samsung } public void Light() { Code // ca Samsung } } Tng t cho cỏc mỏy khỏc ta cng ci t nh vy Sau ú s dng ta cn cú lp Detect Sound nh sau: public class DetectSound { public DetectSound(String s, String s1){} public static AbSound Init() { Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 30 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng AbSound q1; try { Class.forName("com.nokia.mid.sound.Sound"); Class.forName("com.nokia.mid.sound.SoundListener"); Class.forName("com.nokia.mid.ui.DeviceControl"); Class class1 = Class.forName("soundnokia"); q1 = (AbSound)class1.newInstance(); } catch(Exception exception) { try { Class.forName("com.samsung.util.AudioClip"); Class.forName("com.samsung.util.Vibration"); Class.forName("com.samsung.util.LCDLight"); Class class2 = Class.forName("SoundSS"); q1 = (AbSound)class2.newInstance(); } catch(Exception exception1) { q1 = new AbSound(); } } return q1; } } Trong ng dng, cn s dng õm ta ch cn gi phng thc Init() xỏc nh xem loi in thoi no ang c s dng AbSound ss=DetectSound.Init(); Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 31 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng V X Lí LU TR D LIU Gii thiu h thng lu tr d liu trờn in thoi di ng Vic lu tr thụng tin cho vic to ca cỏc ng dng l cn thit v quan trng Thụng tin m cỏc ng dng cú th lu tr nh cỏc thụng tin cu hỡnh ng dng, thụng tin quỏ trỡnh s dng cỏc ng dng,i vi mỏy PC thỡ vic ny tng i d dng chỳng ta cú tay nhiu thit b lu tr nh HDD, CD-ROM, USB DISK,nhng vic ny tng i khú khn i vi cỏc ng dng trờn in thoi di ng MIDP cung cp cho chỳng ta mt i tng lu tr l Record Management System (RMS) cho phộp chỳng ta lu tr thụng tin di dng cỏc record Cỏc i tng ny c cung cp tromg gúi javax.microedition.rms Mt vựng nh trờn cỏc thit b s dng MIDP s c dnh riờng cho vic lu tr cỏc d liu ca ng dng MIDlet V trớ v kớch thc ca vựng lu tr ny c xỏc nh tựy thuc vo nhng thit b c th RMS cho phộp lu tr d liu ng dng thoỏt, ng li v thit b di ng tt hay thay pin D liu ca ng dng s tn ti trờn thit b di ng cho n ng dng tht s c xúa thit b di ng Khi mt MIDlet b xúa, tt c cỏc record m nú lu tr cng b xoỏ Hỡnh sau minh ho vic lu tr d liu Midlet Lu tr bn ghi Midlet Midlet Lu tr bn ghi Lu tr bn ghi Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 32 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Nh hỡnh v, cỏc MIDlet cú th cú nhiu hn mt hp cỏc record v chỳng cú th truy xut n hp d liu lu b MIDlet m chỳng lu tr Do ú, MIDlet v MIDlet cú th truy truy xut n Record Store v Record Store nhng chỳng khụng th truy xut n Record Store Ngc li, MIDlet ch cú th truy xut Record Store m khụng th truy xut n Record Store v Record Store Tờn ca b lu tr d liu phi l nht mt b MIDlet nhng cỏc b MIDlet khỏc cú th trựng tờn H thng RMS lu tr cỏc bn ghi theo mt mng cỏc byte Cỏc mng byte cú chiu di khỏc v mi mng byte c gỏn mt s ID bn ghi Cỏc bn ghi c nh danh bng mt s ID nht Cỏc s ID c ỏnh s bt u t Cỏc s ID s tng dn v khụng c dựng li cho dự bn ghi ú cú b xoỏ nờn s tn ti mt s khong trng cỏc ID bn ghi MIDP khụng kim soỏt vic ghi quỏ s bn ghi ti a, iu ny ph thuc vo ng dng nh dng, thờm, xúa cỏc record Thờm record gm bc: bc u tiờn l nh dng record theo cỏc yờu cu v bc hai l thờm cỏc record ó c nh dng vo RMS RMS khụng h tr s tun t hoỏ ú ta phi nh dng cỏc mng byte lu tr bn ghi Sau õy l vớ d ca vic nh dng lu tr bn ghi, m mt RMS v sau ú l thờm d liu bn ghi vo RMS ByteArrayOutputStreambaos=new ByteArrayOutputStream(); DataOutoutStream = DataOutputStream(baos); outputStream.writeByte(T); outputStream.writeInt(score); outputStream.writeUTF(name); byte[] theRecord=baos.toByteArray(); recordStore rs=null; rs=RecordStore.openRecordStore(RecordStoreName,Creat eINotExist); int RecordID=rs.addRecord(theRecord,0,theRecord.length); Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 33 Khoỏ lun tt nghip Record ID Record ID Byte Tỡm hiu k thut lp trỡnh trờn in thoi di ng Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte T Score Name a nh dng d liu bn ghi Trong vớ d trờn hai dũng u to mt lung xut ghi d liu bn ghi S dng i tng DataOutputStream cho phộp cỏc bn ghi d dng c nh dng theo cỏc kiu chun ca Java (long, int ,string,) m khụng phi quan tõm n vic tỏch nú thnh d liu dng byte Phng thc writeInt(), writeByte(), writeUTF() nh dng d liu nh hỡnh v (tag, score, name) S dng th tag lm cú ớch xỏc nh loi record sau ny Phng thc toByteArray() chộp d liu mt lung xut thnh mt mng byte cha cỏc bn ghi lu tr Bin theRecord tham chiu n d liu ng ó c nh dng b Thờm record v RMS Khi d liu ó c nh dng, nú cú th c thờm vo RMS Phng thc openRecordStore() to v m mt RMS vi tờn l RecordStoreName Phng thc addRecord dựng thờm record bt u t byte ca theRecord v tr v ID ca bn ghi gn vi record ny c Xúa bn ghi Bn ghi c xúa bng cỏch chuyn s ID bn ghi cho phng thc deleteRecord() ca i tng RecordStore Khi bn ghi cú ID c xúa, thờm mi bn ghi thỡ bn ghi ú cú ID l 8, ID khụng c dựng li d Lc cỏc bn ghi (Filtering Records) Giao din RecordFilter cung cp mt cỏch thun tin lc cỏc bn ghi theo tiờu chun nht nh, RecordEnumeration cú th c dựng duyt qua cỏc bn ghi v ch tr v cỏc record phự hp vi tiờu chun xỏc nh Giao din RecordFilter cú phng thc matches() dựng xỏc nh cỏc tiờu chun phự hp Phng thc matches() cú tham s u vo l mng byte biu din mt bn Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 34 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng ghi Phng thc tr v true nu bn ghi ny phự hp vi tiờu chun ó nh ngha e Sp xp cỏc bn ghi Cỏc bn ghi RMS cú th c sp xp theo mt th t no ú chỳng ta nh ngha.Vic sp xp c thc hin thụng qua giao din RecordComparator Giao din ny cú phng thc compare() phi c implement nh ngha cỏch hai bn ghi so sỏnh theo th t Cỏc tham s u vo l hai mng byte biu din hai record Class IntegerFilter implements RecordFilter { Public boolean matches(byte [] candidate) throws IlleegalArgumentException { Return (candidate[0]==T); } Trong vớ d trờn, IntegerFilter dựng lc cỏc bn ghi cú byte u tiờn l T Nờn nh rng cỏc bn ghi khụng cú cựng nh dng nờn vic s dng byte u tiờn lm th tag l rt cú ớch Phng thc matches ch tr v true nu byte u tiờn l T Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 35 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng CHNG IV: TH NGHIM Bi toỏn ng dng cỏc kt qu tỡm hiu c vo vic xõy dng chng trỡnh mỏy tớnh (calculator) trờn in thoi di ng Cụng c ci t thc thi ng dng cn ci t cỏc cụng c sau: - JDK - 1_5_0_15-windows-i586-p: B cụng c phỏt trin ng dng java - Sun_java_wireless_toolkit-2_5_2 windows: Mụi trng xõy dng v úng gúi cỏc ng dng khụng dõy J2ME - Notepad, wordpad, eclipse, dựng son tho code Ni dung chng trỡnh Thut toỏn mụ t chng trỡnh mỏy tớnh trờn in thoi di ụng nh sau: public final class Maytinh extends MIDlet implements CommandListener { private static final int NUM_SIZE = 20; private final Command exitCmd = new Command("Exit", Command.EXIT, 1); private final Command calcCmd = new Command("OK", Command.SCREEN, 2); private final TextField t1 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); private final TextField t2 = new TextField(null, "", NUM_SIZE, TextField.DECIMAL); private final TextField tr = newTextField("Ket qua", "", NUM_SIZE, TextField.UNEDITABLE); private final ChoiceGroup cg = new ChoiceGroup("", ChoiceGroup.POPUP, Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 36 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng new String[] { " Cong ", " tru ", " Nhõn ", " Chia " }, null); private final Alert alert = new Alert("Error", "", null, AlertType.ERROR); private boolean isInitialized = false; protected void startApp() { if (isInitialized) { return; } Form f = new Form("Mỏy Tớnh"); f.append(t1); f.append(cg); f.append(t2); f.append(tr); f.addCommand(exitCmd); f.addCommand(calcCmd); f.setCommandListener(this); Display.getDisplay(this).setCurrent(f); alert.addCommand(newCommand("Back",Command.SCREEN, 1)); isInitialized = true; } protected void destroyApp(boolean unconditional) { } protected void pauseApp() { } public void commandAction(Command c, Displayable d) { if (c == exitCmd) { destroyApp(false); notifyDestroyed(); return; } double res = 0.0; Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 37 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng try { double n1 = getNumber(t1, "First"); double n2 = getNumber(t2, "Second"); switch (cg.getSelectedIndex()) { case 0: res = n1 + n2; break; case 1: res = n1 - n2; break; case 2: res = n1 * n2; break; case 3: res = n1 / n2; break; default: } } catch (NumberFormatException e) { return; } catch (ArithmeticException e) { alert.setString("Divide by zero."); Display.getDisplay(this).setCurrent(alert); return; } String res_str = Double.toString(res); Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 38 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng if (res_str.length() > tr.getMaxSize()) { tr.setMaxSize(res_str.length()); } tr.setString(res_str); } private double getNumber(TextField t, String type) throws NumberFormatException { String s = t.getString(); if (s.length() == 0) { alert.setString("No " + type + " Argument"); Display.getDisplay(this).setCurrent(alert); throw new NumberFormatException(); } double n; try { n = Double.parseDouble(s); } catch (NumberFormatException e) { alert.setString(type + " argument is out of range."); Display.getDisplay(this).setCurrent(alert); throw e; } return n; } } Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 39 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng Kt qu thc hin - Xõy dng thnh cụng ng dng Mỏy tớnh chy trờn in thoi di ng - ng dng c mt nhng k thut ó nghiờn cu vo thc t mt cỏch hiu qu - Chng trỡnh c kim tra thnh cụng v chy tt trờn mỏy o ca Nokia, Samsung * Mn hỡnh kt qu Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 40 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng KT LUN Sau thc hin ti tỡm hiu k thut lp trỡnh trờn in thoi di ng, em ó tỡm hiu mt s k thut lp trỡnh trờn in thoi di ng v xõy dng c ng dng thc t t cỏc kt qu tỡm hiu ny Ba phn trng tõm m em ó tỡm hiu : - K thut x lý hỡnh nh - K thut x lý phớm bm - K thut x lý õm Nhng kt qu ú ó c ng dng thnh cụng vic xõy dng chng trỡnh mỏy tớnh trờn in thoi di ng, ng dng c kim tra thnh cụng trờn mỏy o ca cỏc loi in thoi Nokia v SAMSUNG Em hy vng rng nhng kt qu m em tỡm hiu c s gúp phn l mt ti liu cú ớch cho cỏc bn sinh viờn nghiờn cu vit ng dng trờn in thoi di ng Hng phỏt trin Hin nay, lp trỡnh trờn in thoi di ng l mt lnh vc mi ang thu hỳt nhiu lp trỡnh viờn Vic xõy dng cỏc ng dng trờn in thoi l rt cn thit v cng l nhu cu cp thit s phỏt trin ca cụng ngh di ng Trong phm vi lun vn, em ch trỡnh by nhng phn c bn nht k thut lp trỡnh trờn in thoi di ng V mt nhng k thut ú ó c kim tra v thc hin tt trờn mỏy o, cú th ng dng vo thc t Tuy nhiờn cũn cú nhiu iu cn ci tin v nghiờn cu thờm nh: - Xõy dng module x lý õm tt hn, cú th test v chy c trờn mi mỏy in thoi - Ci thin cht lng hỡnh nh nhng khụng lm tng kớch thc ng dng - Nõng cao cht lng ng dng, cho phộp ng dng cú th chy tt trờn c MIDP 1.0 v MIDP 2.0 - B sung cỏc tớnh nng nh kim soỏt ốn mn hỡnh, h tr rung, - B sung cỏc tớnh nng nh chi qua mng bng giao tip hng ngoi hoc Bluetooth Sinh viờn thc hin: Th Hng Lp 44E2 - CNTT 41 Khoỏ lun tt nghip Tỡm hiu k thut lp trỡnh trờn in thoi di ng TI LIU THAM KHO [1] Nguyn Thnh Danh, Lp trỡnh Game cho in thoi di ng, Nxb Giao thụng ti, 2005 [2] Trn Tin Dng, Giỏo trỡnh lý thuyt v bi Java, Nxb Lao ng xó hi, 2007 [3] Lờ Ngc Quc Khỏnh, Phỏt trin ng dng J2ME vi Samsung Jaumi Wireless toolkit 2.0, Javavietnam.org, 2004 [4] Lờ Ngc Quc Khỏnh, Phỏt trin ng dng J2ME v J2ME wireless toolkit, Javavietnam.org, 2004 [5] Ngụ Vn Khoa, Hng dn s dng Samsung JSDK 1.0, Javavietnam.org, 2004 [6] Nguyn Hu Mai, Tng quan v J2ME, Javavietnam.org, 2004 [7] Gia Vit, Vit mó cho cỏc thit b di ng, Nxb Giao thụng ti, 2007 [8] http:// www java.sun.com [9] http:// www.javavietnam.Org [10] http:// www.tinCNTT.com Sinh viờn thc hin: Th Hng - Lp 44E2 - CNTT 42 [...]... thuật lập trình trên điện thoại di động CHƯƠNG III KỸ THUẬT LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG Khi lập trình trên điện thoại di động, cần phải khai thác được các thế mạnh của điện thoại ngày nay là âm thanh và hình ảnh Trong phần này em sẽ trình bày một số kỹ thuật xử lý âm thanh, một số kỹ thuật xử lý đồ họa, kỹ thuật xử lý phím và kỹ thuật xử lý lưu trữ dữ liệu I XỬ LÝ ĐỒ HOẠ 1 Tìm hiểu các đối tượng... thiết bị giả lập khác nhau Ta có thể kiểm tra ứng dụng MIDlet trên các thiết bị này trước khi ứng dụng thực tế III NHỮNG KHÓ KHĂN KHI LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG Công nghệ J2ME cho việc lập trình trên điện thoại di động thì không khó để tìm hiểu nhưng cái khó trong việc xây dựng ứng dụng trên điện thoại di động gồm những điểm sau: - Vấn đề bộ nhớ và bộ xử lý: tuy các điện thoại di động ngày nay... hành động tương Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 21 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động ứng Sau khi xử lý sẽ gọi phương thức repaint() để cập nhật lại màn hình thiết bị theo hành động mà người dùng vừa thực hiện IV XỬ LÝ ÂM THANH 1 Vấn đề hỗ trợ âm thanh trên điện thoại di động Một khó khăn rất lớn khi lập trình các ứng dụng trên điện thoại di động. .. nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động c Đối với điện thoại SONY ERICSSION Với điện thoại Ericssion thì việc lập trình âm thanh tương đối dễ dàng hơn các loại Nokia hay SAMSUNG Do các loại điện thoại Ericssion mà hỗ trợ Java điều sử ụng gói API về âm thanh của SUN Gói này hỗ trợ chơi rất nhiều loại âm thanh được mô tả trong bảng sau: 1 Wave audio files: audio/x-wav 2 AU audio files:... private AudioClip audioClip=null; public void playAudioClip(String filename) { stopAudioClip(); try{ audioClip=newAudioClip(1,filename); //tạolớp AudioClip audioClip.play(10,1); // Play 10 lần, Loop time = 1 } catch (Exception e) { e.printStackTrace(); } Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 25 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động } public void stopAudioClip(){... MIDI mặc dù là một số điện thoại Nokia đã hỗ trợ chơi nhạc MIDI Cách kiểm tra điện thoại có hỗ trợ chơi âm thanh không: Dùng phương thức className để tìm gói com.nokia.mid.sound.Sound, nếu tìm thấy tức là điện thoại có hỗ trợ chơi âm thanh private static TonePlayer makeTonePlayer() { Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 23 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại. .. của công nghệ di động, chiếc điện thoại di động không còn đơn giản như trước đây là có nhiệm vụ thoại mà còn là phương tiện rất hữu hiệu trong công việc và giải trí Về hình ảnh, trước đây màn hình điện thoại di động chỉ là màn hình đen trắng nhưng ngày nay màn hình điện thoại là màn hình màu và ở một số loại điện thoại mới có đến vài trăm ngàn màu Đó là những ưu điểm mà giúp điện thoại di động ngày càng... - CNTT 22 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động (byte)0x17, (byte)0xa1, (byte)0x6a, (byte)0x12, (byte)0xa1, (byte)0x1a, (byte)0x20, (byte)0xd5, (byte)0x0b, (byte)0x50, (byte)0x00 }; hoặc được lưu trữ trong file ott (ví dụ amnhac.ott) Dạng WAV do kích thước quá lớn không phù hợp với việc lập trình trên điện thoại di động nên em không trình bày trong phần này Cách phát... nên em chỉ tìm hiểu được 3 loại điện thoại là Nokia, SAMSUNG và SONY Ericssion Một số khác như Motorola, LG, Siemen nếu có điều kiện em sẽ tìm hiểu sau Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 27 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động 2 Những khó khăn và hướng giải quyết khi xử lý âm thanh Ta thấy rằng qua tìm hiểu ba loại điện thoại khác nhau là Nokia, Samsung,... về true nếu byte đầu tiên là T Sinh viên thực hiện: Đỗ Thị Hồng – Lớp 44E2 - CNTT 35 Khoá luận tốt nghiệp Tìm hiểu kỹ thuật lập trình trên điện thoại di động CHƯƠNG IV: THỬ NGHIỆM 1 Bài toán Ứng dụng các kết quả tìm hiểu được vào việc xây dựng chương trình máy tính (calculator) trên điện thoại di động 2 Công cụ cài đặt Để thực thi ứng dụng cần cài đặt các công cụ sau: - JDK - 1_5_0_15-windows-i586-p: ... tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động KẾT LUẬN Sau thực đề tài tìm hiểu kỹ thuật lập trình điện thoại di động , em tìm hiểu số kỹ thuật lập trình điện thoại di động xây dựng... luận tốt nghiệp Tìm hiểu kỹ thuật lập trình điện thoại di động CHƯƠNG III KỸ THUẬT LẬP TRÌNH TRÊN ĐIỆN THOẠI DI ĐỘNG Khi lập trình điện thoại di động, cần phải khai thác mạnh điện thoại ngày âm... lập trình điện thoại di động - Nghiên cứu kỹ thuật xử lý đồ họa hoạt hình - Nghiên cứu kỹ thuật xử lý phím điện thoại di động - Nghiên cứu kỹ thuật xử lý âm điện thoại di động - Nghiên cứu kỹ

Ngày đăng: 15/12/2015, 08:52

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w