【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“Tone_Player_MIDlet.java”一文,供大家参考学习
package ch11;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;
public class Tone_Player_MIDlet
extends MIDlet
implements CommandListener, ItemStateListener {
//声明一个Display对象
private Display mDisplay;
//声明一个Form对象
private Form mMainForm;
//声明一个播放按钮Command对象
private Command mPlayCommand;
//声明一个控制音量进度条Gauge对象
private Gauge mGauge;
/*
1.构造器
*/
public Tone_Player_MIDlet() {
mMainForm = new Form("播放单音曲调");
mPlayCommand = new Command("播放", Command.SCREEN, 0);
mMainForm.addCommand(mPlayCommand);
mMainForm.addCommand(new Command("退出", Command.EXIT, 0));
mGauge = new Gauge("调节音量:", true, 10, 2);
mMainForm.append(mGauge);
mMainForm.setCommandListener(this);
mMainForm.setItemStateListener(this);
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mMainForm);
}
//启动应用程序
public void startApp() {
}
//挂起应用
程序 public void pauseApp() {
}
//撤销应用程序
public void destroyApp(boolean unconditional) {
}
/*
2.播放序列音
*/
private void tone(byte v) {
byte volume = v;
byte d = 8;
byte C4 = ToneControl.C4;
byte D4 = (byte) (C4 + 2);
byte E4 = (byte) (C4 + 4);
byte G4 = (byte) (C4 + 7);
byte rest = ToneControl.SILENCE;
byte[] mySequence = {
ToneControl.VERSION, 1,
ToneControl.TEMPO, 30,
ToneControl.RESOLUTION, 64,
ToneControl.SET_VOLUME, volume,
ToneControl.BLOCK_START, 0,
E4, d, D4, d, C4, d, E4, d,
E4, d, E4, d, E4, d, rest, d,
ToneControl.BLOCK_END, 0,
ToneControl.PLAY_BLOCK, 0,
D4, d, D4, d, D4, d, rest, d,
E4, d, G4, d, G4, d, rest, d,
ToneControl.PLAY_BLOCK, 0,
D4, d, D4, d, E4, d, D4, d, C4, d
};
try {
Player p = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
p.realize();
ToneControl tc = (ToneControl) p.getControl("ToneControl");
tc.setSequence(mySequence);
p.start();
}
catch (Throwable t) {
Alert a = new Alert("警告:", t.toString(),
null, AlertType.ERROR);
mDisplay.setCurrent(a, mMainForm);
}
}
/*
3.响应按钮事件
*/
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT) {
destroyApp(true);
notifyDestroyed();
}
else if (c == mPlayCommand) {
tone( (byte) 10);
}
}
/*
4.响应条目事件
*/
public void itemStateChanged(Item item) {
if (item == mGauge) {
tone( (byte) (mGauge.getValue() * 10));
}
}
}