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

📄 simplevideodemo_2.java

📁 《精通JAVA手机游戏与应用程序设计》随书光盘
💻 JAVA
字号:

import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;

public class SimpleVideoDemo_2 extends MIDlet implements CommandListener,
		PlayerListener, Runnable {
	private Display display;

	private Form form;

	private TextField url;

	private Command start = new Command("Play", Command.SCREEN, 1);

	private Command stop = new Command("Stop", Command.SCREEN, 2);

	private Player player;

	public SimpleVideoDemo_2() {
		display = Display.getDisplay(this);
		form = new Form("网络视频播放");
		url = new TextField("输入网络地址:", "http://127.0.0.1:8080/test-mpeg.mpg", 100, TextField.URL);
		form.append(url);
		form.addCommand(start);
		form.addCommand(stop);
		form.setCommandListener(this);
		display.setCurrent(form);
	}

	protected void startApp() {
		try {
			if (player != null && player.getState() == Player.PREFETCHED) {
				player.start();
			} else {
				defplayer();
				display.setCurrent(form);
			}
		} catch (MediaException me) {
			reset();
		}
	}

	protected void pauseApp() {
		try {
			if (player != null && player.getState() == Player.STARTED) {
				player.stop();
			} else {
				defplayer();
			}
		} catch (MediaException me) {
			reset();
		}
	}

	protected void destroyApp(boolean unconditional) {
		form = null;
		try {
			defplayer();
		} catch (MediaException me) {
		}
	}

	public void playerUpdate(Player player, String event, Object data) {
		if (event == PlayerListener.END_OF_MEDIA) {
			try {
				defplayer();
			} catch (MediaException me) {
			}
			reset();
		}
	}

	public void commandAction(Command c, Displayable d) {
		if (c == start) {
			start();
		} else if (c == stop) {
			stopPlayer();
		}
	}

	public void start() {
		Thread t = new Thread(this);
		t.start();
	}

	// 为了防止网络阻塞,使用线程
	public void run() {
		play(getURL());
	}

	String getURL() {
		return url.getString();
	}

	void play(String url) {
		try {
			VideoControl vc;
			defplayer();
			// create a player instance
			player = Manager.createPlayer(url);
			player.addPlayerListener(this);
			// realize the player
			player.realize();
			vc = (VideoControl) player.getControl("VideoControl");
			if (vc != null) {
				Item video = (Item) vc.initDisplayMode(
						VideoControl.USE_GUI_PRIMITIVE, null);
				Form v = new Form("视频正在播放。。。");
				StringItem si = new StringItem("状态:", "正在播放...");
				v.append(si);
				v.append(video);
				display.setCurrent(v);
			}
			player.prefetch();
			player.start();
		} catch (Throwable t) {
			reset();
		}
	}

	void defplayer() throws MediaException {
		if (player != null) {
			if (player.getState() == Player.STARTED) {
				player.stop();
			}
			if (player.getState() == Player.PREFETCHED) {
				player.deallocate();
			}
			if (player.getState() == Player.REALIZED
					|| player.getState() == Player.UNREALIZED) {
				player.close();
			}
		}
		player = null;
	}

	void reset() {
		player = null;
	}

	void stopPlayer() {
		try {
			defplayer();
		} catch (MediaException me) {
		}
		reset();
	}
}

⌨️ 快捷键说明

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