亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
正在播放一区二区| 欧美性色综合网| 成人国产视频在线观看| 成人性色生活片| 欧美吻胸吃奶大尺度电影| 欧美精品一级二级三级| 26uuu亚洲| 亚洲激情图片qvod| 狠狠色丁香婷婷综合| 91网站最新地址| 91精品国产综合久久香蕉的特点 | 日本一区二区三区国色天香| 亚洲人成在线播放网站岛国| 日韩av一区二区在线影视| 国产91在线看| 欧美刺激午夜性久久久久久久| 国产精品网站在线观看| 日本欧洲一区二区| 99国产精品视频免费观看| 日韩视频永久免费| 亚洲一区二区三区激情| 99久久婷婷国产| 国产欧美日韩不卡免费| 久久er99热精品一区二区| 91成人在线精品| 日本一区二区三区国色天香| 久久精品噜噜噜成人av农村| 精品视频1区2区3区| 亚洲精品视频在线| 色94色欧美sute亚洲13| 青青草91视频| 欧美福利视频导航| 日韩黄色小视频| 日韩一区二区中文字幕| 亚洲观看高清完整版在线观看| 91视频在线观看| 亚洲图片欧美一区| 91精品国产综合久久国产大片| 亚洲国产另类av| 日韩欧美一区二区视频| 免费成人av在线| 久久精品一区二区三区av| 不卡一卡二卡三乱码免费网站| 一区二区中文字幕在线| 91国产视频在线观看| 人禽交欧美网站| 久久久精品黄色| 欧美制服丝袜第一页| 韩国一区二区在线观看| 中文字幕在线播放不卡一区| 欧美猛男男办公室激情| 国产成人久久精品77777最新版本| 国产免费观看久久| 88在线观看91蜜桃国自产| 国产福利一区二区三区在线视频| 亚洲欧美日韩电影| 日韩午夜在线观看视频| av动漫一区二区| 久久99精品国产麻豆婷婷洗澡| 国产精品天天摸av网| 欧美一区二区视频免费观看| 99久久99久久精品免费看蜜桃 | 91网站黄www| 国产成人免费视频| 美女视频黄免费的久久| 亚洲国产一区在线观看| 国产精品色在线| 久久综合中文字幕| 欧美一级午夜免费电影| 欧美在线|欧美| 91亚洲精品一区二区乱码| 国产91丝袜在线播放九色| 久久www免费人成看片高清| 亚洲18色成人| 同产精品九九九| 亚洲成va人在线观看| 亚洲国产精品视频| 亚洲国产成人91porn| 亚洲国产综合色| 婷婷六月综合网| 日本怡春院一区二区| 蜜臀av性久久久久蜜臀aⅴ | 91麻豆精品国产91久久久资源速度 | 亚洲视频图片小说| 一区二区三区中文在线| 亚洲男人的天堂在线aⅴ视频| 亚洲欧美日韩国产一区二区三区| 亚洲免费观看视频| 亚洲第一福利视频在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 17c精品麻豆一区二区免费| 成人免费在线观看入口| 亚洲成av人片| 国产精品一卡二| 一本大道综合伊人精品热热 | 久久国产精品99精品国产| 国产激情视频一区二区三区欧美| 成人av网址在线观看| 欧美精品在线观看一区二区| 久久女同互慰一区二区三区| 中文字幕一区二区三区不卡| 成人av电影在线观看| 欧美色爱综合网| 国产欧美一区二区精品婷婷| 亚洲国产精品久久人人爱蜜臀| 国产一区不卡精品| 在线亚洲一区观看| 国产精品网曝门| 国产做a爰片久久毛片| 欧美揉bbbbb揉bbbbb| 国产精品国产精品国产专区不蜜| 免费观看30秒视频久久| 欧美三级蜜桃2在线观看| 中文字幕日韩精品一区| 国产成人啪免费观看软件| 精品久久国产字幕高潮| 免费视频最近日韩| 欧美日韩精品一区视频| 亚洲一区二区黄色| 欧美视频日韩视频| 亚洲一区二区影院| 欧美三级日韩三级国产三级| 亚洲国产一区视频| 欧美精选一区二区| 男人操女人的视频在线观看欧美| 欧美精品久久一区| 美国毛片一区二区三区| 亚洲欧美色图小说| 在线观看www91| 日韩福利视频导航| 久久精品综合网| 97精品国产露脸对白| 亚洲综合丁香婷婷六月香| 欧美精品18+| 国产成人综合视频| 亚洲日本乱码在线观看| 欧美日韩一本到| 精品在线你懂的| 亚洲美女电影在线| 日韩一区二区电影在线| 国产精品一区二区果冻传媒| 亚洲欧洲日产国码二区| 日韩手机在线导航| 欧美精品一卡二卡| 成a人片国产精品| 日本亚洲视频在线| 亚洲精品国产视频| 日本一区免费视频| 在线电影院国产精品| 成人网页在线观看| 蜜臀av亚洲一区中文字幕| 亚洲啪啪综合av一区二区三区| 日韩一级二级三级| 日本电影欧美片| 成人精品视频一区二区三区| 日本不卡123| 亚洲一区二区三区四区五区中文 | 99视频在线精品| 国产伦精品一区二区三区在线观看| 亚洲精品国产一区二区精华液 | 99精品热视频| 国产精品一区二区三区乱码| 免费在线看成人av| 丝袜美腿亚洲一区| 日韩av成人高清| 午夜精品福利久久久| 亚洲精品久久7777| 一二三四区精品视频| 国产精品家庭影院| 亚洲伦在线观看| 日韩一区日韩二区| 亚洲欧美色图小说| 一区二区三区波多野结衣在线观看| 日韩美女视频一区二区| 亚洲欧洲综合另类| 天堂蜜桃91精品| 久久超碰97中文字幕| 成人网在线免费视频| 91麻豆免费在线观看| 欧美亚洲丝袜传媒另类| 欧美一区二区国产| 欧美—级在线免费片| 亚洲欧美另类图片小说| 亚洲国产综合人成综合网站| 麻豆视频观看网址久久| 99这里只有精品| 欧美精品黑人性xxxx| 久久久久久免费网| 一区二区三区日韩精品| 天天做天天摸天天爽国产一区 | 中文字幕在线不卡一区| 日本不卡在线视频| 92国产精品观看| 日韩免费一区二区三区在线播放| 国产午夜亚洲精品不卡| 天天综合网 天天综合色| 国产成a人亚洲| 日韩欧美在线影院| 亚洲午夜免费福利视频| 丰满白嫩尤物一区二区|