學(xué)習(xí)情境音頻與視頻處理_第1頁(yè)
學(xué)習(xí)情境音頻與視頻處理_第2頁(yè)
學(xué)習(xí)情境音頻與視頻處理_第3頁(yè)
學(xué)習(xí)情境音頻與視頻處理_第4頁(yè)
學(xué)習(xí)情境音頻與視頻處理_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

學(xué)習(xí)情境音頻與視頻處理第一頁(yè),共二十五頁(yè),2022年,8月28日能力目標(biāo)能熟練地運(yùn)用利用管理器(Manager)打開一個(gè)音頻文件;使用播放器(Player)播放一個(gè)音頻文件;掌握在游戲中“開”、“關(guān)”聲音的方法;掌握背景音樂(lè)之間的切換方法。學(xué)會(huì)使用播放器(Player)構(gòu)造一個(gè)音量控制器(VolumeControl);能熟練地使用音量控制器(VolumeControl)控制聲音的大小與設(shè)置靜音;能熟練的使用管理器(Manager)、播放器(Player)打開一個(gè)視頻文件;能熟練掌握運(yùn)用播放器(Player)構(gòu)造一個(gè)視頻控制器(VideoControl);能熟練掌握使用視頻控制器(VideoControl)設(shè)置視頻的顯示范圍和顯示屬性;第二頁(yè),共二十五頁(yè),2022年,8月28日認(rèn)知目標(biāo)了解管理器(Manager)、播放器(Player)、音量控制器(VolumeControl)、視頻控制器(VideoControl)等之間的結(jié)構(gòu)關(guān)系;理解背景音樂(lè)和音效對(duì)于一款游戲的重要性;識(shí)記播放器(Player)的各種方法;理解背景音樂(lè)和音效數(shù)據(jù)在游戲中的加載位置;識(shí)記獨(dú)占式播放和線程播放的方法和利弊;理解釋放資源的重要性;識(shí)記系統(tǒng)能夠打開的媒體類型。掌握視頻播放器中的常用方法;了解移動(dòng)設(shè)備可以打開的媒體類型;了解視頻觸發(fā)事件。第三頁(yè),共二十五頁(yè),2022年,8月28日5.1學(xué)習(xí)情境描述在玩家眼中,好的游戲總是有聲有色、豐富多彩。離開了生動(dòng)的音效,游戲的體驗(yàn)就會(huì)大打折扣。在一款游戲中,背景音樂(lè)通常隨著場(chǎng)景的變換而變換,比如:菜單界面時(shí)會(huì)有一個(gè)起始的背景音樂(lè),進(jìn)入游戲后,又會(huì)有一個(gè)根據(jù)游戲情節(jié)設(shè)計(jì)的背景音樂(lè)。在RPG游戲中,還會(huì)隨著人物所處場(chǎng)景的不同,設(shè)計(jì)幾種不同的背景音樂(lè)。除了一直播放著的背景音樂(lè),游戲中可能還會(huì)有碰撞、爆炸、暫停、繼續(xù)、勝利、失敗等系列的短音出現(xiàn)。在游戲過(guò)程中,還可以根據(jù)需要調(diào)節(jié)音量,或者設(shè)置靜音。但是對(duì)于手機(jī)來(lái)說(shuō),存儲(chǔ)空間是非常寶貴的,所以要謹(jǐn)慎使用視頻。但是,隨著手機(jī)存儲(chǔ)空間的不斷擴(kuò)大(例如現(xiàn)在的存儲(chǔ)卡已經(jīng)達(dá)到32G以上空間),手機(jī)CPU速度不斷提高,手機(jī)內(nèi)存的不斷擴(kuò)容,相信手機(jī)游戲中的視頻會(huì)得到相應(yīng)的發(fā)展空間。本學(xué)習(xí)情境分為二個(gè)學(xué)習(xí)單元來(lái)完成。單元一,音效設(shè)計(jì);單元二,播放視頻。第四頁(yè),共二十五頁(yè),2022年,8月28日5.2音效設(shè)計(jì)從本學(xué)習(xí)單元開始,將進(jìn)入一個(gè)豐富多彩的有聲世界。在本學(xué)習(xí)單元中,首先,通過(guò)簡(jiǎn)單地播放一段音效,來(lái)學(xué)習(xí)播放器的使用;然后,通過(guò)對(duì)音效開和關(guān)的控制,了解控制播放器開、關(guān)的方法;第三,實(shí)現(xiàn)音量的調(diào)節(jié)和靜音的設(shè)置;第四,實(shí)現(xiàn)多個(gè)背景音樂(lè)之間的切換;最后,在背景音樂(lè)的基礎(chǔ)之上,為游戲加入各種提示短音效果。第五頁(yè),共二十五頁(yè),2022年,8月28日5.2.2任務(wù)一:播放音效知識(shí)準(zhǔn)備:認(rèn)識(shí)MediaAPI利用MediaAPI接口,可以為游戲和其他應(yīng)用程序添加聲音效果。

MediaAPI接口由兩個(gè)包組成,分別為包包。

MediaAPI接口體系中主要由數(shù)據(jù)源(DataSource)、管理器(Manager)、播放器(Player)和控制器(Control)四個(gè)部分構(gòu)成。Manager管理器DataSource數(shù)據(jù)源Player播放器Control控制器創(chuàng)建支持提供控制其中,Manager類是MediaAPI接口體系中最重要的類,用于創(chuàng)建各種不同類型的Player對(duì)象。Player接口用來(lái)播放由DataSource提供的各種格式的多媒體內(nèi)容。Control接口用來(lái)協(xié)助Player接口控制音調(diào)和音量,有兩個(gè)子接口,分別為ToneControl接口(控制音調(diào))和VolumeControl接口(控制音量)。第六頁(yè),共二十五頁(yè),2022年,8月28日任務(wù)準(zhǔn)備(1)新建MIDlet工程,工程名為“Ch5_Unit1”。(2)將第4章課后實(shí)訓(xùn)“5.綜合調(diào)試”后成果,導(dǎo)入工程。(3)在工程中添加一個(gè)AudioPlayer類,在該類中將實(shí)現(xiàn)音效播放的基本功能。(4)將相關(guān)音效資源文件拷貝到工程的res文件夾下。小提示:各人綜合調(diào)試后,類的個(gè)數(shù)或者類名,可能會(huì)有所不同。但本教材后面的任務(wù),都基于上面這幾個(gè)類進(jìn)一步展開,請(qǐng)注意結(jié)合自己的成果來(lái)完成后面的任務(wù)。實(shí)現(xiàn)過(guò)程(1)打開AudioPlayer類,實(shí)現(xiàn)如下步驟:聲明播放器對(duì)象自定義播放音效的方法(2)打開StartCanvas類,添加音效開啟提示界面。步驟如下:聲明AudioPlayer類對(duì)象聲明一個(gè)音效開啟提示界面的狀態(tài)值,并修改界面狀態(tài)變量的值為該狀態(tài)值。自定義繪制音效開啟提示界面的方法。在繪制屏幕的paint()方法中,添加對(duì)繪制音效開啟提示界面方法的調(diào)用。在響應(yīng)鍵盤的keyPressed()方法中,添加對(duì)音效開啟提示界面“打開”按鈕的響應(yīng)。(3)運(yùn)行測(cè)試第七頁(yè),共二十五頁(yè),2022年,8月28日(1)從輸入流獲取publicstaticPlayercreatePlayer(java.io.InputStreamstream,Stringtype)參數(shù)說(shuō)明:

stream:音頻數(shù)據(jù)的輸入流。

type:數(shù)據(jù)源類型。常用的音頻類型有如下幾種:

Wave音頻文件audio/x-wavAU音頻文件audio/basicMP3音頻文件audio/mpegMIDI音頻文件audio/midi。比如,要獲取存放在工程res文件夾下的音頻文件“menu.mid”,代碼如下:InputStreamis=getClass().getResourceAsStream(“/menu.mid”);Playerplayer=Manager.createPlayer(is,“audio/midi”);要點(diǎn)提示::獲取音頻文件(2)從URL地址獲取

publicstaticPlayercreatePlayer(Stringlocator)參數(shù)說(shuō)明:

locator:URL字符串。格式為:<協(xié)議>:<位置信息>例如:PlayeraudioPlayer=Manager.createPlayer(“/music.mp3”);小提示:可以利用如下兩個(gè)方法來(lái)獲取指定協(xié)議支持的媒體類型,或者是指定媒體類型所支持的協(xié)議。publicstaticString[]getSupportedContentTypes(Stringprotocol)publicstaticString[]getSupportedProtocols(Stringcontent_type)若參數(shù)為null,則返回所有協(xié)議支持的媒體類型和所有媒體類型支持的協(xié)議。第八頁(yè),共二十五頁(yè),2022年,8月28日知識(shí)提煉:播放器狀態(tài)及狀態(tài)的轉(zhuǎn)換(1)播放器狀態(tài)播放器(Player)從被創(chuàng)建到停止播放,整個(gè)生命周期共經(jīng)歷了五個(gè)狀態(tài)。

UNREALIZED:播放器(Player)的起始狀態(tài),此時(shí)播放器(Player)未獲得任何所需資源的信息。

REALIZED:已獲得所需資源信息,但不一定獲得硬件系統(tǒng)資源。

PREFETCHED:獲取了所有資源,為播放媒體數(shù)據(jù)做好準(zhǔn)備。

STARTED:播放器(Player)處于運(yùn)行狀態(tài)。

CLOSED:播放器(Player)釋放所占用的所有資源,不能被重新使用。(2)播放器狀態(tài)的轉(zhuǎn)換

Player類上定義了一組相應(yīng)的方法來(lái)控制播放器在不同狀態(tài)之間轉(zhuǎn)換。realize():獲取播放信息,但是并不獲取播放資源。prefetch():獲取稀有資源,比如聲音設(shè)備,盡量減少播放延時(shí)。start():開始播放聲音。stop():停止播放聲音。deallocate方法:釋放被其占用的稀有資源,比如聲音設(shè)備。close()方法:關(guān)閉播放器并釋放資源。CLOSEDUNREALIZEDREALIZEDPREFETCHEDSTARTEDrealize()deallocate()close()close()close()close()prefetch()start()deallocate()stop()第九頁(yè),共二十五頁(yè),2022年,8月28日5.2.3任務(wù)二:實(shí)現(xiàn)音效的開關(guān)在任務(wù)一的基礎(chǔ)之上繼續(xù)如下實(shí)現(xiàn)過(guò)程。(1)在AudioPlayer類中,書寫代碼,實(shí)現(xiàn)如下功能:聲明音效開關(guān)變量自定義獲取當(dāng)前音效開關(guān)的方法自定義設(shè)置音效開關(guān)的方法自定義關(guān)閉播放器的方法(2)在StartCanvas類中,書寫代碼,完成如下功能:在keyPressed()方法中,修改音效提示界面的按鈕響應(yīng)。在菜單界面的按鍵處理方法中,添加對(duì)菜單項(xiàng)“音樂(lè)開關(guān)”的響應(yīng)代碼。(3)運(yùn)行測(cè)試第十頁(yè),共二十五頁(yè),2022年,8月28日要點(diǎn)提示:音效開關(guān)在一款手機(jī)游戲中,如果存在多個(gè)需要播放的音效,最好是一個(gè)音效對(duì)應(yīng)一個(gè)播放器。比如,在任務(wù)四中,將實(shí)現(xiàn)兩段背景音樂(lè)之間的切換。當(dāng)更換音效資源時(shí),需要清理聲音設(shè)備后才能加載新的音效資源。Java有垃圾自動(dòng)回收機(jī)制,但不是實(shí)時(shí)回收,系統(tǒng)在稍有空閑的時(shí)候才實(shí)施垃圾的回收。因此如果一個(gè)播放器關(guān)閉后,立即重新啟動(dòng)該播放器去播放另一段音樂(lè),就會(huì)出現(xiàn)兩段音樂(lè)同時(shí)播放的現(xiàn)象。除非前一段音樂(lè)已經(jīng)播放完畢。更進(jìn)一步的問(wèn)題是,如果在播放背景音樂(lè)的同時(shí),又要播放爆炸、碰撞等短音效果,使用同一個(gè)播放器就很難達(dá)到理想的效果。因此,在一款手機(jī)游戲中,可以存在多個(gè)播放器,實(shí)現(xiàn)對(duì)不同音效的加載、播放和關(guān)閉。對(duì)于這些播放器的開、關(guān)需要有一個(gè)統(tǒng)一的管理。使用一個(gè)開關(guān)變量來(lái)進(jìn)行控制,是一個(gè)比較理想的解決方法。比如,在本任務(wù)中,首先,聲明switchAudio變量作為播放器的開關(guān)變量,然后,自定義方法getSwitchAudio()和setSwitchAudio(),實(shí)現(xiàn)對(duì)switchAudio開關(guān)變量值的獲取和設(shè)置。所有播放器的開、關(guān)都根據(jù)switchAudio變量的值來(lái)決定。這樣在程序運(yùn)行中,就不會(huì)出現(xiàn)剛把背景音樂(lè)關(guān)閉,卻又突然響起爆炸聲音的尷尬。第十一頁(yè),共二十五頁(yè),2022年,8月28日5.2.4任務(wù)三:控制音量、設(shè)置靜音

(1)在AudioPlayer類中,書寫代碼,實(shí)現(xiàn)如下功能:①聲明控制音量的對(duì)象自定義調(diào)節(jié)音量、設(shè)置靜音的方法(2)在StartCanvas類的keyPressed()方法中,添加對(duì)數(shù)字鍵4、5、6的響應(yīng)代碼,設(shè)置數(shù)字鍵4減小音量、數(shù)字鍵6增加音量、數(shù)字鍵5設(shè)置靜音。(3)運(yùn)行測(cè)試小提示:關(guān)閉音效和設(shè)置靜音是兩個(gè)不同的概念。關(guān)閉音效的實(shí)質(zhì)是關(guān)閉播放器,而靜音狀態(tài)下,播放器是打開的。第十二頁(yè),共二十五頁(yè),2022年,8月28日在MediaAPI接口體系中,Control接口有兩個(gè)子接口:ToneControl和VolumeControl接口,分別用于控制音調(diào)和控制音量。要在播放音效時(shí)控制音量首先要獲得VolumeControl接口,然后通過(guò)該接口上定義的方法進(jìn)行音量調(diào)節(jié)。獲取VolumeControl接口的方法如下:privatePlayerplayer;privateVolumeControlplayerVolumeControl;playerVolumeControl=(VolumeControl)player.getControl("VolumeControl");知識(shí)提煉VolumeControl接口上共定義了四個(gè)用于控制播放器音量的方法。(1)設(shè)置音量大小語(yǔ)法格式:publicintsetLevel(intlevel)參數(shù):level的取值范圍[0..100],0代表靜音。(2)獲取當(dāng)前音量值語(yǔ)法格式:publicintgetLevel()說(shuō)明:如果播放器處于REALIZED狀態(tài),則返回-1。(3)設(shè)置靜音語(yǔ)法格式:publicvoidsetMute(booleanmute)參數(shù):mute取值為true表示靜音,false表示不靜音。(4)檢測(cè)是否靜音語(yǔ)法格式:publicbooleanisMuted()第十三頁(yè),共二十五頁(yè),2022年,8月28日在任務(wù)三的基礎(chǔ)之上,繼續(xù)如下實(shí)現(xiàn)過(guò)程。(1)在AudioPlayer類中,書寫代碼,實(shí)現(xiàn)如下功能:①添加變量聲明自定義方法,通過(guò)兩個(gè)播放器,分別控制兩段背景音樂(lè)的加載、播放和關(guān)閉。(2)在StartCanvas類中,書寫代碼,完成如下功能:在keyPressed()方法中,修改音效提示界面的按鈕響應(yīng)。在菜單界面的按鍵處理方法中,修改對(duì)菜單項(xiàng)“音樂(lè)開關(guān)”的響應(yīng)代碼。5.2.5任務(wù)四:實(shí)現(xiàn)菜單背景音樂(lè)和游戲背景音樂(lè)之間的切換③在繪制進(jìn)度條的方法的最后,即進(jìn)入游戲界面的語(yǔ)句后面,添加背景音樂(lè)切換的語(yǔ)句。(3)在GameBody類中,書寫代碼,完成如下功能:①聲明變量AudioPlayeraudioPlayer=newAudioPlayer();在keyPressed()方法中,修改對(duì)“返回”按鈕的響應(yīng)代碼。即在返回菜單界面的語(yǔ)句后面,添加對(duì)背景音樂(lè)切換的代碼。(4)運(yùn)行測(cè)試

小提示:在使用音頻資源的時(shí)候,一定要注意資源文件的大小。如果文件太大,導(dǎo)致加載時(shí)間過(guò)長(zhǎng),不論是在游戲開始前,還是在游戲過(guò)程中,都將影響玩家的游戲體驗(yàn)。第十四頁(yè),共二十五頁(yè),2022年,8月28日要點(diǎn)提示如果要對(duì)菜單背景音樂(lè)和游戲背景音樂(lè)分別進(jìn)行音量的控制和靜音的設(shè)置,可以重載adjustVolume()方法,參考代碼如下:publicstaticvoidadjustVolume(intindex,intincrement,booleanmute){audioPlayerVolumeControl[index]=(VolumeControl)audioPlayer[index].getControl("VolumeControl");if(audioPlayerVolumeControl[index]!=null){if(!mute){//如果沒(méi)有靜音

audioPlayerVolumeControl[index] .setLevel(audioPlayerVolumeControl[index].getLevel() +increment);//調(diào)整音量

}else{ audioPlayerVolumeControl[index] .setMute(!audioPlayerVolumeControl[index].isMuted());//設(shè)置乒乓效果,在靜音和非靜音間切換

}}}然后,分別在StartCanvas類和GameBody類的keyPressed()方法中,通過(guò)對(duì)數(shù)字鍵4、6和5的響應(yīng),實(shí)現(xiàn)音量的控制和靜音的設(shè)置。參考代碼如下:if(keyCode==Canvas.KEY_NUM4){//數(shù)字4,減小音量AudioPlayer.adjustVolume(AudioPlayer.PLAYER_INDEX_MENU,-10,false);}elseif(keyCode==Canvas.KEY_NUM6){//數(shù)字6,增加音量

AudioPlayer.adjustVolume(AudioPlayer.PLAYER_INDEX_MENU,+10,false);}elseif(keyCode==Canvas.KEY_NUM5){//數(shù)字5,設(shè)置是否靜音 AudioPlayer.adjustVolume(AudioPlayer.PLAYER_INDEX_MENU,0,true);}第十五頁(yè),共二十五頁(yè),2022年,8月28日(1)在AudioPlayer類中,書寫代碼,完成如下功能:①自定義方法audioLoad(),實(shí)現(xiàn)對(duì)音效資源的加載。自定義方法audioPlay(),實(shí)現(xiàn)對(duì)音效的播放。(2)在GameBody類中,書寫代碼,完成如下功能:①在構(gòu)造方法中調(diào)用audioLoad()方法,完成對(duì)爆炸短音資源的加載。audioPlayer.audioLoad("explosion.wav","audio/x-wav");在drawBullet()方法的碰撞檢測(cè)過(guò)程中,如果發(fā)生碰撞,則調(diào)用audioPlay()方法,實(shí)現(xiàn)爆炸短音的播放。③在keyPressed()方法的“返回”按鈕相應(yīng)代碼中,調(diào)用audioClose()方法,關(guān)閉并回收短音播放器。(3)運(yùn)行測(cè)試

5.2.6延伸任務(wù):為游戲加入爆炸等提示短音小提示:在現(xiàn)階段,有些移動(dòng)設(shè)備支持同時(shí)播放多種音效,但有些設(shè)備是不支持同時(shí)播放多種音效的。本任務(wù)在WTK2.5.2模擬器上運(yùn)行時(shí),就只能聽到背景音樂(lè),而聽不到爆炸音效。但將本任務(wù)打包后,下載到某些手機(jī)設(shè)備上,比如:SonyEricsson的W580i機(jī)型,就可以同時(shí)聽到背景音樂(lè)和爆炸音效。因此,對(duì)音效設(shè)計(jì)的真正效果,還需要在真實(shí)的設(shè)備上進(jìn)行檢驗(yàn)。第十六頁(yè),共二十五頁(yè),2022年,8月28日要點(diǎn)提示在游戲中,除了一直在播放的背景音樂(lè)外,還會(huì)存在與游戲效果相對(duì)應(yīng)的各種提示短音。比如,本任務(wù)中的爆炸音效,還有當(dāng)出現(xiàn)新對(duì)象時(shí)、對(duì)象間碰撞時(shí)、勝利或失敗后的各種提示音。背景音樂(lè)和提示短音的播放時(shí)間和位置是不同的。背景音樂(lè)是一開始就播放,而提示短音是在發(fā)生某種事件后才播放的。所以在添加音效時(shí)一定要注意音效播放的位置。背景音樂(lè)無(wú)限次播放,而提示短音,僅播放一次,但可能需要多次播放。如果反復(fù)多次加載短音,將嚴(yán)重浪費(fèi)系統(tǒng)資源,可能會(huì)使正在運(yùn)行的游戲出現(xiàn)短暫的停頓,也即通常所說(shuō)的“卡”,這將嚴(yán)重影響游戲的娛樂(lè)性。因此,在本任務(wù)中,將短音音效資源的加載和播放進(jìn)行了功能分離,在構(gòu)造方法中,一次加載,在碰撞檢測(cè)中,多次播放。使用setLoopCount()方法可以設(shè)置音效的播放次數(shù),語(yǔ)法格式如下:voidsetLoopCount(intcount);其中,參數(shù)count為設(shè)置的播放次數(shù),當(dāng)count為-1時(shí),表示無(wú)限次循環(huán)播放。知識(shí)提煉第十七頁(yè),共二十五頁(yè),2022年,8月28日5.3播放視頻在游戲的開始,或者是在游戲的每個(gè)關(guān)卡之間添加一段超酷的視頻,不僅可以提升游戲的品質(zhì),而且還能夠抓主玩家的眼球,給玩家以獎(jiǎng)勵(lì),提高游戲的可玩性。在本學(xué)習(xí)單元中,首先,播放一段片頭視頻;然后,響應(yīng)播放事件,使得播放完片頭視頻后,進(jìn)入游戲。第十八頁(yè),共二十五頁(yè),2022年,8月28日任務(wù)準(zhǔn)備(1)新建MIDlet工程,工程名為“Ch5_Unit2”。(2)將工程“Ch5_Unit1”中的類文件拷貝到該工程中。(3)在工程中添加一個(gè)繼承自GameCanvas類的VideoPlayer類,在該類中將實(shí)現(xiàn)視頻播放的基本功能。(4)將相關(guān)視頻資源文件拷貝到工程的res文件夾下。實(shí)現(xiàn)過(guò)程(1)打開VideoPlayer類,實(shí)現(xiàn)如下步驟:①聲明對(duì)象在構(gòu)造方法中實(shí)現(xiàn)視頻的播放功能(2)打開PlaneMIDlet類,修改startApp()方法中的語(yǔ)句,使其顯示VideoPlayer類。(3)運(yùn)行測(cè)試小提示:在代碼書寫過(guò)程中,請(qǐng)注意根據(jù)需要導(dǎo)入相關(guān)的包和類。第十九頁(yè),共二十五頁(yè),2022年,8月28日要點(diǎn)提示視頻播放其實(shí)和音效播放采用的方式相同,都是由管理器通過(guò)指定的數(shù)據(jù)源來(lái)創(chuàng)建播放器對(duì)象,然后,通過(guò)播放器對(duì)象獲得相關(guān)的視頻控制器,實(shí)現(xiàn)在窗體或者畫布中顯示視頻的功能。視頻控制器主要的接口是VideoControl接口??梢酝ㄟ^(guò)播放器對(duì)象調(diào)用getControl()方法獲取與之相關(guān)的視頻控制器對(duì)象。在調(diào)用start()方法開始播放視頻前,首先要調(diào)用VideoControl接口上的initDisplayMode()方法指定打開視頻的模式,然后再調(diào)用setVisible()方法設(shè)置視頻是否可見(jiàn)。一個(gè)播放器對(duì)象,可以同時(shí)獲得與之相關(guān)聯(lián)的視頻控制器和音頻控制器。因此在視頻播放時(shí),不僅可以設(shè)置視頻的顯示,還能設(shè)置視頻的音效,兩者之間并不矛盾。

VideoControl接口上定義的常用方法有以下這些:(1)設(shè)置視頻播放模式語(yǔ)法格式:publicjava.lang.ObjectinitDisplayMode(intmode,java.lang.Objectarg)參數(shù):mode取值為USE_DIRECT_VIDEO,表示是受限設(shè)備播放模式(例如:手機(jī)),取值為USE_GUI_PRIMITIVE,表示是非受限設(shè)備播放模式(例如:PDA)。參數(shù)arg為承受視頻的窗體或者畫布。(2)設(shè)置視頻是否可見(jiàn)語(yǔ)法格式:publicvoidsetVisible(booleanvisible)參數(shù):visible為true表示顯示,為false表示隱藏。在USE_DIRECT_VIDEO模式下,默認(rèn)為隱藏,而在USE_GUI_PRIMITIVE模式下,默認(rèn)為顯示。(3)設(shè)置全屏顯示語(yǔ)法格式:publicvoidsetDisplayFullScreen(booleanb)參數(shù):b為true全屏顯示,為false,則按視頻實(shí)際大小顯示。知識(shí)提煉第二十頁(yè),共二十五頁(yè),2022年,8月28日5.3.3任務(wù)六:響應(yīng)播放事件在任務(wù)五的基礎(chǔ)之上,打開VideoPlayer類,繼續(xù)如下實(shí)現(xiàn)過(guò)程:(1)實(shí)現(xiàn)PlayerListener接口(2)注冊(cè)監(jiān)聽器(3)實(shí)現(xiàn)PlayerListener接口中定義的playerUpdate()方法(4)運(yùn)行測(cè)試第二十一頁(yè),共二十五頁(yè),2022年,8月28日要點(diǎn)提示在媒體播放時(shí)(包括音頻和視頻),MediaAPI接口采用事件機(jī)制檢測(cè)播放器(Player)狀態(tài)的改變,當(dāng)為播放器(Player)注冊(cè)了一個(gè)PlayerListener事件監(jiān)聽器后,任何時(shí)候播放器狀態(tài)的改變都將被系統(tǒng)自動(dòng)捕獲。PlayerListener事件監(jiān)聽器中唯一的方法palyerUpdate()完成對(duì)事件的處理。(1)注冊(cè)PlayerListener監(jiān)聽器的方法如下:publicvoidaddPlayerListener(PlayerListenerplayerListener)小提示:注冊(cè)對(duì)象是播放器(Player)類的實(shí)例。(2)事件處理方法palyerUpdate()的語(yǔ)法格式如下:publicvoidplayerUpdate(Playerplayer,Stringevent,ObjecteventData)參數(shù)說(shuō)明:player:產(chǎn)生事件的播放器。event:表明了播放器在某種狀態(tài)下產(chǎn)生的事件。取值如下:CLOSED:播放器關(guān)閉時(shí)產(chǎn)生。DEVICE_AVAILABL:當(dāng)系統(tǒng)或者其他高優(yōu)先級(jí)程序占用設(shè)備時(shí)產(chǎn)生。DEVICE_UNAVAILABLE:當(dāng)系統(tǒng)或者其他高優(yōu)先級(jí)程序釋放設(shè)備時(shí)產(chǎn)生。DURATION_UPDATED:當(dāng)播放器的播放時(shí)間改變時(shí)產(chǎn)生。END_OF_MEDIA:播放完畢時(shí)產(chǎn)生。ERROR:媒體播放出現(xiàn)錯(cuò)誤時(shí)產(chǎn)生。STARTED:開始播放時(shí)產(chǎn)生。STOPPED:停止播放時(shí)產(chǎn)生。VOLUME_CHANGED:調(diào)節(jié)音量時(shí)產(chǎn)生。eventData:相關(guān)事件數(shù)據(jù)。第二十二頁(yè),共二十五頁(yè),2022年,8月28日本章小結(jié)(管理器Manager類通過(guò)createPlayer()方法創(chuàng)建播放器(Player)。音量控制器VolumeControl和視頻控制器VideoControl,則通過(guò)播放器(Player)的getControl()方法來(lái)獲取。1.播放器(Player)常用方法Realize():獲取播放信息,但是并不獲取播放資源。prefetch():獲取稀有資源,例如聲音設(shè)備,盡量減少播放延時(shí)。setLoopCount():設(shè)置播放循環(huán)次數(shù)。start():設(shè)置聲音開始播放。stop():聲音停止播放。close():關(guān)閉播放器釋放資源。deallocate():釋放被其占用的稀有資源,例如聲音設(shè)備。2.音量控制器VolumeControl接口上定義的常用方法getLevel():獲得當(dāng)前音量值。如果播放器處于REALIZED狀態(tài)則該方法返回-1。setLevel(intlevel):用于設(shè)置媒體播放聲音的百分比。setMute(booleanmute):用于設(shè)置媒體播放的靜音。getMute():用于獲取媒體播放器是否處于靜音狀態(tài)。3.視頻控制器VideoControl接口上定義的常用方法(1)設(shè)置視頻播放模式語(yǔ)法格式:publicjava.lang.Objectinit

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論