package org.javavietnam.j2me.samsungdemo; import javax.microedition.lcdui.*;.[r]
(1)Phát tri n ng d ng J2ME s d ng tính m r ng c a n tho iể ứ ụ ử ụ ở ộ ủ ệ ạ Samsung
Tóm t t: Bài vi t trình bày cách l p trình s d ng tínhắ ế ậ ử ụ năng riêng c a n tho i Samsung đ xây d ng ngủ ệ ạ ể ự ứ d ng ch y n tho i này.ụ ạ ệ ạ
Đ c t MIDP đặ ả ược xây d ng đ phát tri n ng d ng cho n tho i di đ ng (ĐTDĐ) có th tự ể ể ứ ụ ệ ộ ể ương thích v i n tho i c a hãng s n xu t khác Tuy nhiên đ c t MIDP 1.0 m t s gi i h n, đaớ ệ ủ ả ấ ặ ả ộ ố
s hãng s n xu t ĐTDĐ đ u cung c p th vi n API b sung đ m r ng thêm kh c a ngố ả ấ ề ấ ệ ổ ể ộ ả ủ ứ
d ng ch y lo i n tho i Vì v y n u b n vi t ng d ng ĐTDĐ Samsung, b n nên t n d ngụ ạ ệ ậ ế ế ứ ụ ậ ụ
h t tính mà n tho i cung c p cho b n N u game c a b n có s d ng tính c a nế ệ ấ ế ủ ụ ủ ệ
tho i Samsung, game c a b n s h p d n h n b n s đạ ủ ẽ ấ ẫ ẽ ược thêm m cu c thi Mobile Gamesể ộ
2004 Tuy nhiên b n ý r ng m t b n s d ng tính riêng c a n tho i Samsung, ngạ ằ ộ ụ ủ ệ ứ
d ng c a b n s không ch y ĐTDĐ c a hãng khác.ụ ủ ẽ ủ
Các đ i n tho i Samsung thờ ệ ường cung c p th vi n API bao g m AudioClip đ ch i nh c, Vibration đấ ệ ể ể
t o đ rung cho n tho i, LCDLight đ b t t t hình n tho i cu i SMS giúp b n có th l pạ ộ ệ ể ậ ắ ệ ố ể ậ
trình g i tin nh n SMS.ử ắ
1 Ch i nh c v i AudioClipơ ạ ớ
Có l âm m t tính khơng th thi u đẽ ộ ể ế ược c a game, không ch game máy đ bànủ ỉ ể
mà c cho game ch y ĐTDĐ Samsung cung c p cho b n l p com.samsung.util.AudioClip đả ấ ể
b n có th l p trình âm cho ng d ng MIDP Hi n n tho i Samsung ch h tr ki u đ nhạ ể ậ ứ ụ ệ ệ ỉ ỗ ợ ể ị
d ng mmf (TYPE_MMF = 1) Đ t o đ i tạ ể ố ượng AudioClip, b n dùng constructor sau:ạ
public AudioClip(int type, java.lang.String filename) throws java.io.IOException
trong type ln ln b ng (ki u đ nh d ng mmf) filename tên t p tin mmf Đ t o t p tin mmf tằ ể ị ậ ể ậ
t p tin midi, b n dùng chậ ương trình PsmPlayer có CD c a BTC (bài hủ ướng d n s d ng PsmPlayerẫ ụ
được đăng kèm theo s báo này) Đ ki m tra n tho i Samsung c a b n có h tr âm hayố ể ể ệ ủ ỗ ợ
(2)là play() đ ch i nh c, stop() đ d ng ch i, pause() giúp b n t m d ng resume() cho phép b n ch i ti pể ể ạ ế
đo n nh c đạ ượ ạc t m d ng trừ ước B n ý m i th i m ch có t i đa m t đ i tạ ỗ ể ỉ ố ộ ố ượng AudioClip ch i nh c đ i tơ ố ượng g i play() sau Đo n chọ ương trình sau minh ho cáchạ
dùng AudioClip đ ch i file âm mmf, minh ho cách xây d ng giao di n đ b o đ mể ự ệ ể ả ả
tính logic, ví d nh ch cho phép g i play() stop, ho c cho phép resume() ch sau b n g iụ ỉ ọ ặ ỉ ọ
(3)(4)import com.samsung.util.AudioClip; /**
* Demo AudioClip * @author Minh Nguyen */
public class AudioDemoForm extends List implements CommandListener { private Command cmdBack = new Command("Back", Command.BACK, 1); private Command cmdStart = new Command("Start", Command.SCREEN, 1); private Command cmdStop = new Command("Stop", Command.SCREEN, 1); private Command cmdPause = new Command("Pause", Command.SCREEN, 1); private Command cmdResume = new Command("Resume", Command.SCREEN, 1); private AudioClip audioClip = null;
public AudioDemoForm() {
super("Audio Demo", List.IMPLICIT); append("Joy", null);
append("One Stop", null); append("Nguoi ta noi", null); setCommandListener(this); addCommand(cmdBack); addCommand(cmdStart); }
public void commandAction(Command command, Displayable displayable) { if (command == cmdBack) {
stopAudioClip();
Display.getDisplay(SamsungDemoMIDlet.instance).setCurrent(new MainForm()); } else if (command == cmdStart) {
int currentIndex = getSelectedIndex(); String currentString = getString(currentIndex); String filename = null;
if (currentString.equals("Joy")) { filename = "/joy.mmf";
} else if (currentString.equals("Nguoi ta noi")) { filename = "/nguoitanoi.mmf";
(5)filename = "/onestop.mmf"; }
playAudioClip(filename);
} else if (command == cmdStop) { stopAudioClip();
} else if (command == cmdPause) { pauseAudioClip();
} else if (command == cmdResume) { resumeAudioClip();
} }
public void playAudioClip(String filename) { stopAudioClip();
try {
audioClip = new AudioClip(1, filename);
audioClip.play(10, 5);// loop 10 times with maximum volume (5) addCommand(cmdStop);
addCommand(cmdPause); removeCommand(cmdResume); } catch (Exception e) {
e.printStackTrace(); }
}
public void stopAudioClip() { if (audioClip != null) { try {
audioClip.stop(); audioClip = null;
removeCommand(cmdStop); removeCommand(cmdPause); removeCommand(cmdResume); } catch (Exception e) {
e.printStackTrace(); }
} }
public void pauseAudioClip() { if (audioClip != null) {
(6)ki u com.samsung.util.SM v i constructor sau:ể
public SM(java.lang.String dest, java.lang.String callback, java.lang.String textMessage)
trong dest đ a ch đ n, callback đ a ch callback textMessage n i dung tin nh n Sau có đ iị ỉ ế ị ỉ ộ ắ ố
tượng SM, b n dùng phạ ương th c tĩnh SMS.send(SM sm) đ g i tin nh n B n tham kh o đo n ể ắ ả ương trình sau minh ho vi c g i tin nh n v i n tho i Samsungạ ệ ắ ệ
package org.javavietnam.j2me.samsungdemo; import javax.microedition.lcdui.*;
import com.samsung.util.SM; import com.samsung.util.SMS; /**
* Demo SMS
* @author Minh Nguyen */
public class SMSForm extends Form implements CommandListener { private Command cmdBack = new Command("Back", Command.BACK, 1); private Command cmdSend = new Command("Send", Command.SCREEN, 1); TextField textFieldDest;
TextField textFieldCallback; TextField textFieldMsg; public SMSForm() { super("SMS Demo");
textFieldDest = new TextField("Destination", "", 15, TextField.ANY); textFieldCallback = new TextField("Call back", "", 15, TextField.ANY); textFieldMsg = new TextField("Message", "", 128, TextField.ANY); this.append(textFieldDest);
(7)}
public void commandAction(Command command, Displayable displayable) { if (command == cmdBack) {
Display.getDisplay(SamsungDemoMIDlet.instance).setCurrent(new MainForm()); } else if (command == cmdSend) {
String dest = textFieldDest.getString(); String callback = textFieldCallback.getString(); String message = textFieldMsg.getString(); SM sm = new SM(dest, callback, message); SMS.send(sm);
} } }
5 K t lu nế ậ
Bài vi t trình bày cách l p trình s d ng tính riêng bi t c a n tho i Samsung V i nh ngế ậ ụ ệ ủ ệ ữ
k thu t này, game c a b n s h p d n h n s đỹ ậ ủ ẽ ấ ẫ ẽ ược ch m m cao h n cu c thi Mobile Gamesấ ể ộ
2004
Mã ngu n tồn b chồ ộ ương trình opensource v i gi p phép công c ng GPL đ t t i CVS c aớ ấ ộ ặ ủ
JavaVietnam t i http://sf.net/projects/javavietnam b n có th download t iạ ể
http://www.javavietnam.org/javavn/tutorial/j2me/SamsungDemo.zip Ngồi n u b n có n tho i Samsung, b n có th t i v ch y th t iế ệ ạ ể ả ề
i http://www.javavietnam.org/javavn/tutorial/j2me/SamsungDemo.zip http://www.javavietnam.org/javavn/wap/game.wml