import java.io.InputStream;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.midlet.MIDlet;
public class Exec extends MIDlet implements CommandListener {
Display display;
Form form = new Form("表单");
Gauge gauge;
Command start = new Command("开始", Command.OK, 1);
InputStream in = null;
Player p = null;
public Exec() {
display = Display.getDisplay(this);
}
public void startApp() {
try {
in = getClass().getResourceAsStream("/musics/music.wav");
p = Manager.createPlayer(in, "audio/x-wav");
} catch (Exception e) {
System.out.println(e.getMessage());
}
gauge = new Gauge("带有进度条的音乐播放MIDLET", false, 10, 0);
form.append(gauge);
form.addCommand(start);
form.setCommandListener(this);
display.setCurrent(form);
}
public void commandAction(Command c, Displayable s) {
try {
p.start();
gauge.setMaxValue((int) (p.getDuration() / 1000 / 1000));
Thread thread = new Thread(new GaugeUpdater());
thread.start();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
// 新增一个线程处理进度条,定义一个内部类
class GaugeUpdater implements Runnable {
GaugeUpdater() {
}
public void run() {
try {
while (gauge.getValue() < gauge.getMaxValue()) {
Thread.sleep(1000);
gauge.setValue(gauge.getValue() + 1);
}
gauge.setLabel("结束");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
[此贴子已经被作者于2010-12-12 18:33:04编辑过]