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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? formplayer.java

?? 手機(jī)流媒體的實(shí)現(xiàn)
?? JAVA
字號(hào):
/**
//文檔生成日期:2006.3.28
//
//(1)概述:
//類名稱:FormPlayer
//類說明:
// 顯示播放音樂的Form界面
    
//所在子系統(tǒng):StreamingDemo
//
//系統(tǒng)總描述:
	用兩個(gè)Player交替播放從網(wǎng)絡(luò)上下載的流媒體。

	上面的代碼可以從
	http://www.cnblogs.com/Files/zhengyun_ustc/StreamingDemo.rar
	下載;
	
	安裝的jar包從
	http://www.cnblogs.com/Files/zhengyun_ustc/StreamingDemo-deployed.rar下載。
	
	本文屬于討論稿,提供的僅僅是建議和測試意見。
	本文還可以從
	http://www.cnblogs.com/zhengyun_ustc/archive/2006/3/28/StreamingDemo.html 得到最新稿。


//(2)歷史記錄:
//創(chuàng)建人: 鄭昀(2006.3.28)
//修改歷史:


//聯(lián)系我: Google Talk >> zhengyun@gmail.com
//Blogs:    http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc

//(3)版權(quán)聲明:
//我這個(gè)版本j2me客戶端代碼僅僅允許您借鑒,但不得用于商業(yè)用途,除非得到鄭昀本人的授權(quán)。本人保留所有權(quán)利。

////////////////////////////////////////////////////////////////////*/
package com.ultrapower.view;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;

import com.ultrapower.common.CommandResources;
import com.ultrapower.control.GUIController;
import com.ultrapower.model.Audio;
import com.ultrapower.model.NonInteractiveGaugeRunnable;
import com.ultrapower.model.ThreadPlayMain;


/**********************************************************
//FormPlayer
//
//Author:
//zhengyun@ultrapower 2006.3.28
//
**********************************************************/
public class FormPlayer extends Form implements PlayerListener{
    private GUIController m_controller;
	
	/*
	 * 命令們
	 */
	private Command exitCommand; // The exit command
	private Command playCommand;
	
	/*
	 * 線程們
	 */
	public ThreadPlayMain m_threadMain;
	public ThreadPlayMain m_threadSecondary;
	
	/*
	 * 確定當(dāng)前在播放哪一個(gè)Palyer
	 */
	private int m_nCurrentSequence = 0;
	
	/*
	 * 界面元素們
	 */
	private int m_nAppendGaugeId = -1;
	private NonInteractiveGaugeRunnable m_nonInteractive;
	
    
	public FormPlayer(String title, GUIController control){
		super(title);
		
		System.out.println("/** Enter FormPlayer Constructor!");
		
		m_controller	=	control;
    	this.setCommandListener(new FormListener());
    	
		exitCommand = new Command("退出應(yīng)用(Exit)", Command.SCREEN, 4); 
		playCommand = new Command("重來一遍(Again)", Command.SCREEN, 2);
		this.addCommand(exitCommand); 
		this.addCommand(playCommand);

		// 同時(shí)顯示進(jìn)度條
		startGauge();
		
		// 創(chuàng)建兩個(gè)線程;一個(gè)負(fù)責(zé)主播放器,一個(gè)負(fù)責(zé)從播放器
		StartPlayMain();
		StartPlaySecondary();
		
		try
		{
			// 首先啟動(dòng)Main Player去下載音樂和預(yù)加載音樂
			m_threadMain.notifyGetMusic();
			m_threadMain.notifyPrefetch();
			m_threadMain.notifyPlay();
			// 剩下的事情就靠GUIController的消息機(jī)制了
		}
		catch(Exception exc)
		{
			////////////////////////////////////////////
			// 告訴控制器出錯(cuò)了
			String strError = exc.getMessage() + "/" + exc.getClass();
			Object[] argvErrors = {strError};
			m_controller.handleEvent(GUIController.EventID.EVENT_FORM_ERROR, 
					argvErrors);
			////////////////////////////////////////////
		}
	}

	
	/*
	 * 啟動(dòng)Main音樂播放線程
	 */
	public final void StartPlayMain()
    {
		try
		{
			// 第三個(gè)參數(shù)0代表主播放器
			m_threadMain = new ThreadPlayMain(m_controller, this,
					0,
					CommandResources.SND_MAIN_MIN,
					CommandResources.SND_MAIN_MAX);
		    Thread thread;
		    (thread = new Thread(m_threadMain)).start();
		}
		catch(Exception exc)
		{
			////////////////////////////////////////////
			// 告訴控制器出錯(cuò)了
			String strError = exc.getMessage() + "/" + exc.getClass();
			Object[] argvErrors = {strError};
			m_controller.handleEvent(GUIController.EventID.EVENT_FORM_ERROR, 
					argvErrors);
			////////////////////////////////////////////
		}
    }	
	/*
	 * 啟動(dòng)Secondary音樂播放線程
	 */
	public final void StartPlaySecondary()
    {
		// 第三個(gè)參數(shù)1代表Secondary播放器
		m_threadSecondary = new ThreadPlayMain(m_controller, this,
				1,
				CommandResources.SND_SECONDARY_MIN,
				CommandResources.SND_SECONDARY_MAX);
	    Thread thread;
	    (thread = new Thread(m_threadSecondary)).start();
    }
	
	/*
	 * playSecondary函數(shù)總是由playerUpdate事件觸發(fā)的;
	 * 當(dāng)Main Player的音樂播放完畢,那么就立即播放Secondary Player的。
	 */
	public final void playSecondary()
    {
		m_threadMain.setPlaying(false);
		m_nCurrentSequence = 1;
		System.out.println("**play Secondary player!");
		m_threadSecondary.notifyPlay();
		
		try
		{
			m_controller.handleEvent(GUIController.EventID.EVENT_SECONDARY_BeginToPlay, 
					null);
		}
		catch(Exception e){
			e.printStackTrace();
		}
    }
	
	/*
	 * playMain函數(shù)總是由playerUpdate事件觸發(fā)的;
	 * 當(dāng)Secondary Player的音樂播放完畢,那么就立即播放Main Player的。
	 */
	public final void playMain()
    {
		m_threadSecondary.setPlaying(false);
		m_nCurrentSequence = 0;
		System.out.println("##play Main Player!");
		m_threadMain.notifyPlay();
		
		try
		{
			m_threadSecondary.notifyGetMusic();
			m_threadSecondary.notifyPrefetch();
		}
		catch(Exception e){
			e.printStackTrace();
		}
    }

	
	/*
	 * 進(jìn)度條的函數(shù)
	 */
	public void startGauge()
	{
		if(m_nonInteractive == null)
		{
			System.out.println("new a NonInteractiveGaugeRunnable");
			m_nonInteractive = new NonInteractiveGaugeRunnable(
	                "I'm playing,please just wait...", 5, 0);
			new Thread(m_nonInteractive).start();
			m_nAppendGaugeId = this.append(m_nonInteractive);
		}
		else
		{
			System.out.println("active last NonInteractiveGaugeRunnable");
			m_nonInteractive.setValue(0);
			m_nonInteractive.setStart();
		}
	}	
	public void stopGauge()
	{
		if(m_nonInteractive != null)
			m_nonInteractive.setDone();
	}
	
	/*
	 * 通知Main音效和Secondary音效線程退出,之前要銷毀音樂資源
	 */
	public void destroyMusic() throws MediaException
	{
		Audio.shutdown();
		m_threadMain.notifyCloseThread();
		m_threadSecondary.notifyCloseThread();
	}
	
	/*
	 * 本類實(shí)現(xiàn)了PlayerListener接口。通過這個(gè)事件來告知媒體已經(jīng)播放完畢
	 */
	public void playerUpdate(Player player, String event, Object data){
		System.out.println("Enter playerUpdate>>" +
				event);
		
		if(event == PlayerListener.END_OF_MEDIA){
			try{
				System.out.println("playerUpdate>>PlayerListener.END_OF_MEDIA");
				stopGauge();
				
				if(m_nCurrentSequence == 0)
				{
					playSecondary();
				}
				else
				{
					playMain();
				}
				
				startGauge();				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		else if(event == PlayerListener.STOPPED)
		{
			System.out.println("playerUpdate>>PlayerListener.STOPPED");
		}
		else if(event == PlayerListener.STARTED)
		{
			System.out.println("playerUpdate>>PlayerListener.STARTED");
		}
	}

    /*
     * 內(nèi)部監(jiān)聽器,監(jiān)聽器監(jiān)聽所有Command事件,并把事件響應(yīng)推出來讓控制器處理
     */
    private class FormListener implements CommandListener{ 
		public void commandAction(Command command, Displayable disp){
			if(command == exitCommand)
			{
				////////////////////////////////////////////
				// 告訴控制器exit
				m_controller.handleEvent(GUIController.EventID.EVENT_EXIT, 
						null);
				////////////////////////////////////////////
			}
			else if(command == playCommand)
			{
				// 通知背景音樂重新播放,不過可能需要稍等一會(huì)兒
				m_threadMain.notifyPlay();
				// 通知進(jìn)度條繼續(xù)跑
				startGauge();
			}
		}
    }//end inner class
    
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美r级在线观看| 久久婷婷国产综合国色天香 | 日本高清不卡aⅴ免费网站| 色综合天天性综合| 欧美另类久久久品| 久久精品一二三| 一区二区三区日韩精品视频| 蜜桃久久av一区| 高清视频一区二区| 欧美日韩精品一区二区| 精品91自产拍在线观看一区| 亚洲欧美激情小说另类| 久久99精品久久只有精品| 成人激情动漫在线观看| 日韩视频在线永久播放| 亚洲人吸女人奶水| 久久国产精品色婷婷| 91色.com| 国产午夜亚洲精品不卡| 亚洲视频一区二区在线| 精品一区二区免费在线观看| 色婷婷激情综合| 久久午夜电影网| 国产欧美日韩在线看| 日韩国产高清在线| 91视视频在线观看入口直接观看www | 欧美国产精品一区二区| 日韩av一区二区在线影视| 风流少妇一区二区| 精品国产自在久精品国产| 亚洲成人精品一区| 99国产欧美另类久久久精品 | a亚洲天堂av| 久久这里只有精品首页| 奇米精品一区二区三区在线观看一| 色综合欧美在线视频区| 久久精品日韩一区二区三区| 日韩精品免费视频人成| www成人在线观看| 日韩av电影免费观看高清完整版在线观看| 成人精品电影在线观看| 久久先锋影音av| 久久99深爱久久99精品| 日本乱人伦aⅴ精品| 亚洲欧洲成人自拍| 91丝袜高跟美女视频| 中文字幕一区免费在线观看| 国产成人免费在线视频| 国产欧美日韩激情| 视频精品一区二区| 欧美精品久久天天躁| 午夜伦欧美伦电影理论片| 91在线国产福利| 亚洲精品一二三四区| 91免费在线视频观看| 亚洲精品大片www| 91免费在线播放| 亚洲欧美另类图片小说| 日本乱人伦一区| 日韩黄色小视频| 日韩欧美亚洲一区二区| 国产一区二区三区久久悠悠色av| 日韩免费高清av| 中文字幕av免费专区久久| 在线观看日韩国产| 午夜电影久久久| 久久久天堂av| 色琪琪一区二区三区亚洲区| 蜜桃av噜噜一区二区三区小说| 国产亚洲午夜高清国产拍精品| 成人app网站| 日韩国产精品久久久久久亚洲| 久久久无码精品亚洲日韩按摩| 色天使久久综合网天天| 国产真实乱对白精彩久久| 亚洲免费观看高清完整版在线| 56国语精品自产拍在线观看| 成人免费黄色在线| 午夜一区二区三区视频| 国产精品成人一区二区三区夜夜夜| 亚洲裸体xxx| 日韩精品一区二区三区蜜臀| 成人app软件下载大全免费| 青娱乐精品在线视频| 亚洲乱码日产精品bd| 久久久久久久网| 欧美日韩久久一区二区| 国产.欧美.日韩| 肉肉av福利一精品导航| 亚洲精品免费在线观看| 久久久久久99精品| 欧美精品一卡二卡| 91网址在线看| 成人福利电影精品一区二区在线观看| 日本v片在线高清不卡在线观看| 日韩理论片网站| 国产色产综合色产在线视频 | 国产一区二区福利| 美女在线视频一区| 亚洲国产精品自拍| 亚洲视频一二三区| 国产精品电影院| 欧美精彩视频一区二区三区| 精品成人私密视频| 91麻豆精品久久久久蜜臀| 欧美性一区二区| 色婷婷一区二区三区四区| 成人av综合在线| 不卡电影一区二区三区| www.综合网.com| 国产大片一区二区| 国产成人精品免费网站| 高清国产一区二区三区| 国产99久久久国产精品免费看| 黄页视频在线91| 狠狠色综合播放一区二区| 视频一区二区三区入口| 亚洲va国产天堂va久久en| 亚洲444eee在线观看| 亚洲午夜一区二区| 一区二区三区四区乱视频| 一区二区三区四区激情| 午夜视黄欧洲亚洲| 色婷婷国产精品久久包臀| 色一情一伦一子一伦一区| 一本一本大道香蕉久在线精品| 成人永久看片免费视频天堂| www.在线欧美| 欧美影视一区在线| 欧美年轻男男videosbes| 欧美电影一区二区三区| 91麻豆精品国产综合久久久久久 | 成人18精品视频| 99久久久无码国产精品| 91黄色激情网站| 欧美日韩在线播放| 日韩欧美国产高清| 国产欧美精品在线观看| 中文字幕在线不卡| 亚洲午夜免费电影| 美日韩一区二区三区| 国产成人aaa| 欧美中文字幕亚洲一区二区va在线| 欧美三区在线视频| 久久综合一区二区| 国产精品二三区| 视频一区视频二区中文| 成人免费观看视频| 欧美精选午夜久久久乱码6080| 精品不卡在线视频| 亚洲视频免费在线观看| 日本欧美一区二区三区乱码 | 91精品国产麻豆国产自产在线| 日韩精品一区二区三区视频在线观看 | 日韩欧美的一区二区| 国产清纯白嫩初高生在线观看91 | 亚洲色图在线看| 日韩有码一区二区三区| 国产成人午夜高潮毛片| 欧美系列日韩一区| 久久婷婷一区二区三区| 亚洲一区影音先锋| 国产精品一区二区黑丝| 欧美在线观看你懂的| www国产成人免费观看视频 深夜成人网| 国产精品欧美一区二区三区| 日韩精品电影在线观看| 99在线精品一区二区三区| 欧美一级搡bbbb搡bbbb| 中文字幕一区二区三区不卡在线| 日本亚洲欧美天堂免费| 在线亚洲精品福利网址导航| 久久精品免费在线观看| 天天综合天天综合色| 91色综合久久久久婷婷| 久久午夜免费电影| 秋霞影院一区二区| 欧美在线制服丝袜| 亚洲欧洲精品天堂一级| 国产揄拍国内精品对白| 欧美日免费三级在线| 中文字幕视频一区| 狠狠色综合日日| 欧美一区二区三区免费观看视频 | 日本美女一区二区三区视频| 91香蕉视频黄| 国产视频在线观看一区二区三区 | 麻豆91在线看| 欧美日韩国产一级| 亚洲精选免费视频| 91视视频在线观看入口直接观看www | 成人avav在线| 国产日产精品一区| 国产一区二区中文字幕| 日韩欧美在线影院| 美女尤物国产一区| 日韩欧美一区在线| 激情综合一区二区三区| 欧美一区二区三区在线观看| 性久久久久久久久久久久|