在J2ME中,移動媒體API(MMAPI)是一個可選包,它提供了一個標(biāo)準(zhǔn)的API,可以用來表現(xiàn)和獲得以時間為基礎(chǔ)的媒體。例如聲音軌道和視頻片斷。MMAPI在java社區(qū)進(jìn)程中以JSR-135開發(fā),并且它被設(shè)計(jì)成靈活的和平臺無關(guān)的,它沒有對媒體格式、協(xié)議或者在未來不同設(shè)備支持的特征作任何假設(shè)。MMAPI已經(jīng)在移動設(shè)備上使用,例如,Nokia3650就包含了一個實(shí)現(xiàn)。其它支持MMAPI的設(shè)備可以在“J2ME設(shè)備”中找到。
這篇文章將介紹MMAPI的最新發(fā)展:MMAPI1.1中提出的新的安全考慮、MMAPI和MIDP2.0 Media API之間的不同、J2ME無線工具箱(J2ME Wireless Toolkit)對MMAPI的支持和JSR-234,高級多媒體補(bǔ)充(Advance Multimedia Supplement)。如果你正在尋找一個MMAPI的指南和示例代碼,例如為一個音頻/視頻播放器,請參見“J2ME移動媒體API”和“使用MMAPI拍攝照片”。
MMAPI組件總攬
MMAPI有四個主要的組成部分:
l Player用來播放內(nèi)容。它提供了方法,用來管理播放器的生命周期,和不同的重放特征。
l Manager是媒體的總控制者,它創(chuàng)建播放器。
l DataSource代表一個協(xié)議的控制者,它對應(yīng)用程序開發(fā)者通常是不可見的。這個協(xié)議管理者讀出媒體并放到播放器中進(jìn)行播放。
l Control控制Player和重放操作的不同特征。
MMAPI支持的控制操作
MMAPI在javax.microedition.control包中包含了12種控制操作:
l MetaDataControl用來從媒體數(shù)據(jù)中獲得元數(shù)據(jù)信息。
l MIDIControl提供對播放器表現(xiàn)和傳輸設(shè)備的訪問。
l GUIControl代表一個具有用戶界面組件的控制操作。
l PitchControl升高或降低重放的位置而不改變重放的速度。
l RateControl控制重放的速率。
l TempoControl控制MIDI歌曲的節(jié)奏。
l VolumeControl控制音量。
l VideoControl控制可視內(nèi)容的顯示。
l FramePositioningControl可以對一個視頻幀精確定位。
l RecordControl記錄當(dāng)前被Player播放的是什么內(nèi)容。
l StopTimeControl使應(yīng)用程序可以為一個Player預(yù)先指定一個停止時間。
l ToneControl是一個可以播放用戶自定音調(diào)序列的接口。
必須明白,并不是所有的MMAPI實(shí)現(xiàn)都支持所有的控制操作類型。你可以通過調(diào)用System.getPRoperty(String key)得到一個設(shè)備所支持的控制類型。這個規(guī)范定義如下這些屬性:
l microedition.media.version返回一個代表MMAPI實(shí)現(xiàn)版本的字符串。如果當(dāng)前設(shè)備支持MMAPI,返回“
l supports.mixing如果支持混頻則返回true,否則返回false。
l supports.audio.capture如果支持音頻記錄就返回true,否則返回false。
l supports.video.capture如果支持視頻記錄就返回true,否則返回false。
l supports.recording如果支持錄制就返回true,否則返回false。
l audio.encodings返回一個代表所支持的音頻格式的字符串,如果不支持音頻內(nèi)容則返回“null”。
l video.encodings返回一個代表所支持的視頻格式的字符串,如果不支持視頻內(nèi)容則返回“null”。
l video.snapshot.encodings返回一個代表所支持的圖像格式的字符串,如果不支持視頻快照則返回“null”。
l streamable.contents返回一個代表所支持的流媒體內(nèi)容類型的字符串,以MIME語法。
除了被System.getProperty()支持的屬性外,Manager類還提供了幾個有用的靜態(tài)方法:
l String[] getSupportedContentTypes(String protocol)傳入一個協(xié)議如“http”作為參數(shù),返回這個協(xié)議所支持的內(nèi)容類型。
l String[] getSupportedProtocols(String contentType)傳入一個以MIME語法的內(nèi)容類型如“video/mpeg”,返回可以用來傳遞這種類型的協(xié)議。
MMAPI1.1
MMAPI1.1是MMAPI1.0的延續(xù)和更新。它主要修改了文檔問題,增加了一些新的定義,并且修訂了和MIDP2.0安全框架相關(guān)聯(lián)的文檔。它沒有對類、接口以及方法定義做任何修改。
MMAPI沒有定義它自己的安全框架,但是MMAPI實(shí)現(xiàn)從屬于潛在的Profile和Configuration所提供的安全框架。如果調(diào)用者缺乏合適的安全許可,一些MMAPI方法被定義拋出一個SecurityException。因此,一個MMAPI實(shí)現(xiàn)必須保證:
l 當(dāng)調(diào)用者沒有合適的權(quán)限而執(zhí)行MMAPI實(shí)現(xiàn)中的方法時,要拋出SecurityException。
l 當(dāng)被授予合適的權(quán)限后,其中的方法可能會用到。
MMAPI的安全問題涉及到錄制、網(wǎng)絡(luò)訪問和本地?cái)?shù)據(jù)存儲訪問。錄制關(guān)系到用戶的私有權(quán);應(yīng)用程序可能默默的訪問錄制功能,錄制和分發(fā)私人會話。另外,安全實(shí)踐必須可以在適當(dāng)?shù)奈恢迷L問遠(yuǎn)程和本地資源。為了獲得訪問錄制功能、網(wǎng)絡(luò)和本地?cái)?shù)據(jù)存儲的權(quán)限,一個MMAPI實(shí)現(xiàn)必須獲得實(shí)現(xiàn)制定的合適的權(quán)限。
MMAPI和J2ME無線工具箱2.2
J2ME無線工具2.2版本實(shí)現(xiàn)JSR-135。隨這個工具箱一起發(fā)布的有一個模擬器皮膚,MediaControlSKIN,它主要用于在多媒體的播放和控制。這個模擬器的MMAPI實(shí)現(xiàn)支持一下媒體類型。
MIME類型
描述
audio/midi
MIDI文件
audio/sp-midi
可升級的多音MIDI
audio/x-tone-seq
MIDP2.0音調(diào)序列
audio/x-wav
WAV PCM取樣音頻
image/gif
FIG
video/mpeg
MPEG視頻
video/vnd.sun.rgb565
視頻記錄
MMAPI MIDlets
隨工具箱發(fā)布的還有一些MMAPI的demo。一個特別用戶的demo是Pausing Audio Test,它是mmademo工程的一部分。它展示了一個良好開發(fā)的MMAPI MIDlet應(yīng)該如何運(yùn)轉(zhuǎn)。例如,你必須清楚MIDlets可能會被一些事件中止,如一個來電,如圖1所示。當(dāng)你的MIDlets中止時,它們應(yīng)該釋放比較重要的設(shè)備資源,當(dāng)MIDlet恢復(fù)時,再重新分配或啟動那些資源。當(dāng)一個MIDlet中止時,任何播放器都應(yīng)該停止,如果William Tell Overture穿過一個重要的商務(wù)電話一直播放,你的用戶并不會感謝你。

圖1
MMAPI和MIDP2.0 Media API的比較
MIDP2.0媒體API是MMAPI一個直系的子集,打算提供給那些資源有限運(yùn)行MIDP2.0的設(shè)備,盡管同樣的子集可能被其他需要聲音支持的J2ME Profile采用。這個API實(shí)現(xiàn)了MIDP專家組制定的要求,包括:
l 簡易音頻播放
l 不依賴于任何特定的協(xié)議和內(nèi)容格式
l 支持自定音調(diào)
l 支持普通的媒體流控制,如開始、停止、查找等
l 支持媒體類型特定的控制,如聲音
l 支持容量查詢
因?yàn)檫@些要求,MIDP2.0 Media API和MMAPI有以下不同:
l 如果僅僅是視頻,它不包含視頻或圖像特定的控制操作。
l 不支持多個播放器同時使用一個普通時間基同步播放。
l 不支持通過自定義DataSource的方式自定義協(xié)議,不包含javax.microedition.media.protocol包。
l 使用Manager的一個簡化版本。
MMAPI和高級多媒體補(bǔ)充(Advanced Multimedia Supplements)的比較
JSR-135引入了音頻和視頻的基礎(chǔ)的播放功能。JSR-234,高級多媒體補(bǔ)充,將會通過為高級多媒體功能定義一個可選包支持最近的硬件更新。在J2ME/CLDC環(huán)境中,新的API依賴和增加了MMAPI的特征。提供這個可選包的主要目的是為了更好的支持照相機(jī)和收音機(jī),也為了高級音頻處理。在規(guī)范中描述的一些能力有:
l 支持特定的照相機(jī)控制,如亮度對比、閃光、燈光模式和鏡頭變焦。
l 正確的訪問收音機(jī)和其他基于頻道和頻率的媒體源,包括無線電數(shù)據(jù)系統(tǒng)。
l 高級的音頻處理能力,如均衡器和音頻效果。
l 媒體輸出方式指定,用來選擇音頻是通過喇叭播放還是通過耳機(jī)播放。
總結(jié)
MMAPI可選包為運(yùn)行在MIDP設(shè)備上的應(yīng)用程序,提供了一些宜人的功能,在以前這些功能并不可用。它的可擴(kuò)展架構(gòu)為以后在移動設(shè)備上提供更多的功能創(chuàng)造了機(jī)會。這篇文章描述了MMAPI的主要組成部分,討論了在1.1版本中的變化,并且解釋了MMAPI、MIDP2.0 Media API和高級多媒體補(bǔ)充(Advanced Multimedia Supplements)之間的關(guān)系。如果你想將MMAPI運(yùn)用在實(shí)際中,請下載J2ME無線工具箱2.2,然后研究mmademo和Audiodemo工程。
查看原文
(出處:http://m.survivalescaperooms.com)
|
新聞熱點(diǎn)
疑難解答
圖片精選