日期:2014-05-20 浏览次数:21029 次
package com.mopietek;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MediaPlayerApp extends MIDlet{
public Display display;
public static MediaPlayerApp midlet;
public VideoCanvas videoCanvas;
public MediaPlayerApp(){
midlet = this;
display = Display.getDisplay(this);
videoCanvas = new VideoCanvas(display);
videoCanvas.open("/up1.mpg");
display.setCurrent(videoCanvas);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
package com.mopietek;
import java.io.InputStream;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.FramePositioningControl;
import javax.microedition.media.control.RateControl;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.VolumeControl;
public class VideoCanvas extends Canvas implements Runnable,CommandListener,PlayerListener{
private Display videodisplay;
private int screenWidth;
private int screenHeight;
public static Command exitCommand = new Command("退出",Command.EXIT,1);
public static Command playCommand = new Command("播放",Command.OK,1);
public static Command pauseCommand = new Command("暂停",Command.ITEM,10);
private VolumeControl vc;
private Player player;
private VideoControl vidc;
private RateControl rc;
private FramePositioningControl fpc;
public VideoCanvas(){
}
public VideoCanvas(Display display){
this.videodisplay = display;
screenWidth = this.getWidth();
screenHeight = this.getHeight();
initialize();
}
//添加命令
public void initialize(){
addCommand(exitCommand);
addCommand(playCommand);
addCommand(pauseCommand);
setCommandListener(this);
}
protected void paint(Graphics g) {
//可以编写视频的外框,进度条等
}
public void open(String url){
try{
if(player == null){
InputStream is = getClass().getResourceAsStream(url);
player = Manager.createPlayer(is,"video/mpeg");
//可以添加player的监听,实现视频的暂停、快放、快退等功能
player.addPlayerListener(this);
}
player.realize(); //player的“以实现”状态
if((vidc = (VideoControl) player.getControl("VideoControl")) != null){
vidc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this);
vidc.setDisplayFullScreen(true);
vidc.setVisible(true);
}
Control [] controls = player.getControls();
for(int i=0; i<controls.length;i++){
if(controls[i] instanceof VolumeControl)
vc = (VolumeControl) controls[i];
if(controls[i] instanceof RateControl)
rc = (RateControl) controls[i];
if(controls[i] instanceof FramePositioningControl)
fpc = (FramePositioningControl) controls[i];
}
player.prefetch(); //"预抓取"状态
if(vidc == null) addCommand(pauseCommand);
if(player == null){
return;
}else{
player.start(); //开始播放视频
}
}catch(Exception e){System.err.println(e.toString());}
}
public void run() {
// TODO Auto-generated method stub
}
public void commandAction(Command c, Displayable d) {
// TODO Auto-generated method stub
}
public void playerUpdate(Player arg0, String arg1, Object arg2) {
// TODO Auto-generated method stub
}
}