⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 medialist.java

📁 平台:jdk1.5+eclipse3.3+s60
💻 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 + -