亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? simplevideodemo.java

?? 基于J2ME的手機視頻播放系統的開發,可以播放本地視頻和網絡視頻,是我從一編程雜志上找到的
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************
 * 軟件名:手機視頻播放器                **
 * 功能:實現本地視頻和網絡視頻的播放   **
 * 程序名:SimpleVideoDemo.java         **
 * 版本:Ver1.0                          **
 * 作者:鄭云斌、張靈浩、龍深圳          **
 * 指導老師:仵博、池瑞楠               **
 * 日期:2006年12月                      **
 * 開發環境:J2ME Wireless Toolkit 2.2  **
 ****************************************/

package video.SimpleVideoDemo;

import java.io.*;
import java.util.*;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;

public class SimpleVideoDemo extends MIDlet implements CommandListener, ItemCommandListener {
	private Display display;
	private Player player;
	private VideoControl vc, vc2;
	
	private List vlist;
	private Alert anAlert;
	private TextField url, areaurl;
	private Form form, urlform, v, areaform;
	
	private long duration;	// 影片持續時間
	private static CanvasVideo canvasvideo = null;

	// 命令按鈕
	private Command ExitCmd = new Command("退出程序", Command.EXIT, 1);
	private Command NetCmd = new Command("網絡視頻", Command.SCREEN, 1);
	private Command ABackCmd = new Command("返回", Command.BACK, 1);
	private Command ASureCmd = new Command("確認", Command.SCREEN, 1);
	private Command AStopCmd = new Command("暫停", Command.STOP, 1);
	private Command APlayCmd = new Command("播放", Command.SCREEN, 1);
	private Command AExitCmd = new Command("退出", Command.EXIT, 1);
	private Command AreaCmd = new Command("本地視頻", Command.SCREEN, 1);	
	private Command VStopCmd = new Command("暫停", Command.STOP, 1);
	private Command VPlayCmd = new Command("播放", Command.SCREEN, 1);
	private Command VExitCmd = new Command("退出", Command.EXIT, 1);
	private Command UBackCmd = new Command("返回", Command.BACK, 1);
	private Command LBackCmd = new Command("返回", Command.BACK, 1);
	private Command ConnectCmd = new Command("連接服務器", Command.BACK, 1);
	
	public SimpleVideoDemo() {
		display = Display.getDisplay(this);
		canvasvideo = new CanvasVideo(display);
		
		// 主菜單界面form
		form = new Form("視頻播放系統");
		StringItem item;
		item = new StringItem("視 頻 服 務 一:", "   網  絡  視  頻   ", Item.HYPERLINK);
		item.setDefaultCommand(NetCmd);
		form.append(item);
		item.setItemCommandListener(this);	// 為item注冊監聽器
		item = new StringItem("視 頻 服 務 二:", "   本  地  媒  體   ", Item.HYPERLINK);
		item.setDefaultCommand(AreaCmd);
		form.append(item);
		item.setItemCommandListener(this);	// 為item注冊監聽器
		form.addCommand(ExitCmd);	

		// 本地視頻列表的界面
		Image img;
		try {
			img = Image.createImage("/alert.png");
		} catch (java.io.IOException err14) {
			img = null;
		}
		Image[] liArray = null;
		try {
			Image licon = Image.createImage("/symbol.png");
			liArray = new Image[] {licon, licon, licon, licon, licon, licon};
		} catch (java.io.IOException err1) {
			System.out.print("load failed....");
			liArray = null;
		}
		String[] lsArray = {"最終幻想", "六月的雨", "第一次", "仙劍主題歌", "天仙子", 
			"爆笑小猴子"};
		vlist = new List("請選擇影視節目", Choice.IMPLICIT, lsArray, liArray);
		vlist.addCommand(LBackCmd);
		
		// 本地視頻選擇確認界面
		areaform = new Form("當前影視");
		areaurl = new TextField("影片名:", "b", 20, TextField.ANY);
		areaform.addCommand(ABackCmd);
		areaform.append(areaurl);
		item = new StringItem("請確認", "\n確定播放嗎?", Item.BUTTON);
		item.setDefaultCommand(ASureCmd);
		areaform.append(item);
		item.setItemCommandListener(this);	// 為item注冊監聽器

		// 網絡視頻網址輸入界面
		urlform = new Form("網絡視頻通道...");
		url = new TextField("請輸入視頻地址:", "http://127.0.0.1:8080/a.mpg", 100, TextField.URL);
		urlform.append(url);       
		urlform.addCommand(UBackCmd);
		urlform.addCommand(ConnectCmd);

		// 視頻播放完畢提示
		anAlert = new Alert("溫馨提示!", "您點播的影視節目已播放完畢,歡迎再次點播!", 
			img, AlertType.INFO);
		anAlert.setTimeout(2000);	

		// 網絡視頻播放界面
		v = new Form("網絡視頻已啟動...");
		
		// 為各個界面注冊監聽器	
		form.setCommandListener(this);
		vlist.setCommandListener(this);
		areaform.setCommandListener(this);
		urlform.setCommandListener(this);
	}		

	public void startApp() {
		canvasvideo.startApp();
	}
	public void pauseApp() {
		canvasvideo.pauseApp();
	}
	/*假如關閉了MIDlet程序,則會調用destroyApp()方法,因此需要在destroyApp()
	 *方法里面添加釋放資源的代碼
	 */
	protected void destroyApp(boolean unconditional) {
		System.out.println("多媒體系統已關閉!");
		form = null;
		try {
			canvasvideo.defplayer();
		} catch (MediaException err4) {
			System.out.print("err4");
		}	
	}
	// Command按鈕的事件處理
	public void commandAction(Command c, Displayable d) {
		// 如果在主菜單中按了"退出程序"
		if (c == ExitCmd) {	
			destroyApp(false);
			notifyDestroyed();
		}
		// 如果在網絡視頻網址輸入界面按了"連接服務器"
		if (c == ConnectCmd) {
			System.out.println("試圖連接服務器");
			canvasvideo.start();
		}		
		// 如果在網絡視頻網址輸入界面按了"返回"
		if (c == UBackCmd) {
			System.out.println("多媒體視頻服務主界面");
			display.setCurrent(form);
		}
		// 如果在本地視頻列表界面按了"返回"
		if (c == LBackCmd) {
			System.out.println("多媒體視頻服務主界面");
			display.setCurrent(form);
		} 
		// 如果在本地視頻選擇確認界面按了"返回"
		if (c == ABackCmd) {
			System.out.println("影視點播界面,請選擇您喜歡的影視...");
			display.setCurrent(vlist);
		}		
		// 如果選擇播放本地視頻
		if (d.equals(vlist)) {
			if (c == List.SELECT_COMMAND) {
				// 根據用戶選擇的不同,修改areaurl文本框中的文本信息
				switch(((List)d).getSelectedIndex()) {
					case 0:
						System.out.println("您選擇了《最終幻想》,請確認...否則請返回!");
						areaurl.setString("`最終幻想`");
						display.setCurrent(areaform);
						break;
					case 1:
						System.out.println("您選擇了《六月的雨》,請確認...否則請返回!");
						areaurl.setString("`六月的雨`");
						display.setCurrent(areaform);
						break;
					case 2:
						System.out.println("您選擇了《第一次》,請確認...否則請返回!");
						areaurl.setString("`第一次`");
						display.setCurrent(areaform);
						break;
					case 3:
						System.out.println("您選擇了《仙劍主題歌》,請確認...否則請返回!");
						areaurl.setString("`仙劍主題歌`");
						display.setCurrent(areaform);
						break;
					case 4:
						System.out.println("您選擇了《天仙子》,請確認...否則請返回!");
						areaurl.setString("`天仙子`");
						display.setCurrent(areaform);
						break;
					case 5:
						System.out.println("您選擇了《爆笑小猴子》,請確認...否則請返回!");
						areaurl.setString("`爆笑小猴子`");
						display.setCurrent(areaform);
						break;
				}
			}
		}
	}
	// StringItem控件的事件處理
	public void commandAction(Command c, Item item) {
		// 如果在主菜單中如果選擇播放網絡視頻
		if (c == NetCmd) {
			System.out.println("請輸入視頻服務器地址.....");
			display.setCurrent(urlform);
		}
		// 如果在主菜單中如果選擇播放本地視頻
		if (c == AreaCmd) {
			System.out.println("影視點播界面,請選擇您喜歡的影視...");
			display.setCurrent(vlist);
		} 
		// 如果在本地視頻選擇確認界面中按了"確定"
		if (c == ASureCmd) {
			System.out.println("試圖打開本地視頻");
			display.setCurrent(canvasvideo);
			canvasvideo.start();
		}
	}
	
	/*************************************************************************/	
	// 視頻播放屏幕類(內部類)
	class CanvasVideo extends Canvas implements PlayerListener, CommandListener, Runnable {
		private Display parentDisplay;
		private Thread t;
		private static final int VB_W = 2;	// Video 邊界寬度
		private static final int VB_H = 15;	// Video 邊界高度
		private boolean vis = true;
		private int canvasW;	// Canvas寬度
		private int canvasH;	// Canvas高度
		private int videoW;		// 視頻屏幕寬度
		private int videoH;		// 視頻屏幕高度
		static final int VOLUME_LEVEL = 50; 		// 音量初始化為50
		private int volumesetting = VOLUME_LEVEL;	// 音量級別
		private int mCount, mMaximum;
		private int mInterval;
		private int mWidth, mHeight, mX, mY, mRadius;
		
		public CanvasVideo(Display display) {
			this.parentDisplay = display;
			canvasW = getWidth();			// 獲取手機屏幕的寬
			canvasH = getHeight();			// 獲取手機屏幕的高
			videoW = canvasW - 2 * VB_W;	// 獲取手機屏幕中可用于視頻顯示的區域的寬
			videoH = canvasH - 2 * VB_H - 4;// 獲取手機屏幕中可用于視頻顯示的區域的高
			mCount = 0;
			mMaximum = 36;
			mInterval = 100;		// 線程執行的間隔時間
			// 計算角度
			int halfWidth = (canvasW - mRadius) / 2;
			int halfHeight = (canvasH - mRadius) / 2;
			mRadius = Math.min(halfWidth, halfHeight);
			// 通過匿名類創建了一個定時器對象
			TimerTask task = new TimerTask() {
				public void run() {
					mCount = (mCount + 1) % mMaximum;
					repaint(0, 0, canvasW, VB_H+2);
				}
			};
			Timer timer = new Timer();
			// 在執行任務前等待0秒,然后每過mInterval毫秒再執行一次
			timer.schedule(task, 0, mInterval); 
		}		
		// 在手機屏幕上繪圖
		public void paint(Graphics g) {
			g.setColor(0, 0, 0);		// 黑色
			g.fillRect(0, 0, canvasW, canvasH); 	// 繪制與手機屏幕一樣大小的矩形
			g.setColor(255, 255, 255);	// 白色
			g.drawString("影片長度:"+ time2String(duration), canvasW, VB_H, 
				Graphics.BOTTOM | Graphics.RIGHT);
			g.drawLine(0, VB_H+1, canvasW, VB_H+1);
			g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, 
				Font.SIZE_LARGE));
			g.drawString("影片載入中...請稍后!",canvasW/2, canvasH/2+10, 
				Graphics.TOP | Graphics.HCENTER);
			g.setColor(255,0,0);		//紅色
			// 繪制弧度為90度的的餅圖
			g.fillArc(canvasW/2-canvasW/4+10, VB_H+10, canvasW/4*2-20, canvasW/4*2-20, 0, 90);
			g.fillArc(canvasW/2-canvasW/4+10, VB_H+10, canvasW/4*2-20, canvasW/4*2-20, 180, 90);
			g.setColor(255,255,255);	//白色
			g.fillArc(canvasW/2-canvasW/4+10, VB_H+10, canvasW/4*2-20, canvasW/4*2-20, 90, 90);
			g.fillArc(canvasW/2-canvasW/4+10, VB_H+10, canvasW/4*2-20, canvasW/4*2-20, 270, 90);
			g.drawLine(canvasW/2, 0, canvasW/2, VB_H);
			int theta = -(mCount * 360 / mMaximum);
			// 點擊播放時,如player處于STARTED狀態,則先清除"狀態:暫停..."字符串,
			// 然后再繪制"狀態:"字符串
			if (player.getState() == player.STARTED) {
				g.setColor(0, 0, 0);
				g.fillRect(0, 0, canvasW/2, VB_H);
				g.setColor(255, 255, 255);
				g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, 
					Font.SIZE_MEDIUM));
				g.drawString("狀態:", VB_W, VB_H, Graphics.BOTTOM| Graphics.LEFT);
				// 清除餅圖與"影片載入中...請稍后!"字符串
				g.setColor(0, 0, 0);
				g.fillRect(0, VB_H+10, canvasW, canvasH-VB_H+10);
				g.setColor(255,255,255);
				g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, 
					Font.SIZE_LARGE));
				// 在手機屏幕的底部繪制字符串
				g.drawString("視頻已打開...請欣賞^_^...!", canvasW/2, canvasH-VB_H-4, 
					Graphics.TOP | Graphics.HCENTER);
				// 畫播放視頻時的播放動畫
				g.setColor(0, 0, 255);
				g.drawArc(canvasW/4, 0, VB_H, VB_H, 0, 360);
				g.setColor(0,255,0);
				g.fillArc(canvasW/4, 0, VB_H, VB_H, theta+90, 90);
				g.setColor(0x00ff0000);
				g.fillArc(canvasW/4, 0, VB_H, VB_H, theta+270, 90);
			}
			// 點擊暫停時,如player處于PREFETCHED狀態,則先清除"狀態:正在播放..."字符串,
			// 然后繪制"狀態:暫停..."
			if (player.getState() == player.PREFETCHED) {
				g.setColor(0, 0, 0);
				g.fillRect(0, 0, canvasW/2, VB_H);
				g.setColor(255, 255, 255);
				g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, 
					Font.SIZE_MEDIUM));
				g.drawString("狀態:暫停...", VB_W, VB_H, Graphics.BOTTOM | Graphics.LEFT);
			}

			if (player.getState() == player.STARTED) {
				g.setColor(255, 0, 0);
				g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, 
					Font.SIZE_LARGE));
				// 在可用于視頻顯示的區域中間繪制字符串
				g.drawString("黑屏狀態,按9鍵返回", videoW/2, videoH/2+VB_H-4, 
					Graphics.TOP | Graphics.HCENTER);
				}
		}
		// 釋放資源
		/*釋放資源也需要根據當前播放器播放的狀態而采取不同的方法,這是因為網絡數據傳輸的
		 *過程中也許不能夠一次性地完整讀取所有視頻數據,也許中間有一定的中斷,所以需要判
		 *斷不同的情況。如果Player處于正在播放狀態STARTED,則表示已經完成播放了視頻一部分
		 *數據或者全部數據,則可以使用stop()方法停止播放,假如還有新的數據,將會從新的數據
		 *開始播放。如果已經到達PREFETCHED狀態,但是又不能播放,則表示數據可能是錯誤的或
		 *者其他硬件已經占用了設備等原因造成的,因此使用deallocate()方法釋放排斥資源以方便其他
		 *設備的使用。
		 */
		void defplayer() throws MediaException {
			if (player != null) {
				if (player.getState() == Player.STARTED) {
					player.stop();			// 停止播放
				}
				if (player.getState() == Player.PREFETCHED) {
					player.deallocate();	// 釋放資源
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久夜色精品一区| 欧美国产精品一区二区三区| 国产在线精品一区在线观看麻豆| 成人午夜精品一区二区三区| 欧美理论片在线| 亚洲日本中文字幕区| 国内精品伊人久久久久影院对白| 色屁屁一区二区| 国产精品久久毛片| 国产在线精品一区二区| 欧美精品 国产精品| 亚洲欧美日韩久久| 粉嫩欧美一区二区三区高清影视| 日韩欧美高清在线| 秋霞成人午夜伦在线观看| 欧美午夜电影一区| 亚洲日本电影在线| 成人av在线播放网站| 欧美videos中文字幕| 日本不卡视频在线| 4438亚洲最大| 日韩专区一卡二卡| 欧美疯狂做受xxxx富婆| 亚洲444eee在线观看| 欧美午夜一区二区| 亚洲午夜精品在线| 欧美日韩久久久| 日韩精品电影在线观看| 欧美日韩精品电影| 日日欢夜夜爽一区| 日韩情涩欧美日韩视频| 精品一区二区在线看| 精品国产乱码久久久久久闺蜜| 另类的小说在线视频另类成人小视频在线 | 男男视频亚洲欧美| 欧美一区二区视频免费观看| 日韩va亚洲va欧美va久久| 欧美久久久久久久久| 三级影片在线观看欧美日韩一区二区| 欧美日韩在线三级| 日本午夜一区二区| 2024国产精品视频| 国产99久久久国产精品| 亚洲国产精华液网站w| 91在线视频观看| 亚洲高清免费视频| 欧美一级爆毛片| 国产精品资源在线看| 综合在线观看色| 欧美日韩精品一二三区| 极品美女销魂一区二区三区| 久久久99精品免费观看| 色综合中文字幕| 日本免费在线视频不卡一不卡二| 2020国产精品自拍| 91视视频在线观看入口直接观看www | 欧美精品一区二区三区视频| 国产成人8x视频一区二区| 亚洲欧美乱综合| 欧美一区二区三区免费在线看 | 午夜精品久久久久久久久久久 | 麻豆91在线观看| 国产精品久久一级| 欧美日韩成人在线一区| 国产精品18久久久久久久久久久久| 国产精品天美传媒| 欧美麻豆精品久久久久久| 国产一区二区三区国产| 一区二区三区免费看视频| 精品国产免费人成电影在线观看四季 | 色一情一伦一子一伦一区| 日韩av一级电影| 国产精品免费看片| 日韩欧美国产一区二区三区| 99精品视频中文字幕| 男女视频一区二区| 一区二区在线免费观看| 国产亲近乱来精品视频| 欧美日本视频在线| 91免费视频网址| 国产伦精品一区二区三区视频青涩| 一区二区三区四区国产精品| 欧美精品一区二区久久婷婷| 欧美视频在线一区| 成人国产精品免费网站| 精品午夜一区二区三区在线观看| 一区二区三区鲁丝不卡| 国产欧美精品一区二区三区四区 | 97久久超碰国产精品电影| 美国十次了思思久久精品导航| 亚洲精品国产一区二区精华液| 欧美激情一区二区三区全黄| 欧美日韩国产经典色站一区二区三区| 成人午夜大片免费观看| 国模少妇一区二区三区| 日本伊人精品一区二区三区观看方式| 最近中文字幕一区二区三区| 国产三级一区二区| 精品国产一区二区三区忘忧草 | 91麻豆精品国产| 欧美日韩中文字幕一区二区| 91啦中文在线观看| 成人福利电影精品一区二区在线观看| 狠狠色丁香久久婷婷综| 日本不卡一二三| 日本不卡视频在线观看| 视频在线观看一区| 爽好多水快深点欧美视频| 性欧美大战久久久久久久久| 亚洲自拍欧美精品| 亚洲精品菠萝久久久久久久| 亚洲日本在线天堂| 亚洲精品欧美专区| 一区二区三区色| 一区二区三区在线免费| 亚洲一区二区三区激情| 亚洲1区2区3区4区| 日韩精品乱码免费| 美女任你摸久久 | 99久久国产免费看| 91视视频在线直接观看在线看网页在线看 | 日韩制服丝袜av| 日韩高清在线不卡| 久久精品理论片| 国产精品自拍网站| 99亚偷拍自图区亚洲| 色就色 综合激情| 7777精品伊人久久久大香线蕉 | 中文乱码免费一区二区| 亚洲视频资源在线| 午夜亚洲国产au精品一区二区 | 亚洲精品国产a久久久久久| 亚洲国产精品自拍| 蜜桃一区二区三区在线观看| 国产精品综合在线视频| 99精品热视频| 欧美精品久久久久久久久老牛影院 | 久久综合成人精品亚洲另类欧美 | 懂色中文一区二区在线播放| 91麻豆福利精品推荐| 欧美精品乱码久久久久久| 精品三级av在线| 亚洲国产精品av| 亚洲3atv精品一区二区三区| 国产真实乱对白精彩久久| 99久久精品情趣| 日韩视频在线永久播放| 国产精品美女久久久久久久久久久 | 91麻豆国产自产在线观看| 91精品啪在线观看国产60岁| 国产亚洲女人久久久久毛片| 亚洲乱码精品一二三四区日韩在线 | 高清beeg欧美| 91精品在线免费观看| 国产精品美女一区二区三区| 水蜜桃久久夜色精品一区的特点| 国产不卡高清在线观看视频| 欧美三级视频在线| 国产夜色精品一区二区av| 亚洲国产精品尤物yw在线观看| 国产一区二区导航在线播放| 91精品1区2区| 国产精品久久毛片| 狠狠色丁香婷综合久久| 欧美日韩一二区| 国产精品久久久99| 国产一区二区在线视频| 欧美另类一区二区三区| 亚洲精品综合在线| 懂色av中文一区二区三区| 日韩欧美卡一卡二| 亚洲最大色网站| 不卡一卡二卡三乱码免费网站| 日韩欧美区一区二| 日韩黄色小视频| 欧美专区在线观看一区| 国产精品国产三级国产普通话99 | 91丨九色porny丨蝌蚪| 久久久亚洲精华液精华液精华液| 五月婷婷综合网| 欧美亚洲动漫精品| 亚洲日本va在线观看| 成人91在线观看| 久久久无码精品亚洲日韩按摩| 日本不卡在线视频| 3751色影院一区二区三区| 一区二区三区欧美在线观看| 91在线小视频| 国产精品你懂的在线| 成人永久aaa| 国产精品欧美久久久久无广告| 国产91精品久久久久久久网曝门| 久久综合网色—综合色88| 紧缚奴在线一区二区三区| 精品久久久久一区二区国产| 久草中文综合在线| 久久一区二区三区国产精品| 老司机精品视频在线| 精品电影一区二区三区| 国产一区美女在线|