使用J2ME MMAPI開發(fā)移動(dòng)多媒體應(yīng)用技術(shù)
2007/09/14
一、 引言 
        圖一:Data Source工作過程
  javax.microedition.media.protocol.DataSource提供了MMAPI的Data Source的支持。 
          
          
            2、 處理媒體數(shù)據(jù)內(nèi)容的過程 
          
            處理媒體數(shù)據(jù)內(nèi)容的過程通常需要對(duì)媒體數(shù)據(jù)進(jìn)行解釋和解碼,并且還需要認(rèn)別該媒體的輸出設(shè)置的類型,如是音頻設(shè)置或者視頻設(shè)置。舉個(gè)例子,當(dāng)DataSource從某媒體數(shù)據(jù)源上獲取一MP3媒體數(shù)據(jù),并將其傳送給處理媒體數(shù)據(jù)內(nèi)容過程,此過程首先對(duì)這個(gè)MP3媒體數(shù)據(jù)進(jìn)行解析和解碼,同時(shí)檢測(cè)該MP3媒體為音頻數(shù)據(jù),打開裝置的音頻設(shè)備,將解析和解碼后的媒體數(shù)據(jù)直接傳送到裝置的音頻設(shè)備緩沖中,由該音頻設(shè)備根據(jù)緩沖區(qū)中的數(shù)據(jù)內(nèi)容產(chǎn)生音頻信號(hào)。 
          
          
            MMAPI使用Player來處理媒體數(shù)據(jù)內(nèi)容。一個(gè)Player是javax.microedition.media.Player接口的一個(gè)實(shí)現(xiàn)實(shí)例,它從Data 
          Source中讀取媒體數(shù)據(jù)、解析和解碼數(shù)據(jù)以及識(shí)別媒體輸出設(shè)備和傳送媒體數(shù)據(jù)到輸出設(shè)備等。Player提供了一套方法去控制媒體的重放和同步。 
          
          
            MMAPI還提供了一個(gè)或多個(gè)Controls來調(diào)整player的行為,可以在player從媒體轉(zhuǎn)換數(shù)據(jù)的時(shí)候從一個(gè)player實(shí)例取得并且使用Controls。我們可以通過Player中提供的一些特殊的Controls訪問一些特殊的媒體類型。Controls由javax.microedition.media.Control接口實(shí)現(xiàn)。
          
            3、 Manager 
          
            J2ME為了實(shí)現(xiàn)對(duì)DataSource和Player有效管理,使用了工廠機(jī)制,由Manager來負(fù)責(zé)創(chuàng)建Player和DataSource。這樣的機(jī)制在JAVA中到處可見,如JDBC中的DriverManager,這里我就不對(duì)這種機(jī)制進(jìn)行介紹了。Manager不僅可以從DataSource中創(chuàng)建Player,而且還可以從本地或InputStream中創(chuàng)建Player。圖二展示了MMAPI整體結(jié)構(gòu)圖。 
        
 
        圖二:MMAPI整體結(jié)構(gòu)圖
三、 使用MMAPI 
          
            MMAPI提供的類和接口都在javax.microedition.media中,在程序中使用MMAPI時(shí),首先應(yīng)該引用這些包,否則程序無法編譯。 
          
          
            每個(gè)MMAPI程序都需要?jiǎng)?chuàng)建一個(gè)Player對(duì)象,前面我們已經(jīng)介紹過,MMAPI使用Manager的CreatePlayer函數(shù)來創(chuàng)建Player對(duì)象,該函數(shù)有三個(gè)版本,其格式如下: 
            
 
         
        圖三:狀態(tài)轉(zhuǎn)換圖
四、 播放常見媒體的方法 
          
            1.播放單音與序列音 
          
            如果要播放一個(gè)單音一次,可使用: 
          
            Manager.playTone(note,duration,volume); 
          
            如果要播放序列音,則必須使用ToneControl。使用一個(gè)特別的定位器來創(chuàng)建一個(gè) Player對(duì)象,獲得ToneControl,設(shè)置其命令序列,然后啟動(dòng)播放器,如: 
        
 
         
         
        賽迪網(wǎng) 中國(guó)信息化(industry.ccidnet.com)
| 移動(dòng)應(yīng)用領(lǐng)域等待挖掘的金礦 2007-09-13 | 
| 電信增值產(chǎn)業(yè)升級(jí)在即 2007-09-12 | 
| 手機(jī)廣告:即將被開掘的金礦 2007-09-11 | 
| Tom退市是否會(huì)引起SP退市連鎖反應(yīng) 2007-09-11 | 
| 飛信“飛”往何處? 2007-09-10 |