📄 vedioplayer.java
字号:
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.media.protocol.*;
import javax.microedition.io.file.*;
import javax.microedition.io.*;
import java.io.*;
/**
* 该类用于获取视频的播放内容,并且播放视频。
*/
public class VedioPlayer implements Runnable {
private static final String MPEG_TYPE = "video/mpeg";
private MobilPlayerMIDlet midlet;
private VedioCanvas canvas;
private Player player;
private VolumeControl volumeControl;
private String vedioFile;
public VedioPlayer(MobilPlayerMIDlet midlet, VedioCanvas canvas) {
this.midlet = midlet;
this.canvas = canvas;
}
//初始化视频资源
public void initVedioResource(String file) {
vedioFile = file;
Thread t = new Thread(this);
t.start();
}
//
public void run() {
try {
FileConnection fc = (FileConnection)Connector.open("file://" + vedioFile);
InputStream is = fc.openInputStream();
//创建播放器
player = Manager.createPlayer(is, MPEG_TYPE);
player.addPlayerListener(midlet);
//传输数据
player.realize();
//获取播放视频的资源
player.prefetch();
//获取视频控制器
VideoControl videoControl = (VideoControl)player.getControl("VideoControl");
if(videoControl == null) {
midlet.showAlert("视频播放错误!");
}
else {
//获取声音控制器
volumeControl = (VolumeControl)player.getControl("VolumeControl");
System.out.println("volumeControl = " + volumeControl.getLevel());
//初始化视频显示模式
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
int x = (canvas.getWidth() - videoControl.getDisplayWidth())/2;
int y = (canvas.getHeight() - videoControl.getDisplayHeight())/2;
videoControl.setDisplayLocation(x, y); //显示位置
videoControl.setVisible(true); //显示视频
startPlayer(); //开始播放
}
}
catch(IOException ioe) {
midlet.showAlert("不能连接到文件\""+vedioFile+"\"!\n" + ioe);
closePlayer();
}
catch(MediaException me) {
midlet.showAlert("不能创建播放器!\n" + me);
closePlayer();
}
}
public void startPlayer() throws MediaException {
if(player != null) {
player.start();
}
}
public void stopPlayer() throws MediaException {
if(player != null) {
player.stop();
}
}
public void closePlayer() {
if(player != null) {
player.close();
}
player = null;
volumeControl = null;
}
//改变音量,整数表示增大音量,负数表示减小音量
public void changeVolume(int value) {
if(volumeControl != null) {
int val = volumeControl.getLevel() + value;
if(val < 0) {
volumeControl.setLevel(0);
}
else if(val > 80) {
//在模拟器中测试时,音量超过85就会抛出异常
volumeControl.setLevel(80);
}
else {
volumeControl.setLevel(val);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -