摘要:作為Java 2平臺的微型版,J2ME已經成為一項相當成熟的技術,它可與很多技術融合,如MPEG、RTP、RTCP等。文章重點討論利用現在的J2ME、MPEG及相應的流媒體技術,開發移動設備終端的媒體播放器。
關鍵詞:J2ME;MPEG;RTP;RTCP
引言
技術和計算機技術的迅猛發展,使得人們對手持設備的應用有了更高的要求,人們已不滿足于簡單的通話,收發短信等基本功能,而更多的是要求有多媒體應用,能利用手機進行上網沖浪,3D游戲,播放視頻等。即將來臨的第三代無線網絡將會提供從每秒幾百K bit到幾兆bit不等的數據傳輸率,從而將會有足夠的帶寬來傳輸實時視頻信號和高質量的音頻信號,并允許下載大量的應用和服務軟件。
目前,智能手機的開發平臺主要有:J2ME、BREW和NET。
1 J2ME的體系結構
當Java的版本演進到Java 2時,Sun公司將Java 2技術重新改組成四個不同的版本:針對開發企業服務應用的J2EE(Java 2 Enterprise Edition)、針對普通PC的J2SE(Java 2Standard Edition)、針對嵌入設備及消費類電子產品的J2ME(Java 2 Micro Edition)和智能卡開發的Smart Card。
J2ME將所有的嵌入式設備大體分為兩種:一種是運算功能有限且電力供應也有限的嵌入式設備,另一種是運算能力相對較佳且電力供應比較充足的嵌入式設備。Java引入了“配置”(configuration)概念,把上述第一種定義為有限連接設備配置CLDC(Connected Limited Device Configuration),第二種定義連接設備配置CDC(Connected Device Configuration)m。
MIDP是Mobile Information Device Profile的簡稱,它是CLDC之上,由全球主要手機開發商(如摩托羅拉等)組成。MIDP專家組制定了移動信息設備架構MIDP,它和CLDC同屬于J2ME,用于支持小型信息設備(手機、PDA等)的編程。
所有的MIDP應用程序都繼承自Javax.microedition.midlet對MIDlet的擴展,這也是應用程序稱之為MIDlet的原因。MIDlet在移動設備上運行的完整過程,就是一個M1Dlet狀態轉換的過程。MlDlet的主要狀態包括:暫停、運行、退出。在MIDP的Javax.microedition.midlet包中定義了完整的接口來控制MIDlet狀態的轉換。
2 系統的分析與設計
本項目是手機的一個播放器系統,能夠在任何時間、地點實現多媒體音頻與視頻的播放。本系統只能播放MPEG格式的視頻文件與WAV格式的音頻文件,這是底層開發包所決定的。
本系統具有以下幾個功能模塊:
(1)視頻(MPEG格式)播放模塊。主要采用兩種播放形式:本地播放與網絡播放。本地播放:直接播放手機存儲器里的視頻文件;網絡播放:調用播放網絡服務器里的視頻文件,它在空間上延伸了intemet網絡服務,在時間上更具有靈活性。
(2)音頻(WAV格式)播放模塊。采用兩種播放形式:本地播放與網絡播放。本地播放:直接播放手機存儲器里的音頻文件;網絡播放:調用播放網絡服務器里的音頻文件,它在空間上延伸了internet網絡服務,在時間上更具有靈活性。
(3)抓圖模塊。在播放本地與網絡視頻時,可以隨時抓取感興趣的圖像。
(4)控制模塊。在播放音頻與視頻的同時,有一些基本的控制功能,比如:播放,停止,暫停,增加音量,減小音量等。

圖1所示流程說明如下:系統開始執行時,首先出現一個輸入界面,要求用戶輸入:要訪問的文件所在的服務器IP地址和文件的全稱。當輸入完成之后,系統根據所輸入的服務器IP地址判斷是本地IP還是網絡IP,再播放被訪問的對象。
圖2是一個本地播放視頻或音頻文件的流程圖。系統首先生成一個等待WaitCanvas的對象,之后生成一個等待界面,然后生成一個VideoCanvas對象,用VideoCanvas對象打開用戶所輸入的URL。URL里包括IP地址,端口號(8080)以及被訪問的文件名。如果打開成功則系統進行播放;如果失敗,結束程序。最終關閉MIDlet程序。
圖3所示流程說明:系統首先生成一個WaitCanvas 對象,繼而生成一個等待界面,然后生成一個VideoCanvas對象,用VideoCanvas生成的對象打開用戶輸入的URL。URL里包括IP地址,端口號(8080)以及被訪問的文件名。如果打開成功,系統進行播放;如果失敗,結束程序。最終關閉MIDlet程序。
3 客戶端的實現
手機客戶端MIDlet的設計是本課題的重點,是實現本地與無線播放器應用的關鍵。客戶端MIDlet需要解決的關鍵問題有:MIDlet程序流程控制,界面開發,準確提交用戶請求等。根據需求分析,本項目終端支持系統的客戶端主要面向多媒體手機用戶。下面將針對這類客戶的需求介紹手機客戶端MIDlet的開發過程和主要解決的問題。
3.1 客戶端流程設計
流程說明:系統首先啟動MIDlet,用戶輸入所要訪問服務器的IP和所要播放文件的全稱。如果輸入錯誤,均需重新輸入;如果輸入正確,進行下一個操作。系統根據所輸入的IP地址判斷并進行本地播放或網絡播放。在播放視頻與音頻的過程中,用戶可以進行一系列的操作,比如抓圖等。

3.2 MIDLET主程序的設計與實現
MIDP應用程序的基本執行單元是MIDlet,所以ControlVideo繼承了MIDlet,并使用了以下幾個方法:startApp( ),pauseApp( ),destroyApp( ),commandAction( )以及一個線程PlayImage。主程序所實現的主要功能是,形成—輸入界面,這個界面讓用戶輸入URL。URL里面包含訪問計算機的IP,端口號及所要訪問的播放文件全稱。此外,在界面上還要設置幾個按鈕,比如開始、退出。這是由commandAction( )來控制的,它還控制整個程序的運行,根據用戶輸入打開URL,對播放文件進行控制等等。
3.3 播放控制的設計與實現
播放控制程序VideoCanvas繼承Canvas,使用了以下幾個方法:VideoCanvas( ),initialize( ),paint( ),time2pix( ),open( )等。它主要實現的功能是:對播放的視頻或音頻文件進行一系列的操作比如播放,停止,暫停,增加音量,減小音量。
3.4 播放文件判斷的設計與實現
這里主要是設計一個單獨的類,名稱為VideoType,它先從用戶輸入的URL分析用戶輸入的信息,從中分離出輸入的IP地址,端口號以及文件的名稱,再判別用戶輸入的文件的類型。程序用到以下幾個方法:guessContentType( ),splitURL( )。
3.5 網絡連接等待界面的設計與實現
等待界面的名稱是WaitCanvas,它繼承了Canvas類。它的主要功能是:當用戶輸入IP地址,手機在連接服務器的時候,可能會有一個過程,這時出現一個等待界面。程序用到有以下幾個方法:WaitCanvas( ),void setMessage( ),paint( )。
4 結束語
本文深入研究了J2ME體系結構及其平臺下手機程序MIDP的開發技術,詳細分析了本地終端與無線終端和資源的通信解決方法,并構造了一個ZJ手機多媒體播放器系統,通過該系統,說明了MIDP應用程序開發的流程控制,界面設置與流媒體和視頻壓縮技術。