📄 mobilplayermidlet.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.media.*;
/**
* 该类是应用程序的主类
*/
public class MobilPlayerMIDlet extends MIDlet implements CommandListener, VedioFileDialogListener, PlayerListener {
//
private Display display;
private List menu; //菜单
private Command cmdSelect = new Command("选择", Command.ITEM, 1);
private Command cmdPlay = new Command("播放", Command.SCREEN, 1);
private Command cmdBack = new Command("返回", Command.BACK, 2);
private Command cmdStop = new Command("暂停", Command.SCREEN, 3);
private VedioFileDialog vfDialog; //视频文件选择对话框
private VedioPlayer vPlayer; //视频播放器
private VedioCanvas vCanvas; //视频播放界面
public MobilPlayerMIDlet() {
display = Display.getDisplay(this);
menu = new List("MPEG媒体播放器", Choice.IMPLICIT);
menu.append("打开视频文件", null);
menu.append("退出", null);
menu.setCommandListener(this);
vfDialog = new VedioFileDialog(this);
vfDialog.setVedioFileDialogListener(this);
vCanvas = new VedioCanvas(this);
vPlayer = new VedioPlayer(this, vCanvas);
}
public void startApp() {
menu.setSelectCommand(cmdSelect);
display.setCurrent(menu);
}
public void pauseApp() {
releaseResources(); //释放资源
}
public void destroyApp(boolean forced) {
releaseResources(); //释放资源
}
//显示警告信息
public void showAlert(String msg) {
Alert alert = new Alert("错误!", msg, null, AlertType.ERROR);
alert.setTimeout(2000);
display.setCurrent(alert);
}
//处理用户命令
public void commandAction(Command cmd, Displayable d) {
if(cmd == cmdSelect) {
int index = menu.getSelectedIndex();
switch(index) {
case 0: { //显示对话框
vfDialog.show();
break;
}
case 1: { //退出
destroyApp(true);
notifyDestroyed();
break;
}
}
}
else if(cmd == cmdPlay) {
try {
vPlayer.startPlayer();
}
catch(MediaException me) {
showAlert("播放错误!\n" + me);
}
}
else if(cmd == cmdStop) {
try {
vPlayer.stopPlayer();
}
catch(MediaException me) {
showAlert("停止播放错误!\n" + me);
}
}
else if(cmd == cmdBack) {
releaseResources();
display.setCurrent(menu);
}
}
//处理对话框动作
public void handle(VedioFileDialog dialog, int action) {
if(action == VedioFileDialog.OPEN) {
createAndShowGauge(); //创建并显示进度条
//初始化视频资源
vPlayer.initVedioResource(dialog.getFile());
}
else if(action == VedioFileDialog.CANCEL) {
display.setCurrent(menu);
}
}
//播放器的监视器回调方法
public void playerUpdate(Player p, String event, Object eventData) {
//System.out.println("OOKK-----event = " + event);
if (event == PlayerListener.STARTED) {
vCanvas.removeCommand(cmdPlay);
vCanvas.removeCommand(cmdBack);
vCanvas.addCommand(cmdStop);
vCanvas.setTicker(new Ticker("正在播放\"" + vfDialog.getFileName() + "\""));
display.setCurrent(vCanvas);
}
else if (event == PlayerListener.STOPPED){
vCanvas.removeCommand(cmdStop);
vCanvas.addCommand(cmdPlay);
vCanvas.addCommand(cmdBack);
vCanvas.setTicker(new Ticker("暂停播放\"" + vfDialog.getFileName() + "\"!"));
}
}
//释放资源
public void releaseResources(){
try {
if(vPlayer != null){
vPlayer.stopPlayer();
vPlayer.closePlayer();
}
}
catch(MediaException me) {
//
}
}
//创建并显示进度条
private void createAndShowGauge() {
Form form = new Form("播放视频");
Gauge gauge = new Gauge("正在初始化,请等待......", false,
Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);
form.append(gauge);
display.setCurrent(form);
}
//改变音量,indicate的值为1表示增大音量,indicate的值为-1表示减小音量
public void changeVolume(int indicate) {
if(indicate == 0) return;
vPlayer.changeVolume(indicate*5);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -