小編給大家分享一下Mobile Media API有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
定制網(wǎng)站可以根據(jù)自己的需求進(jìn)行定制,成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)構(gòu)思過(guò)程中功能建設(shè)理應(yīng)排到主要部位公司成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義
Mobile Media API
(MMAPI)為多媒體開(kāi)發(fā)提供了一個(gè)強(qiáng)大,可擴(kuò)充以及簡(jiǎn)單的接口。它有一套規(guī)范的播放和錄制audio
或video的接口。這篇文章是MMAPI概念的一個(gè)概觀以及其類和接口使用的一個(gè)快速教程。
Mobile
Media
API的體系結(jié)構(gòu)
MMAPI基于四個(gè)基本概念:
1。一個(gè)player知道如何去解釋媒體數(shù)據(jù)。舉個(gè)例子,某種類型的player知道如何根據(jù)mp3媒體數(shù)據(jù)產(chǎn)生聲音。另外一個(gè)player
知道如何播放一端QuickTime的movie。javax.microedition.media.Player接口的實(shí)現(xiàn)(implement)既是這里說(shuō)的player。
2。你能用一個(gè)或多個(gè)controls來(lái)調(diào)整player的行為。你可以在player從媒體轉(zhuǎn)換數(shù)據(jù)的時(shí)候從一個(gè)player實(shí)例
取得并且使用controls。比如,你能用一個(gè)VolumeControl來(lái)調(diào)節(jié)一個(gè)采樣音頻的聲音大小。
Controls是javax.microedition.media.Control接口的實(shí)現(xiàn)。詳細(xì)的Control子接口在javax.microedition.media.control包中
3。一個(gè)data
source知道如何從它的原始位置讀取到媒體數(shù)據(jù)給player。媒體數(shù)據(jù)可以被保存在不同的位置,從遠(yuǎn)程服務(wù)器到
資源文件或者RMS數(shù)據(jù)庫(kù)。媒體數(shù)據(jù)可以從原始位置通過(guò)HTTP,像RTP一樣的流式傳輸協(xié)議,或者其他機(jī)制傳輸?shù)絧layer。
javax.microedition.media.protocol.DataSource是MMAPI中所有data
source類的抽象父類。
4。最后,manager把每一個(gè)部件捆綁起來(lái),并且為API提供了切入點(diǎn)。javax.microedition.media.Manager
類包含了
得到Player或DataSource的靜態(tài)方法。
使用MMAPI
你能使用Manager做到的最簡(jiǎn)單的事情是用下面的方法播放一段樂(lè)音(tone):
public
static void playTone(int note,
int duration, int volume) throws
MediaException
播放時(shí)間按毫秒定義好,音量范圍則從0(無(wú)聲)到100(最大聲)。音符用一個(gè)數(shù)字定義,像MIDI一樣,60代表中音C調(diào),
69則是一個(gè)440赫茲的A調(diào)。音符的范圍可以從0到127。playTone()方法適合播放一個(gè)單一的音調(diào)或是很短的模進(jìn)音。
更長(zhǎng)的單聲道模進(jìn)音,你可以用默認(rèn)的樂(lè)音播放器,它可以播放一全部模進(jìn)樂(lè)音。
MMAPI最迷人的的地方體現(xiàn)在Manager的createPlayer方法上,該方法有如下三個(gè)不同的版本:
public
static Player createPlayer(String locator)
throws IOException,
MediaException
public static Player createPlayer(DataSource source)
throws
IOException, MediaException
public static Player createPlayer(InputStream
stream, String type)
throws IOException,
MediaException
得到一個(gè)Player最簡(jiǎn)單的方法是使用第一個(gè)createPlayer方法,僅僅傳遞一個(gè)代表媒體數(shù)據(jù)的字符串就可以了。
舉個(gè)例子,你可以指定一個(gè)網(wǎng)站上的音頻文件:
Player
p =
Manager.createPlayer("http://webserver/music.mp3");
其他createPlayer方法允許你從一個(gè)DataSource或一個(gè)InputStream流創(chuàng)建Player。如果你考慮使用Player,
這三個(gè)方法是真正的三種不同的方式取得media數(shù)據(jù)。一個(gè)InputStream是個(gè)最簡(jiǎn)單的對(duì)象,僅僅是一個(gè)字節(jié)流。而DataSource
就更高級(jí)了點(diǎn),是一個(gè)選擇協(xié)議去訪問(wèn)媒體數(shù)據(jù)的對(duì)象。傳遞一個(gè)位置字符串是個(gè)最好的捷徑:MMAPI會(huì)搞清楚用何種協(xié)議并
為player取得媒體數(shù)據(jù)。
如何使用Player
一旦你成功建立了一個(gè)Player對(duì)象,下一步該做些什么呢?最簡(jiǎn)單的行動(dòng)就是開(kāi)始用start方法重放。然而,只是為了學(xué)到比入門
更深層次的東西,這有利于幫助理解一個(gè)Player的生命周期。這個(gè)周期由四個(gè)狀態(tài)組成。
當(dāng)一個(gè)Player第一次被建立,它的狀態(tài)是UNREALIZED。在為這個(gè)Player設(shè)置了媒體數(shù)據(jù)的位置以后,它的狀態(tài)是REALIZED。
如果Player正在從一個(gè)服務(wù)器的HTTP連接下載并解釋數(shù)據(jù)的時(shí)候,比如Player在Http請(qǐng)求已經(jīng)發(fā)送到服務(wù)器,收到HTTP
響應(yīng)后,而且DataSource準(zhǔn)備好接收audio數(shù)據(jù)的時(shí)候。下一個(gè)狀態(tài)是PREFETCHED,獲得該狀態(tài)的時(shí)機(jī)是該player已經(jīng)讀到
足夠的數(shù)據(jù)而開(kāi)始解釋和運(yùn)算了。最后,當(dāng)數(shù)據(jù)在運(yùn)算完畢后,Player的狀態(tài)變成了STARTED.
Player接口提供了狀態(tài)轉(zhuǎn)換的方法,在狀態(tài)循環(huán)中,無(wú)論前進(jìn)還是后退都有描述。其原因是為了提供給應(yīng)用程序一個(gè)可操作控制。
控制可能會(huì)占用一段時(shí)間。舉個(gè)例子,你可能要將Player的REALIZED狀態(tài)推到PREFETCHED狀態(tài),為了一段聲音可以馬上播放,以響應(yīng)
用戶的操作。
在java
Platform的MMAPI
MMAPI在在java 2
platform中適用于什么樣的情況呢?答案是幾乎任何地方。盡管當(dāng)初MMAPI的設(shè)計(jì)僅僅是基于CLDC,但它可以
在
CLDC和CDC軟件上都可以運(yùn)行得很好。事實(shí)上,MMAPI可以作為輕量選擇用j2se實(shí)現(xiàn)到j(luò)ava media
Framework。
可以支持那些類型的Media文件?
如果你的裝置支持MMAPI的話,那么這個(gè)裝置可以播放什么類型的媒體數(shù)據(jù)呢?支持什么數(shù)據(jù)傳輸協(xié)議?MMAPI并不要求任何指定
的content
type或協(xié)議,但你能在運(yùn)行時(shí)找出程序支持什么類型的數(shù)據(jù),通過(guò)調(diào)用Manager類的getSupportedContentTypes()
方法和getSupportedProtocols()方法。
可能發(fā)生的最糟糕的事情是什么呢?如果你通過(guò)Manager給Player一種不支持的數(shù)據(jù)類型或協(xié)議,它會(huì)拋出個(gè)exception。
你的程序應(yīng)該試圖去從這樣的例外中恢復(fù)過(guò)來(lái),可以顯示些禮貌的信息提示給用戶。
MIDP
2.0的媒體
MIDP 2.0規(guī)范包括了一個(gè)MMAPI的子集。它向上兼容所有API。MIDP
2.0子集有如下特性:
1。只支持音頻回放(錄制)。不包含video控制接口。
2。多Player不能被同步
3。DataSource類和javax.microedition.media.protocol包的其他類沒(méi)有被包括進(jìn)來(lái);
應(yīng)用程序不能實(shí)現(xiàn)他們自己的協(xié)議。
4。Manager類是被簡(jiǎn)化的。
MIDP要求支持樂(lè)音產(chǎn)生和采樣,WAV音頻播放。
以上是“Mobile Media API有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:MobileMediaAPI有什么用
URL地址:http://muchs.cn/article20/iidhjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、全網(wǎng)營(yíng)銷推廣、網(wǎng)頁(yè)設(shè)計(jì)公司、商城網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)