Tải bản đầy đủ (.pdf) (13 trang)

Phát triển ứng dụng j2me sử dụng các tính năng mới

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (864.42 KB, 13 trang )

Phát triển ứng dụng J2ME sử dụng các tính năng mở rộng của điện thoại
Samsung
Tóm tắt: Bài viết này trình bày cách lập trình sử dụng các tính
năng riêng của các điện thoại Samsung để xây dựng các ứng
dụng chạy trên các điện thoại này.

Đặc tả MIDP được xây dựng để phát triển các ứng dụng cho điện thoại di động (ĐTDĐ) có thể tương thích
với các điện thoại của các hãng sản xuất khác nhau. Tuy nhiên do đặc tả MIDP 1.0 còn một số giới hạn, đa
số các hãng sản xuất ĐTDĐ đều cung cấp các thư viện API bổ sung để mở rộng thêm khả năng của các
ứng dụng chạy trên các lo
ại điện thoại này. Vì vậy nếu bạn viết ứng dụng trên ĐTDĐ Samsung, bạn nên tận
dụng hết các tính năng mà điện thoại cung cấp cho bạn. Nếu game của bạn có sử dụng các tính năng của
điện thoại Samsung, game của bạn sẽ hấp dẫn hơn và bạn sẽ được thêm điểm trong cuộc thi Mobile
Games 2004. Tuy nhiên bạn cũng chú ý rằng một khi bạn sử
dụng các tính năng riêng của điện thoại
Samsung, ứng dụng của bạn sẽ không chạy trên ĐTDĐ của các hãng khác.

Các đời điện thoại Samsung thường cung cấp các thư viện API bao gồm AudioClip để chơi nhạc, Vibration
để tạo độ rung cho điện thoại, LCDLight để bật tắt màn hình điện thoại và cuối cùng là SMS giúp bạn có thể
lập trình gửi các tin nhắn SMS.

1. Chơi nhạc vớ
i AudioClip
Có lẽ âm thanh là một tính năng không thể thiếu được của các game, không chỉ các game trên máy để bàn
mà còn cả cho các game chạy trên ĐTDĐ. Samsung cung cấp cho bạn lớp com.samsung.util.AudioClip để
bạn có thể lập trình âm thanh cho các ứng dụng MIDP. Hiện nay điệ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 luôn luôn bằng 1 (kiểu định dạng .mmf) và filename là tên tập tin .mmf. Để tạo tập tin mmf t

tập tin .midi, bạn hãy dùng chương trình PsmPlayer có trong CD của BTC (bài hướng dẫn sử dụng
PsmPlayer được đăng kèm theo trong số báo này). Để kiểm tra điện thoại Samsung của bạn có hỗ trợ âm
thanh hay không, bạn dùng phương thức tĩnh (static) AudioClip.isSupported(). AudioClip hỗ trợ 4 phương
thức điều kiển là play() để chơi nhạc, stop() để dừng chơi, pause() giúp bạn tạm dừng và resume() cho
phép bạn chơi tiếp đoạn nhạc đã được tạm dừng trước đó. Bạn chú ý là trong mỗi thời điểm chỉ có tối đa
một đối tượng AudioClip chơi nhạc và đó là đối tượng được gọi play() sau cùng. Đoạn chương trình sau
đây minh hoạ cách dùng AudioClip để ch
ơi 3 file âm thanh .mmf, trong đó cũng 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() khi đang stop, hoặc cho phép resume()
chỉ sau khi bạn đã gọi pause() trước đó. Các bạn xem thêm hình minh hoạ khi chạy trong emulator cho
X100:


package org.javavietnam.j2me.samsungdemo;

import javax.microedition.lcdui.*;

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";

} else if (currentString.equals("One Stop")) {
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) {
try {
audioClip.pause();

×