📄 videocanvas.java
字号:
package ch11;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
public class VideoCanvas
extends Canvas
implements CommandListener, PlayerListener, Runnable {
//声明一个VideoPlayer_MIDlet对象
private VideoPlayer_MIDlet parent;
//声明一个Display对象
private Display display;
//声明一个播放器对象
private Player player;
//声明一个VideoControl接口
private VideoControl videoControl;
//声明视频文件的地址
private String url;
//声明一个控制线程
private Thread initializer;
//声明一个关闭按钮Command对象
private Command close;
//声明一个重放按钮Command对象
private Command rePlay;
/*
4.构造器
*/
public VideoCanvas(VideoPlayer_MIDlet parent) {
super();
this.parent = parent;
display = Display.getDisplay(parent);
close = new Command("关闭", Command.SCREEN, 1);
addCommand(close);
setCommandListener(this);
}
/*
5.初始化
*/
public void initializeVideo(String url) {
this.url = url;
initializer = new Thread(this);
initializer.start();
}
/*
6.线程实体
*/
public void run() {
try {
player = Manager.createPlayer(url);
parent.updateGauge();
player.addPlayerListener(this);
player.realize();
parent.updateGauge();
player.prefetch();
parent.updateGauge();
}
catch (IOException ioe) {
Alert alert = new Alert("传输错误", ioe.getMessage(), null, AlertType.ERROR);
display.setCurrent(alert);
}
catch (MediaException me) {
Alert alert = new Alert("媒体错误", me.getMessage(), null, AlertType.ERROR);
display.setCurrent(alert);
}
playVideo();
}
/*
7.播放实现
*/
public void playVideo() {
try {
videoControl = (VideoControl) player.getControl("VideoControl");
if (videoControl != null) {
videoControl.initDisplayMode(videoControl.USE_DIRECT_VIDEO, this);
}
parent.updateGauge();
int cHeight = this.getHeight();
int cWidth = this.getWidth();
videoControl.setDisplaySize(cWidth, cHeight);
display.setCurrent(this);
videoControl.setVisible(true);
player.start();
}
catch (MediaException me) {
Alert alert = new Alert("媒体错误", me.getMessage(), null, AlertType.ERROR);
display.setCurrent(alert);
}
}
/*
8.绘制背景
*/
public void paint(Graphics g) {
g.setColor(128, 128, 128);
g.fillRect(0, 0, getWidth(), getHeight());
}
/*
9.响音媒体事件
*/
public void playerUpdate(Player p, String event, Object eventData) {
if (event == PlayerListener.END_OF_MEDIA) {
if (rePlay == null) {
rePlay = new Command("重新播放", Command.SCREEN, 1);
addCommand(rePlay);
}
}
}
/*
10.响应按钮事件
*/
public void commandAction(Command c, Displayable s) {
if (c == rePlay) {
try {
player.start();
}
catch (MediaException me) {
Alert alert = new Alert("媒体错误", me.getMessage(), null, AlertType.ERROR);
display.setCurrent(alert);
}
}
else if (c == close) {
player.close();
parent.form.delete(1);
display.setCurrent(parent.form);
url = null;
parent = null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -