📄 medialist.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
public class MediaList extends List implements CommandListener,PlayerListener{
private final AudioSample midlet;
private final String mp3File;//wavFile;
private final String midiFile;
private final String amrFile;
private final Command playCommand;
private final Command stopCommand;
private final Command exitCommand;
private Player player;
private boolean playing = false;
MediaList(AudioSample midlet,String amrFile,String mp3File,String midiFile){
super("Media Sampler",IMPLICIT);
this.midlet = midlet;
this.amrFile = amrFile;
this.mp3File = mp3File;
this.midiFile = midiFile;
append("PlayTone",null);
append("ToneControl",null);
append("AMR",null);
append("MP3",null);//WAV
append("MIDI",null);
playCommand = new Command("Play",Command.ITEM,2);
stopCommand = new Command("Stop",Command.ITEM,2);
exitCommand = new Command("Exit",Command.EXIT,1);
addCommand(playCommand);
addCommand(stopCommand);
addCommand(exitCommand);
setCommandListener(this);
}
public void commandAction(Command cmd,Displayable disp){
if((cmd == playCommand)||(cmd == List.SELECT_COMMAND)&&!playing){
int index = getSelectedIndex();
if(index != -1){
String selected = getString(index);
if(selected.equals("PlayTone")){
playTone();
}else if(selected.equals("ToneControl")){
playToneControl();
}else if(selected.equals("AMR")){
play(amrFile,"audio/AMR");
}else if(selected.equals("MP3")){
play(mp3File,"audio/mpeg");
}else if(selected.equals("MIDI")){
play(midiFile,"audio/midi");
}
}
}else if((cmd == stopCommand)||(cmd == List.SELECT_COMMAND)&&playing){
stop();
}else if(cmd == exitCommand){
midlet.listExit();
}
}
void stop(){
if(player != null){
player.close();
}
}
private void playTone(){
try{
Manager.playTone(ToneControl.C4, 500, 100);
}catch(MediaException me){
midlet.alertError("MediaException:"+me.getMessage());
}
}
private void playToneControl(){
byte[] sequence = {
ToneControl.VERSION,1,
ToneControl.TEMPO,30,
ToneControl.C4,16,
ToneControl.C4+2,16,
ToneControl.C4+4,16,
ToneControl.C4+5,16,
ToneControl.C4+7,16,
ToneControl.C4+9,16,
ToneControl.C4+11,16,
ToneControl.C4+9,8,
ToneControl.C4+7,8,
ToneControl.C4+5,8,
ToneControl.C4+4,8,
ToneControl.C4+2,8,
};
try{
player = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
player.addPlayerListener(this);
player.realize();
ToneControl to = (ToneControl)(player.getControl("ToneControl"));
to.setSequence(sequence);
player.start();
playingStarted();
}catch(IOException ioe){
discardPlayer();
midlet.alertError("IOException:"+ioe.getMessage());
}catch(MediaException me){
discardPlayer();
midlet.alertError("MediaException:"+me.getMessage());
}catch(SecurityException se){
discardPlayer();
midlet.alertError("SecurityException:"+se.getMessage());
}
}
private void discardPlayer(){
if(player != null){
player.close();
player = null;
}
}
private void play(String file,String type){
if(file == null){
midlet.alertError("No file specified for type"+type);
}else{
try{
InputStream is = getClass().getResourceAsStream(file);
player = Manager.createPlayer(is , type);
player.addPlayerListener(this);
player.realize();
player.start();
playingStarted();
}catch(IOException ioe){
discardPlayer();
midlet.alertError("IoeException:"+ioe.getMessage());
}catch(MediaException me){
discardPlayer();
midlet.alertError("MediaException:"+me.getMessage());
}catch(SecurityException se){
discardPlayer();
midlet.alertError("SecurityException:"+se.getMessage());
}
}
}
public void playerUpdate(final Player p,final String event,final Object eventData){
Display display = midlet.getDisplay();
display.callSerially(new Runnable(){
public void run(){
MediaList.this.updateEvent(p, event, eventData);
}
});
}
private void updateEvent(Player p, String event,Object eventable){
if(event == END_OF_MEDIA){
p.close();
}else if(event == CLOSED){
player = null;
playingStopped();
}
}
private void playingStarted(){
removeCommand(playCommand);
addCommand(stopCommand);
playing = true;
}
private void playingStopped(){
removeCommand(stopCommand);
addCommand(playCommand);
playing = false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -