PlaySong.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class PlaySong
extends MIDlet{
private Display display;
private SongCanvas canvas;
public PlaySong() {
display = Display.getDisplay(this);
}
public void startApp() {
canvas = new SongCanvas(this, display);
display.setCurrent(canvas);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {
}
public void exitMIDlet() {
destroyApp(false);
notifyDestroyed();
}
}
SongCanvas.java
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
class SongCanvas extends Canvas implements CommandListener, PlayerListener {
private Command cmExit;
private PlaySong midlet;
private Display display;
private static Player player;
private VolumeControl vc;
byte quarterNote = 16;
byte halfNote = 32;
byte startingNote = (byte) ToneControl.C4;
byte G = (byte) (startingNote - 5);
byte A = (byte) (startingNote - 3);
byte B = (byte) (startingNote - 1);
byte C1 = (byte) (startingNote);
byte D1 = (byte) (startingNote + 2);
byte E1 = (byte) (startingNote + 4);
byte F1 = (byte) (startingNote + 5);
byte G1 = (byte) (startingNote + 7);
byte A1 = (byte) (startingNote + 9);
byte B1 = (byte) (startingNote + 10);
byte C2 = (byte) (startingNote + 11);
byte D2 = (byte) (startingNote + 13);
byte E2 = (byte) (startingNote + 15);
byte F2 = (byte) (startingNote + 16);
public SongCanvas(PlaySong midlet, Display display){
this.midlet = midlet;
this.display = display;
cmExit = new Command("Keluar", Command.EXIT, 1);
addCommand(cmExit);
setCommandListener(this);
playSong();
}
protected void paint(Graphics g){
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0);
g.drawString("Memainkan lagu", getWidth()/2, getHeight()/2, Graphics.TOP
| Graphics.HCENTER);
}
public void commandAction(Command c, Displayable d){
if (c == cmExit)
midlet.exitMIDlet();
}
private void playSong(){
byte[] sequence = new byte[] {
ToneControl.VERSION, 1,
ToneControl.TEMPO, 30,
ToneControl.BLOCK_START, 0,
G, quarterNote,
G, quarterNote,
D1, quarterNote,
D1, quarterNote,
E1, quarterNote,
E1, quarterNote,
D1, halfNote,
ToneControl.BLOCK_END, 0,
ToneControl.BLOCK_START, 1,
C1, quarterNote,
C1, quarterNote,
B, quarterNote,
B, quarterNote,
A, quarterNote,
A, quarterNote,
G, halfNote,
ToneControl.BLOCK_END, 1,
ToneControl.BLOCK_START, 2,
D1, quarterNote,
D1, quarterNote,
C1, quarterNote,
C1, quarterNote,
B, quarterNote,
B, quarterNote,
A, halfNote,
ToneControl.BLOCK_END, 2,
ToneControl.PLAY_BLOCK, 0,
ToneControl.PLAY_BLOCK, 1,
ToneControl.PLAY_BLOCK, 2,
ToneControl.PLAY_BLOCK, 2,
ToneControl.PLAY_BLOCK, 0,
ToneControl.PLAY_BLOCK, 1
};
try {
player = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
player.realize();
ToneControl tc = (ToneControl)player.getControl("ToneControl");
tc.setSequence(sequence);
player.start();
}catch (Exception e){
Alert alr = new Alert("Error", "Lagu tidak dapat dimainkan", null, AlertType.ERROR);
alr.setTimeout(Alert.FOREVER);
display.setCurrent(alr, this);
}
}
public void playerUpdate(Player player, String event, Object eventData) {
if(event.equals(PlayerListener.STARTED) &&
new Long(0L).equals((Long)eventData)) {
} else if(event.equals(PlayerListener.CLOSED)) {
}
}
}
Tidak ada komentar:
Posting Komentar