You are on page 1of 30

I HC NNG TRNG I HC BCH KHOA

KHOA CNG NGH THNG TIN B MN: H THNG NHNG ------

BO CO

CHUYN 1
TI: Chng trnh nghe nhc trn mobile.
Sinh vin thc hin : Phan Vn Tun V Vn Huy Phng Duy Thin Lp : 07T1

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

MC LC
I. Gii thiu Java v ng dng lp trnh trn thit b di ng:................................ 3 I.1. Gii thiu v Java: ...................................................................................... 3 I.2. ng dng lp trnh trn thit b di ng bng J2ME:................................... 3 I.2.1. MIDlet:................................................................................................. 4 I.2.2. ha trong J2ME: ............................................................................. 4 1) ha mc cao: ......................................................................................... 5 2) ha mc thp:........................................................................................ 5 I.2.3. Lp Canvas: ......................................................................................... 5 I.2.4. Lp Graphics:....................................................................................... 6 I.2.5. Lp trnh Bluetooth: ............................................................................. 6 II. Th vin lp trnh a phng tin trong J2ME: ................................................. 6 III. Chng trnh: ................................................................................................16 III.1. Ni dung cc lp:....................................................................................16 III.1.1. Lp startmusic:....................................................................................16 III.1.2. Lp logon:...........................................................................................18 III.1.3. Lp screensave :..................................................................................18 III.1.4. Lp adjustvolume:...............................................................................21 III.1.5. Lp midlet playaudio: .........................................................................22 IV. Kt qu:............................................................................................................25 V. Kt lun: ...........................................................................................................29

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 2----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

I. Gii thiu Java v ng dng lp trnh trn thit b di ng:


I.1. Gii thiu v Java: Vo nhng nm 1990, Java c ra i t d n xanh v ban u c xy dng kim sat cc th b dn dng v mt s thit b cm tay. Java c xy dng ch yu da trong b cng c pht trin (Java Development Kit JDK) nh l th vin chun trong cha trnh bin dch, trnh thng dch, y chnh l nn tng cho vic pht trin ng dng Java. Hin nay cc nh pht trin xy dng nhiu nhnh mi cho Java nh: J2EE ( Java 2 Platform Enterprise Edition): Phin bn dnh cho my ch ln vi sc mnh x l v dung lng b nh ln. J2SE ( Java 2 Platform Standard Edition): Phin bn chun chy trn cc my PC v laptop. J2ME ( Java 2 Platform Micro Edition): l phin bn rt gn ca Java cho cc thit di ng gii hn v b nh v b x l. I.2. ng dng lp trnh trn thit b di ng bng J2ME: Mc tiu ca J2ME l cho php ngi lp trnh vit cc chng trnh ng ng c lp vi thit b di ng, khng cn quan tm n phn cng. J2ME c xy dng bng cc tng khc nhau giu i vic thc hin phn cng khi nh pht trin. Sau y l cc tng ca J2ME c xy dng trn CLDC: Tng phn cng thit b: y l thit b di ng vi cu hnh phn cng ca n nh b nh, tc x l. Cc thit b di ng khc nhau c th c cc b x l khc nhau vi cc m linh khc nhau. Mc tiu ca J2ME l cung cp mt chun cho tt c cc loi thit b di ng khc nhau. Tng my o Java: Khi m ngun Java oc bin dch n c chuyn i thnh m bytecode. M bytecode ny sau c chuyn thnh m ngn ng my ca thit b di ng. Tng my o java bao gm KVM ( K virtual Machine) l b bin dch m bytecode c nhim v chuyn m bytecode ca chng trnh Java thnh ngn ng my chy trn thit b di ng. tng ny cung cp mt s chun ha cho cc thit b di ng ng dng J2ME sau khi bin dch c th hat ng trn bt k thit b di ng no c J2ME KVM. Ph n c ng thi t b Cc API khc Tng cu hnh : tng cu hnh ca CLDC nh ngha giao din ngn ng Java c bn cho php chng trnh java chy trn thit b di ng. y l mt tp cc API nh ngha li ca ngn ng J2ME . Ngi lp trnh c th s dng cc lp v phng thc ca cc API ny tuy nhin cc API hu dng hn c cha trong tng hin trng. SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 3----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa Tng hin trng: Tng ny cung cp cc API hu dng hn cho ngi lp trnh. Mc ch ca hin trng l xy trn lp cu hnh v cung cp nhiu th vin ng dng hn. MIDP nh nghia cc API ring bit cho thit b di ng. Cng c th c cc hin trng v cc API khc ngai MIDP c dng cho ng dng, cng c th c mt hin trng nh ngha cc API cho vic to cc ng dng Bluetooth. Hin nay, MIDP c hai phin bn l MIDP 1.0 v MIDP 2.0 v cung cp: - Cc lp v cc kiu d liu - H tr i tng Display - H tr Form v giao din ngi dng - H tr Timer v Alert - h tr Record Management System( RMS) cho vic lu tr d liu. Cc tnh nng ni bt ca MIDP 2.0 so vi MIDP 1.0: - Nng cp tnh nng bo mt, h tr giao thc HTTPS, kim sat vic kt ni my di ng vi server. - Thm cc API h tr Multimedia. - M rng cc tnh nng ca Form I.2.1. MIDlet: Cc ng dng J2ME c gi l MIDlet ( Mobile Information Device Applet). MIDlet l mt lp java m rng ca lp tru tng javax.microedition.midlet.MIDlet v thc thi cc phng thc startApp(), pauseApp(), v destroyApp(). on chng trnh ti thiu ca MIDlet: import javax.microedition.midlet.*; public class exMIDlet extend MIDlet { public exMIDlet( ) { } public void startApp( ) { } public void pauseApp( ) { } public void destroyApp( boolean unconditional ) { } Trong : o Phng thc exMIDlet l hm constructor . o Phng thc startApp( ) : c gi bi b qun l ng dng khi MIDlet c khi to hay khi MIDlet tr v trng thi tm dng. o Phng thc pauseApp( ) : c gi bi b qun l ng dng mi khi ng dng cn c tm dng. o Phng thc destroyApp( ): c gi khi thot khi MIDlet. I.2.2. ha trong J2ME: SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 4----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa Cc lp MIDP cung cp hai mc ha: ha mc thp v ha mc cao. ha mc cao dng cho vn bn hay form. ha mc thp dng cho cc ng dng games. 1) ha mc cao: ha mc cao l lp con ca lp Screen. N cung cp cc thnh phn nh text box, form, list v alert. a) TextBox: Lp Textbox cho php ngi dng nhp v san tho vn bn. Ngi lp trnh c th nh ngha s k t ti a, gii hn d liu nhp ( s, mt khu, imail,) v hiu chnh ni dung ca textbox. b) Form: Form l lp hu dng nht ca cc lp Sreen bi v n cho php cha nhiu item trn cng mt mn hnh. Cc item c th l datafield, TextField, ImageItem. c) List: Lp List l mt Screen cha danh sch cc la chn, ngoi s dng c th tng tc vi List v chn mt hay nhiu item. 2) ha mc thp: ha mc thp l lp con ca lp Canvas. Lp ny cung cp cc phng thc ha cho php v ln mn hnh hay vo mt m hnh cng vi cc phng thc x l s kin bn phm. Lp ny dng cho cc ng dng tr chi cn iu khin v mn hnh. Canvas v Graphics l hai lp ch yu ca cc hm API cp thp. Canvas l mt khung cho php ngi lp trnh c th v ln thit b trnh by cung nh vic x l s kin. Cn lp Graphics cung cp cc i tng v. I.2.3. Lp Canvas: Lp Canvas l mt lp tru tng, ta phi to cc canvas ca ring v trn lp m rng ny v lp Canvas cung cp phng thc: - paint (Graphics g) thc hin v ln canvas. - repaint() thc hin v li cc hnh hin th trn mn hnh. Mi lp canvas t ng nhn s kin ca phm bng cch s dng cc phng thc: - void keyPressed (int keyCode): c gi khi mt phm c nhn. - void keyReleased( int keyCode): c gi khi mt phm c th. - void keyRepeated( int keyCode): c gi khi mt phm b gi. - int getKeyCode(int gameAction): Ly mt m phm phn hi li hnh ng game xc nh trn thit b. SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 5----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa - String getKeyName (int keyCode): Ly tn ca phm c gi tr m phm l keyCode. - int getGameAction(int keyCode): Ly mt hnh ng game lin quan n m phm c nhn. - void pointerDragged( int x, int y): c gi khi r chut n ta x, y mi. - void pointerPressed ( int x, int y) : c gi khi nhn chut ti ta x, y - void pointerReleased ( int x, int y): c gi khi th chut ti ta x, y. I.2.4. Lp Graphics: ii tng Graphics c th c s dng v: hnh vung, hnh ch nht, cung trn, ng thng, k t, nh, vn bn trn i tng Canvas. Cc phng thc: - void setColor(int red, int green, int blue) - void drawArc(): v cung trn. - void drawRect(): v hnh ch nht - void drawString(): V chui. - void drawImage(): v nh. I.2.5. Lp trnh Bluetooth: K thut bluetooth c dng truyn thng gia in thai di ng vi in thoi di ng, hoc gia in thoi di ng v my tnh. C 3 phng thc truyn thng c ci t trong k thut bluetooth: - OBEX - Object Exchange: dng chuyn d liu dng file, hnh nh. - L2CAP- Logical Link Control and Adaptation Protocol: Dng chuyn cc gi d liu gia client v server. - RFCOMM- Radio Frequency COMMunication: Dng chuyn cc lung d liu n gin. Sun Java cung cp th vin hm API bluetooth: Bluetooth JSR82 API package v bao gm tt c cc phng thc truyn thng ni trn. mt ng dng bluetooth bao gm hai phn: server dng to dch v bluetooth v phn client kt ni n server v thc hin truyn thng.

II. Th vin lp trnh a phng tin trong J2ME:


SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 6----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa Th vin lp trnh a phng tin J2ME h tr cc kh nng nh m thanh hay \video cho ng dng trn thit b di ng da trn nn tng MIDP. Th vin lp trnh a phng tin J2ME (MMAPI - Mobile Media API) l mt gi th vin ty chn h tr cc kh nng a phng tin nh m thanh hay video cho ng dng trn thit b di ng da trn nn tng MIDP. Bi vit ny s trnh by kin trc k thut ca MMAPI cng nh cc v d thc t bn c c th th cc kh nng ca th vin ny. Tng quan v MMAPI Th vin MMAPI c thit k c th chy trn bt k my o no da trn J2ME, bao gm cc my o h tr CLDC (thng trn cc in thoi di ng) hay CDC (trn cc my tr gip s c nhn PDA hay smartphone). B cng c lp trnh JaUmi ca Samsung h tr lp trnh cng nh kim tra cc tnh nng ca th vin MMAPI. MMAPI c thit k vi nhng c tnh sau: H tr pht li (playback) v ghi li (recording) cc tp tin a phng tin, h tr nh dng m thanh hay hnh nh bt k. S dng t ti nguyn ca h thng, chy c vi nhng cu hnh rt thp ca cc thit b da trn CLDC nh TD. Khng phn bit nghi thc cng nh nh dng. Kh nng ch s dng mt s tnh nng: cc lp trnh vin c th gii hn nhng tnh nng trong chng trnh, v d nh ch h tr tnh nng m thanh c bn hay ch h tr mt vi nh dng no . Kh nng m rng: nhng kh nng mi c th c thm vo m khng c lm nh hng n cc tnh nng trc . Mt s v d nh kh nng m rng thm cc nh dng tp tin hay kh nng b sung cc lp iu khin cho tng nh dng. BNG 1: CC LP TRONG MMAPI Lp M t Gi
im bt u nhn cc i tng Manager Player x l cc javax.microedition.media tp tin a phng tin. M t kiu ni dung javax.microedition.media.protocol ContentDescriptor ca d liu. Biu din mt cch tru tng kh nng x l cc giao thc bng cch che i chi javax.microedition.media.protocol DataSource tit cch nhn d liu, v d nh t mt tp tin hay t my ch. i tng

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 7----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa
Player s dng nhng phng thc ca lp ny nhn cc d liu nhp.

Kh nng ty chn cho cc nh sn xut thit b: mc d th vin ny cung cp cc tnh nng cho nhiu mc ch khc nhau nhng n phi cho php cc nh sn xut b qua mt s tnh nng nu nh thit b ca h khng h tr. Vic x l tp tin a phng tin bao gm 2 thnh phn: X l giao thc truyn: c d liu t mt ngun nh tp tin hay my ch chuyn n b phn x l ni dung. X l ni dung: gii m d liu v xut n ra mt thit b xut nh loa hay mn hnh video. d dng lp trnh 2 b phn x l trn, MMAPI cung cp cho lp trnh vin 2 kiu i tng cp cao: DataSource: tru tng ho phn x l giao thc bng cch che i cch c d liu t mt ngun no . Player: lp ny c d liu t DataSource, x l v xut ra. Lp ny cung cp cc phng thc iu khin vic pht li cc tp tin m thanh v hnh nh. MMAPI cn cung cp mt i tng th ba l Manager hot ng theo c ch factory pattern cho php lp trnh vin to ra cc i tng Player t cc i tng DataSource hoc InputStream. Chu k sng ca i tng Player gm c 5 trng thi sau: UNREALIZED, REALIZED, PREFETCHED, STARTED, v CLOSED. Su phng thc sau c dng thay i trng thi ca i tng Player: realize(), prefetch(), start(), stop(), deallocate(), close(). Khi mt i tng Player c to ra th u tin n s trng thi UNREALIZED. Khi gi phng thc realize() th i tng ny s chuyn sang trng thi REALIZED v khi ng nhng thng tin cn thit c th nhn v ni dung tp tin. Gi prefetch() s chuyn trng thi sang PREFETCHED, trng thi ny i tng Player s to kt ni n d liu v thc thi nhng tc v khi ng khc. Khi chng ta gi start() th i tng s bt u x l d liu v trng thi c chuyn thnh STARTED. Khi ton b ni dung c pht li xong th i tng Player s c chuyn v trng thi PREFETCHED. Gi phng thc close() s chuyn trng thi thnh CLOSED. Mt i tng Player cung cp nhng iu khin cho kiu d liu n ang x l. Cc bn c th s dng phng thc getControl() nhn v mt i tng Control hoc gi getControls() nhn v mt mng cc Control. V d nh bn ang pht li mt tp tin theo nh dng MIDI v gi phng thc getControl() th bn s nhn v mt i tng MIDIControl. MMAPI bao gm 3 gi sau:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 8----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa javax.microedition.media cung cp mt s giao tip (interface), mt lp ngoi l MediaException v c bit l lp Manager, y chnh l ni bt u nhn v cc i tng Player. javax.microedition.media.control nh ngha nhng iu khin c th c th c s dng vi i tng Player nh VolumeControl, VideoControl, v cc iu khin khc. javax.microedition.media.protocol nh ngha nhng giao thc cho vic x l cc iu khin tu bin, v d nh lp DataSource l mt lp tru tng x l ni dung ca cc ti nguyn. Nhng lp, giao tip v ngoi l trong cc gi trn c m t trong bng 1, 2 v 3. S dng MMAPI Phn ny s trnh by nhng v d thc t s dng cc API ca MMAPI, y ti ch trnh by nhng on m quan trng. Nu mun tm hiu su hn hay cn cc v d hon chnh, cc bn c th xem v d mmademo c trong b cng c pht trin ca Sun v Samsung. Pht sinh tng nhc Vic pht sinh tng nhc bao gm vic xc nh tn s v khong thi gian. Kiu m thanh ny rt quan trng cho cc game cng nh cc ng dng m thanh khc trn cc thit b nh. Vi cc thit b nh, h tr m thanh c th ch gii hn vic h tr pht li cc tng nhc. Phng thc Manager.playTone() s pht sinh cc tng nhc. Thng th cc nh sn xut s h tr bng cch s dng b pht sinh tng nhc ca phn cng. Bn ch vic xc nh nt nhc, khong thi gian v m lng. ... try { // pht tng nhc trong 4000 mili giy vi m lng 100 Manager.playTone()(ToneControl.C4, 4000, 100); } catch(MediaException me) { } ... Bn cng c th to ra mt i tng Player tng hp cc chui tng nhc. ... Player player = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR); ... Kiu Player ny cung cp cho bn mt i tng ToneControl lp trnh chui cc tng nhc. Tuy nhin tnh nng ny c th khng c trn tt c cc thit b. Pht li tp tin MP3 on m sau y minh ho cch pht li mt tp tin mp3 mt cch n gin nht: ... try { Player p = Manager.createPlayer SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 9----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa (http://www.javavietnam.org/somemusic.mp3); p.setLoopCount(5); p.start(); } catch(IOException ioe) { } catch(MediaException e) { } ... on m sau b sung thm mt s iu khin m thanh: ... Player p; VolumeControl vc; try { p = Manager.createPlayer(http://www.javavietnam.org/somemusic.mp3); p.realize(); // Nhn iu khin m thanh v t m lng ln ti a vc = (VolumeControl) p.getControl(VolumeControl); if(vc != null) { vc.setVolume(100); } // dng hn ch tr ca Player p.prefetch(); // hm ny thot ra ngy m khng i n khi kt thc p.start(); } catch(IOException ioe) { } catch(MediaException e) { } ...
BNG 2: CC GIAO TIP (INTERFACE) CA MMAPI Gi Giao tip M t Dng iu khin mt s chc nng lin quan n x l a phng tin. Cc i tng Control nhn c t giao tip Controllable, i tng Player m rng Controllable nn c th cung cp cc iu khin, v d nh VolumeControl iu chnh m thanh.

javax.microedition.media

Control

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 10----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa
Cung cp mt giao tip nhn v cc i Controllable tng Control t mt i tng Player hoc t cc i tng khc. Dng iu khin vic pht li cc tp tin a phng tin. i Player tng ny cung cp nhng phng thc qun l chu k sng ca Player Dng nhn cc s kin pht sinh t i PlayerListener tng Player Mt ngun lin tc cc nhp thi gian, dng o thi gian cho vic TimeBase ng b ho vic pht li nhiu Player cng lc. iu khin v tr chnh FramePositionControl xc ca cc khung hnh video. Nu cc iu khin h tr giao tip ha th GUIControl cn cung cp phn hin thc cho giao tip ny. Dng nhn cc thng tin v tp tin a MetaDataControl phng tin. Dng iu khin MIDIControl cc thit b MIDI. iu khin cao thp tng i ca m PitchControl thanh m khng nh hng n tc pht li. iu khin tc pht RateControl li ca Player. RecordControl iu khin vic ghi li. Xc nh im dng StopTimeControl khi pht li. iu khin nhp TempoControl pht li. Cho php pht li mt chui cc tng nhc do ToneControl ngi dng nh ngha.

javax.microedition.media

javax.microedition.media

javax.microedition.media

javax.microedition.media

javax.microedition.media.control

javax.microedition.media.control

javax.microedition.media.control javax.microedition.media.control

javax.microedition.media.control

javax.microedition.media.control javax.microedition.media.control javax.microedition.media.control javax.microedition.media.control

javax.microedition.media.control

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 11----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa
iu khin vic hin th video, v d nh v tr javax.microedition.media.control VideoControl tng i so vi Canvas. javax.microedition.media.control VolumeControl iu khin m lng. c dng chung vi i tng DataSource javax.microedition.media.protocol SourceStream cung cp giao tip cho vic nhn d liu ca Player. Lp Manager cng h tr phng thc Manager.createPlayer() vi tham s InputStream nn

bn c th pht li nhc t Record Management System (RMS), hoc t trong tp tin JAR. y l v d cch ly InputStream t RMS v pht li on nhc lu trong : ... RecordStore store; int id; // pht li t record store RMS try { InputStream is = new ByteArrayInputStream (store.getRecord(id)); Player player = Manager.createPlayer(is, audio/X-wav); p.start(); } catch (IOException ioe) { } catch (MediaException me) { } ... V y l on m v d cch pht li nhc t tp tin lu tr trong tp tin nn JAR: ... try { InputStream is = getClass().getResourceAsStream(audio.wav); Player player = Manager.createPlayer(is, audio/X-wav); p.start(); } catch(IOException ioe) { } catch(MediaException me) { } ...
Bng 3: NGOI L (EXCEPTION) CA MMAPI Gi Ngoi l M t

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 12----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa
javax.microedition.media MediaException Dng bo mt li khng mong i trong cc phng thc x l a phng tin.

Bng 4: Nhng kiu ni dung (content type) c in thoi Samsung E730 h tr Kiu ni dung Gii thch audio/midi audio/x-smaf audio/x-wav audio/x-tone-seq audio/mpeg video/3gp

Tp tin nhc theo nh dng MIDI Tp tin nhc theo nh dng SMAF , l tp tin c phn m rng .mmf ca Samsung Tp tin nhc theo nh dng WAVE Chui tng nhc Tp tin nhc theo nh dng MP3 Tp tin video theo nh dng 3GP

Bng 5: Nhng giao thc (protocol) c in thoi Samsung E730 h tr Giao thc device http resource file

Gii thch Giao thc ly d liu t thit b Giao thc mng chun HTTP Giao thc ly d liu t ti nguyn h thng Giao thc ly d liu t tp tin

Bng 6: Gi tr cc thuc tnh ca in thoi Samsung E730 Gi tr trong Thuc tnh h thng Gii thch E730 microedition.media.version 1.1 H tr MMAPI 1.1 Khng h tr tng hp m thanh, supports.mixing false ngha l khng cng pht li 2 m thanh t 2 Player cng lc supports.audio.capture false Khng h tr thu m thanh supports.video.capture supports.recording audio.encodings video.encodings video.snapshot.encodings streamable.contents false false null null null null Khng h tr chp hnh Khng h tr thu li video Khng h tr thu m thanh Khng h tr chp hnh Khng h tr chp hnh Khng h tr pht li t d liu dng (streaming)

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 13----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa Pht li tp tin video mpeg. on m sau minh ho cch pht li mt tp tin video theo nh dng mpeg: Player p; VideoControl vc; try { p = Manager.createPlayer(http://www.javavietnam.org/somemovie.mpg); p.realize(); // nhn v iu khin video vc = (VideoControl) p.getControl(VideoControl); .... p.start(); } catch(IOException ioe) { } catch(MediaException me) { } ... Ly thng s h tr kiu ni dung v giao thc ca in thoi on m sau minh ho cch ly thng s v nhng h tr kiu ni dung (content type) v giao thc (protocol) c in thoi h tr: ... String[] contentTypesArray = Manager.getSupportedContentTypes(null); for (int i = 0; i < contentTypesArray.length; i++) { System.out.println(Content Type + contentTypesArray[i]); } String[] protocolsArray = Manager.getSupportedProtocols(null); for (int i = 0; i < protocolsArray.length; i++) { System.out.println(Protocol + protocolsArray[i]); } ... Ly cc thuc tnh h thng c nh ngha trong MMAPI on m sau minh ho cch ly cc thuc tnh h thng kim tra kh nng h tr x l a phng tin ca in thoi: ... SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 14----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa System.out.println(microedition.media.version= + System.getProperty(microedition.media.version)); System.out.println(supports.mixing= + System.getProperty(supports.mixing)); System.out.println(supports.audio.capture= + System.getProperty(supports.audio.capture)); System.out.println(supports.video.capture= + System.getProperty(supports.video.capture)); System.out.println(supports.recording= + System.getProperty(supports.recording)); System.out.println(audio.encodings= + System.getProperty(audio.encodings)); System.out.println(video.encodings= + System.getProperty(video.encodings)); System.out.println(video.snapshot.encodings= + System.getProperty(video.snapshot.encodings)); System.out.println(streamable.contents= + System.getProperty(streamable.contents)); ... Kt lun: Bi vit gii thiu mt ci nhn tng quan v th vin x l a phng tin MMAPI v nhng v d c th cch pht li cc tp tin m thanh v video. pht trin ng dng a phng tin cho model TD c th, bn cn nm r nhng c tnh k thut ca in thoi c lin quan n kh nng ny. (Bng 4, 5 v 6 l cc c tnh k thut lin quan ca in thoi Samsung E730, model TD c s dng chnh thc cho cuc thi Mobile Games 2005).
Bng 7: So snh MMAPI 1.0, MMAPI 1.1, MIDP 2.0 Media API v Th vin b sung cho a phng tin c t M t Mobile Media API (MMAPI) l mt gi th vin tu chn cho nn tng J2ME, th vin ny cung cp mt giao din lp trnh ng dng (API) chun pht li v thu cc nh dng a phng MMAPI 1.0 tin nh nhc hoc video. y l mt th vin chun vi s c (JSR 135) t l JSR 135, c thit k vi kh nng mm do c th m rng v khng ph thuc vo thit b cng nh nn tng. MMAPI khng ph thuc vo bt k nh dng lu tr, giao thc truyn d liu hoc nhng kh nng ca cc thit b phn cng. MMAPI 1.1 l bn chnh sa ca MMAPI 1.0 vi nhng thay i cho ph hp vi tnh nng bo mt c trong MIDP 2.0. Bn c t ny khng thay i bt k lp hoc phng thc no so vi MMAPI 1.0. Mt s phng thc trong MMAPI c th pht sinh MMAPI 1.1 ngoi l SecurityException nu nh nu nh chng trnh chy khng quyn thch hp. Mt trong s cc yu cu v bo mt bao gm tnh nng ghi li (recording) v truy cp mng. Nhng yu cu ny nhm bo m quyn ring t ca ngi dng. in thoi Samsung E730 h tr MMAPI 1.1.

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 15----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa
Th vin ny l mt tp con ca MMAPI c th chy c trn cc thit b cp thp c h tr MIDP 2.0, v vy n c mt s yu cu nh kh nng pht li nhc s dng rt t ti nguyn h thng, h tr vic pht li cc tng nhc n gin, iu chnh m lng m thanh pht ra,... Do nhng yu cu ny nn th vin a phng tin trong MIDP 2.0 thiu mt s tnh nng ca MMAPI nh: ch h tr pht li nhc m khng h tr video, khng h tr ng b ho vic pht li nhiu tp tin m thanh cng lc. Th vin ny h tr b sung nhng kh nng mi nht ca phn cng nh kh nng chp nh s v nghe i radio. Mt s tnh nng mi ca n bao gm kh nng iu khin sng, tng phn, n flash, ch sng, phng to hoc thu nh li ca my chp hnh trong in thoi. Ngoi ra cn c nhng tnh nng x l m thanh nng cao nh to cc hiu ng m thanh hay kh nng thay i ng xut chng hn nh ra loa hoc ra tai nghe.

MIDP 2.0 Media API (JSR 118)

Th vin b sung a phng tin (JSR 234)

III. Chng trnh:


Lp trnh trn nn NetBeans IDE 6.8. Cc class ca chng trnh: Logon : giao din ng nhp chng trnh screensaver: giao din lc pht bi ht startmusic : class x l pht bi ht adjustvolume : x l m lng MIDLET chnh: playaudio

Chng trnh nghe nhc trn s gm cc chc nng sau: - Pht bi tip theo. - Pht bi trc. - Tm dng bi ht. - Pht tip bi ht tm dng. - Mute (im lng). - Tu chnh m lng. III.1. Ni dung cc lp: III.1.1. Lp startmusic: package TD; import javax.microedition.lcdui.*; SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 16----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa import javax.microedition.media.*; import javax.microedition.media.control.*; import java.io.*; public class startmusic { private Class td; private playaudio plau; private Display ds; public Player pl; private int volumeset; public startmusic(playaudio plau){ this.plau=plau; } public void playfile(String songchoose){ try{ td=this.getClass();/*tr li tn lp ca i tng hin thi, tn lp ca i tng hin thi l startmusic nhng khai bo startmusic td l sai v td khng phi l i tng hin thi*/ InputStream in = td.getResourceAsStream("/"+songchoose);/*tm kim v a tn bi ht va tham tr vo*/ String format=getFormat(songchoose); plau.pl = Manager.createPlayer(in,format);/*to 1 bi ht vi cc iu kin va a vo*/ plau.pl.start();//BAT DAU BAI HAT plau.volume=(VolumeControl)plau.pl.getControl("VolumeControl"); /* Ly giao din iu khin m lng ca media cho volume iu khin update m lng khi user mun thay i */ volumeset=5*adjustvolume.ga.getValue(); //ly m lng hin thi plau.volume.setLevel(volumeset); //m lng mc nh l 50% screensaver.stit.setText(Integer.toString(volumeset)); this.pl=plau.pl; } catch (Exception e){ Alert al = new Alert("Error", e.getMessage(), null, AlertType.ERROR); al.setTimeout(Alert.FOREVER); ds.setCurrent(al,playaudio.list); } } private String getFormat(String songchoose) throws Exception { String format; if(songchoose.endsWith("wav")){ format = "audio/x-wav"; } else if(songchoose.endsWith("jts")){ format = "audio/x-tone-seq"; } SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 17----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa else if (songchoose.endsWith("mid")){ format = "audio/midi"; } else if(songchoose.endsWith("mp3")){ format = "audio/mpeg"; } else{ throw new Exception("Cannot guess content type from URL: " + songchoose); } return format; } } III.1.2. Lp logon: package TD; import javax.microedition.lcdui.*; class logon extends Canvas{ public Image logo; public ImageItem imit; protected void paint(Graphics g){ g.setColor(200,200,50); // thit lp mu ch try { logo = Image.createImage("/logo.png"); } catch (Exception ex) { logo = null; } g.drawImage(logo,120 ,0,Graphics.TOP | Graphics.HCENTER); g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE )); g.drawString("CHUYN 1", getWidth()/2, getHeight()/2-50, Graphics.TOP | Graphics.HCENTER); g.drawString("GVHD Trnh Cng Duy", getWidth()/2, (getHeight()/2)+15, Graphics.TOP | Graphics.HCENTER); } } III.1.3. Lp screensave : package TD; import javax.microedition.lcdui.*; import javax.microedition.media.MediaException; SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 18----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa import javax.microedition.media.PlayerListener; class screensaver implements CommandListener{ private Display ds; public static Form form; public String msg; //Tn bi ht trong va chn private Command volume,mute,back,pause,resume,songnext,songback; private playaudio plau; // cho user quay li mn hnh th nht khi mun public adjustvolume volu; ; // Thay i m lng dng Gauge private Image im; private ImageItem imit; public static StringItem stit; public boolean t=false; /* Dng kim tra trng thi tng thot ra giao din 1 ln no cha, nu cha th thm nt bm next vo giao din 2 v nt dng nu mun dng, cn tng thot tc l thc hin cng vic ri th khng lm li tn thi gian */ //KHOI TAO public screensaver(playaudio plau,Display ds){ this.plau=plau; this.ds=ds; form=new Form("PLAY MUSIC"); stit=new StringItem("VOLUME = ",""); back = new Command("BACK", Command.BACK, 1); mute = new Command("MUTE", Command.ITEM, 0); volume=new Command("VOLUME",Command.OK,0); pause=new Command("TM DNG",Command.STOP,1); resume=new Command("PHT TIP",Command.ITEM,1); songback=new Command("BI TRC",Command.ITEM,1); songnext=new Command("BI TIP",Command.ITEM,1); form.append(stit); form.addCommand(back); form.addCommand(mute); form.addCommand(volume); form.addCommand(pause); form.addCommand(songback); form.addCommand(songnext); form.setCommandListener(this); volu=new adjustvolume(plau,ds); } public void text(){ form.setTicker(new Ticker(msg)); try{ im = Image.createImage("/3.png"); im = Image.createImage(im,0,0,im.getWidth(),im.getHeight(),0); SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 19----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa imit = new ImageItem("PLAYING "+msg,im,ImageItem.LAYOUT_CENTER,""); } catch (java.io.IOException e){ System.err.println("Unable to locate or read .png file"); } form.insert(0,imit); } public void commandAction(Command c, Displayable s){ if(c==mute){ if(plau.volume.isMuted()) { plau.volume.setMute(false); } else plau.volume.setMute(true); } else if(c==back){ if(t==false){ playaudio.list.addCommand(plau.stop); playaudio.list.addCommand(plau.next); t=true; } ds.setCurrent(playaudio.list); } else if(c==volume){ // giao din thit lp m lng ds.setCurrent(adjustvolume.form); } else if(c==pause) { try { plau.pl.stop(); // tm dng } catch (MediaException ex) { ex.printStackTrace(); } form.removeCommand(pause); // xo nt tm dng form.addCommand(resume); // thm nt tip tc } else if(c==resume){ // pht tip try { plau.pl.start(); } catch (MediaException ex) { ex.printStackTrace(); } form.removeCommand(resume); form.addCommand(pause); } else if(c==songback) { // pht bi trc SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 20---:

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa if(plau.pl!=null){ plau.pl.close(); plau.pl=null; } form.delete(0); if(plau.i==0)plau.i=plau.n; else plau.i--; plau.play(); plau.pl=plau.stmu.pl;//TRA LAI BAI HAT HIEN THOI plau.pl.addPlayerListener((PlayerListener) plau); } else if(c==songnext) { // pht bi tip theo if(plau.pl!=null){ plau.pl.close(); plau.pl=null; } form.delete(0); if(plau.i==plau.n)plau.i=0; else plau.i++; plau.play(); plau.pl=plau.stmu.pl;//TRA LAI BAI HAT HIEN THOI plau.pl.addPlayerListener((PlayerListener) plau); } } } III.1.4. Lp adjustvolume: package TD; import javax.microedition.lcdui.*; public class adjustvolume implements ItemStateListener,CommandListener{ private Display ds; public static Form form; public static Gauge ga; private StringItem stit; private Command back; private playaudio plau; private int volumeset; public adjustvolume(playaudio plau,Display ds){ this.plau=plau; this.ds=ds; form=new Form("IU CHNH"); ga=new Gauge("M LNG:",true,20,10); // t mc nh l 50% stit=new StringItem("VOLUME = ",""); back=new Command("BACK",Command.BACK,0); SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 21----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa form.append(ga); stit.setText(Integer.toString(5*ga.getValue())); // t gi tr al ln tring item form.append(stit); form.setItemStateListener(this); form.addCommand(back); form.setCommandListener(this); } public void itemStateChanged(Item item){ /* h mi ln tng hoc gim th vo y ly gi tr hin thi ra t bin kiu VolumeControl */ volumeset=5*ga.getValue(); //ly gi tr hin thi sau khi s kin kch hot plau.volume.setLevel(volumeset);//t li m lng tc l tng hoc gim stit.setText(Integer.toString(volumeset)); screensaver.stit.setText(Integer.toString(volumeset)); } public void commandAction(Command c,Displayable s){ ds.setCurrent(screensaver.form); } } III.1.5. Lp midlet playaudio: package TD; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.media.*; import javax.microedition.media.control.*; import java.lang.Object.*; public class playaudio extends MIDlet implements CommandListener,PlayerListener{ public Display ds; private logon login; // to logo ng nhp public static List list; public String songchoose; private screensaver scsa; // hin th mn hnh khi pht nhc public Player pl; // Thuc tnh kiu interface Player x l v pht nhc public VolumeControl volume; //Dng ly m lng private Command exit; public Command play,stop,next; public startmusic stmu; /* Cc thao tc x l vi bi ht */ public int i,n; // ly v tr bi ht String string[]={"nhac_tinh.mid","ben_em_la_bien_rong.mid","testwav.wav","mong-uyen-uong-ho-diep.mid", "noi_buon_hoa_phuong.mid","nguoi_tinh_mua_dong.mid","nhung_neo_duong_ phu_sa.mid","mau_nhuom_ben_thuong_hai.mid", SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 22----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa "999_doa_hong.mid","bai_ca_ky_niem.mid","cau_chuyen_dau_nam.mid","ctrd msh.mid","rhymrain.mid", "chieu_ky_niem.mid","co_be_doi_hon_1.mid","co_mot_nguoi.mid","500miles. mid","sao_em_no_voi_lay_chong.mid", "co_ua.mid","con_mua_ha.mid","con_mua_phun.mid","chia_tay_tinh_dau.mid", "tan_vo.mid","chiec_la_mua_dong.mid", "bai_khong_ten.mid","bai_khong_ten_so_3.mid","beethoven.jts","chiec_la_cuoi _cung.mid","tien-ban-len-duong.mid", "dv2thon.mid","gia_tu_di_vang.mid","happynew.mid","hoa-cau-vuontrau.mid","hon_vong_phu_2.mid"}; public playaudio(){ ds = Display.getDisplay(this); login=new logon(); scsa=new screensaver(this,ds); stmu=new startmusic(this); play= new Command("PHT", Command.ITEM, 1); stop= new Command("DNG", Command.STOP, 1); next= new Command("NEXT", Command.ITEM, 1); exit= new Command("THOT", Command.EXIT, 0); list= new List("CHNG TRNH NGHE NHC", Choice.IMPLICIT,string,null); list.setTicker(new Ticker(" N CHUYN 1:V VN HUY_PHAN VN TUN_PHNG DUY THIN_LP 07T1_KHOA CNG NGH THNG TIN_TRNG I HC BCH KHOA NNG")); list.addCommand(play); list.addCommand(exit); list.setCommandListener(this); n=list.size()-1; } public void startApp(){ ds.setCurrent(login); try { Thread.sleep(3000); // thi gian hin th logo } catch (InterruptedException ex) { ex.printStackTrace(); } ds.setCurrent(list); } public void pauseApp(){ try { if(pl!=null) pl.stop(); } catch (MediaException ex) { ex.printStackTrace(); SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 23----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa } } public void destroyApp(boolean unconditionnal){ scsa=null; list.deleteAll(); ds.setCurrent(null); pl.close();//TAT NHAC } public void commandAction(Command c, Displayable s){ if (c == exit){ destroyApp(true); notifyDestroyed(); } else if(c==stop){ if(pl!=null){ pl.close(); pl=null; screensaver.form.delete(0); list.removeCommand(stop); list.removeCommand(next); scsa.t=false; } } else if(c==next){ ds.setCurrent(screensaver.form); } else if (((s == list) && (c == List.SELECT_COMMAND)) || (c == play)){ if(pl!=null){ pl.close(); pl=null; screensaver.form.delete(0); } i = list.getSelectedIndex(); play(); ds.setCurrent(screensaver.form); pl.addPlayerListener(this); } } public void playerUpdate(Player pl,String event,Object eventData){ if(event.equals(PlayerListener.END_OF_MEDIA)){ if(pl!=null){ pl.close(); pl=null; screensaver.form.delete(0); } SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 24----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa if(i==n)i=0; else i++; play(); pl=stmu.pl; //Tr li bi ht hin thi pl.addPlayerListener(this); } } public void play(){ songchoose = list.getString(i); scsa.msg = songchoose; scsa.text(); stmu.playfile(songchoose); } }

IV. Kt qu:
Giao din ng nhp chng trnh:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 25----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

Giao din list bi ht:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 26----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

Giao din pht bi ht:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 27----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

Giao din chnh m lng:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 28----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa

V. Kt lun:

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 29----

Gio vin hng dn: Th.S Trnh Cng Duy_Khoa CNTT_Trng H Bch Khoa Chng trnh n gin ch yu ch pht c cc bi ht c sn trong file .jar to, khng th add thm list bi ht t th nh in thoi. Tuy nhin tho 1 s yu cu ca chng trnh pht nhc l t ng chuyn bi ht tip theo khi ht bi, pht bi ht tip theo, pht bi trc, tm dng, chnh m lng

Chn thnh cm n ----------------THE END----------------

SVTH: V Vn Huy_Phan Vn Tun_Phng Duy Thin_Lp 07T1 ----Trang 30----

You might also like