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

📄 mobilplayermidlet.java

📁 J2ME程序设计实例教程的源码
💻 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 + -