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

📄 videotest.java

📁 手机多媒体播放系统
💻 JAVA
字号:
/* * * Copyright (c) 2007, Sun Microsystems, Inc. * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *  * Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. *  * Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package example.mmademo;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.util.Vector;/** * An example MIDlet to demo MMAPI video features * */public class VideoTest extends MIDlet implements CommandListener, Runnable {    private static VideoCanvas videoCanvas = null;    private static VideoPlayer videoPlayer = null;    private static Vector  videoClips;    private Command exitCommand = new Command("Exit", Command.EXIT, 1);    private Command playCommand = new Command("Play", Command.ITEM, 1);    //private Command helpCommand = new Command("Help", Command.HELP, 1);    //private Alert helpScreen  = null;    private Display display;    private static List theList;    private static VideoTest instance = null;    private static Vector urls;    static public VideoTest getInstance() {        return instance;    }    static public List getList() {        return theList;    }    public VideoTest() {        instance = this;        display  = Display.getDisplay(this);        theList  = new List("MMAPI Video Player", Choice.IMPLICIT);        fillList();        theList.addCommand(playCommand);        theList.addCommand(exitCommand);        theList.setCommandListener(this);        display.setCurrent(theList);    }    private void fillList() {        videoClips = new Vector();        urls = new Vector();        for (int n = 1; n < 100; n++) {            String nthURL = "VideoTest-URL"+ n;            String url = getAppProperty(nthURL);            if (url == null || url.length() == 0) {                break;            }	    if (!SimplePlayer.isSupported(url))		continue;            String nthTitle = "VideoTest-" + n;            String title = getAppProperty(nthTitle);            if (title == null || title.length() == 0) {                title = url;            }            videoClips.addElement(title);            urls.addElement(url);            theList.append(title, null);        }    }    /**     * Called when this MIDlet is started for the first time,     * or when it returns from paused mode.     * If there is currently a Form or Canvas displaying     * video, call its startApp() method.     */    public void startApp() {            if (videoPlayer != null)                videoPlayer.startApp();            if (videoCanvas != null)                videoCanvas.startApp();    }    /**     * Called when this MIDlet is paused.     * If there is currently a Form or Canvas displaying     * video, call its startApp() method.     */    public void pauseApp() {            if (videoPlayer != null)                videoPlayer.pauseApp();            if (videoCanvas != null)                videoCanvas.pauseApp();    }    /**     * Destroy must cleanup everything not handled     * by the garbage collector.     */    public synchronized void destroyApp(boolean unconditional) {            if (videoPlayer != null)                videoPlayer.close();            if (videoCanvas != null)                videoCanvas.close();            nullPlayer();    }    public synchronized void nullPlayer() {        videoPlayer = null;        videoCanvas = null;    }    int index = 0;    public void run() {            if (index % 2 == 0) {                videoPlayer = new VideoPlayer(display);                videoPlayer.open((String) urls.elementAt(index));                if (videoPlayer != null) {                    display.setCurrent(videoPlayer);                    videoPlayer.start();                }            } else {                videoCanvas = new VideoCanvas(display);                videoCanvas.open((String) urls.elementAt(index));                if(videoCanvas != null) {                    display.setCurrent(videoCanvas);                    videoCanvas.start();                }            }    }    /*     * Respond to commands, including exit     * On the exit command, cleanup and notify that the MIDlet has     * been destroyed.     */    public void commandAction(Command c, Displayable s) {        //try {            if (c == exitCommand) {                synchronized (this) {                    if (videoPlayer != null || videoCanvas != null) {                         new ExitThread().start();                    } else {                        destroyApp(false);                        notifyDestroyed();                    }                }            } else if ((s == theList && c == List.SELECT_COMMAND) || c == playCommand) {                synchronized (this) {                    if (videoPlayer != null || videoCanvas != null) {                        return;                    }                    int i = theList.getSelectedIndex();                    index = i;                    // need to start the players in a separate thread to                    // not block the command listener thread during                    // Player.realize: if it requires a security                    // dialog (like "is it OK to use airtime?"),                    // it would block the VM                    (new Thread(this)).start();                }            }    }        class ExitThread extends Thread {        public void run() {                // this is stop()+deallocate(), but not close(),                 //which is done in destroyApp() ...                if (videoPlayer != null) {                    videoPlayer.stopVideoPlayer();                } else {                    videoCanvas.stopVideoCanvas();                }                destroyApp(false);                notifyDestroyed();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -