四、
研究過程
1.
設備及工具
2.
使用Java在實機上開發
3.Smartphone
上之即時影音服務
4.
SIP for J2ME
1.
設備及工具
back
設
備:
・神達 Mio 8390 行動電話
作業系統:
Microsoft Smartphone 2003 (內建支援J2ME)
開
發工具:
・Microsoft的eMbedded Visual C++ 4.0(SP3)
・Microsoft SDK for Windows Mobile 2003-based Smartphones
(內含Smartphone模擬器)
・Microsoft ActiveSync 3.7.1 (電腦和Smartphone間的連線)
・Microsoft ActiveSync Remote Display
(包含在Windows Mobile Developer Power
Toys中,可由電腦經ActiveSyn連線,遠端接收Smartphone模擬器的畫面)
・J2ME Wireless Toolkit 2.1 (含J2ME
APIs,及java手機模擬器)
・Java Media Framework 2.1.1e (java的多媒體處理)
・JSR180 Reference Implementation package
(Nokia開發的SIP API for J2ME,含Nokia的手機模擬器)
2.
使用Java在實機上開發
back
當拿到實機(神達Mitac Mio
8390)後,由於以下3點因素,我們決定將開發工具由eMbedded Visual C++轉換至java的J2ME Wireless
Toolkit 2.1:
1.
desktop及server組使用java作為開發語言:
由於java的跨平台特性,因此使用java可在desktop及server組已建立的基礎上進行,可減少開發時間,並方便和desktop及
server組整合。
2.
eMbedded Visual C++的文件資訊不足:
eMbedded Visual
C++文件中,對於GUI介面的說明不足,且Smartphone不像個人電腦或PDA,並沒有文字模式的console介面,因此程式的傳輸及錯誤訊息
難以檢查。而J2ME上的GUI設計和J2SE類似,較易使用。且J2ME Wireless Toolkit
2.1中的KToolbar及模擬器,提供較便利的開發環境。
3.
Smartphone手機對J2ME的支援:
包含國內Smartphone廠商在內,大部分Smartphone都有內建對J2ME的支援。除此之外,也有第三方業者提供Smartphone上的
J2ME環境。因此使用java開發Smartphone程式,並不會造成無法支援的問題。
3.Smartphone上之即時影音服務 back
即時影音服務的部分,需要用到的技術有JMF、J2ME以及RTP。JMF是以J2SE環境建構的,而J2ME則有自己的Media
API,叫做Micro Media API,它的架構是以JMF為基礎來設計的,不過此API如同其他的J2ME
API一般較J2SE的小。因此我們是先著手研究JMF,待熟悉了它的架構之後再將之用Micro Media
API套用到Smartphone上。同時,我們也對手機程式的撰寫進行研究。
播放影片檔
JMF的官方文件的說明順序是先從多媒體檔案的播放開始,因此我們的研究也就先從這方面開始著手。
播放多媒體檔案可以用Player或是Processor,在此我們用的是Player。Player所能處理檔案的能力較Processor來的低,但
是其架構較為簡單,因此尚在入門階段的我們採用Player來研究。<註五>
First Step:Create Player
首先,檔案來源也就是所謂的Data
Source必須用一個叫做MediaLocator的物件來「裝」。例如:
String MediaFile =
"http://static.fm.cdpa.nsysu.edu.tw/fun/fun03/FM073_Mouton.mpg";
URL MediaURL = new URL(MediaFile);
MediaLocator mediaLocator = new MediaLocator(MediaFile);
之後,我們便可用此MediaLocator來創造一個Player。例如:
player = Manager.createPlayer(mediaLocator);
Manager物件在JMF中是負責將資源拿來create如Player、Processor、DataSource等的工具,在撰寫JMF的程式中會
常用到。
此時一個Player已經製作出來了,接下來我們利用realize()方法將之Realize。
Second Step:Realize Player
例如: player.realize();
在realize過後,Player就進入Realized狀態。進入Realized狀態後的Player便可以進行圖形介面的建構之類的處理。圖形介
面的建構是利用player.getVisualComponent()方法來擷取player中的影像資源,而介面方面則是利用Java
GUI來自行設計。另外,當Player一但被創造出來後,我們可以用addControllerListener()方法以及實做
ControllerListener物件的方式來製作使用者控制此Player的方法。
Third Step:Prefetch player
上述利用MediaLocator製作Player的動作相當於把錄影帶放進錄影機當中,而prefetch則是讓錄影機磁頭去讀取影帶的動作。
player.prefetch();
prefetch後的Player便進入Prefetched狀態。此時Player便可播放影片了。
Fourth Step:Start player
利用player.start()方法可以播放影片,player.stop()方法則可以停止影片播放。

loading…

playing…
撰寫Player程式時要注意的一點是,一個Data
Source只能製作一個Player或是Processor,同時將一個Data
Source用作多個Player或Processor的來源將只有一個Player或Processor可以執行,其他的會出現錯誤。
擷取Web Cam之影像
我們是將上述撰寫之Player程式的來源檔改成Web Cam的所擷取的影像。
擷取Web
Cam影像的方法,則是先用JMF的CaptureDeviceManager.getDeviceList()方法來對電腦提出找尋Web
Cam的要求。在此我們是提出CaptureDeviceManager.getDeviceList(new
VideoFormat(“YUV”)),只要是符合檔案來源是以YUV編碼的周邊裝置,電腦就會幫我們放入DeviceList中存放,Data
Source就由此Device List中的Web Cam來擷取。

Web Cam
4. SIP for J2ME back
經過研讀文件後,發現不論是J2SE或J2ME,都沒有SIP的相關API。但在Sun的網頁上,有一份�胇hite Paper: SIP and
the Java
Platforms�苤]參考資料2)說明了關於java對sip的支授,將先由客戶廠商進行JSR的規格設計,日後再整合至java的標準中。
JSR(Java Specification
Request),是Sun的合作廠商,因為自己的需求,向Sun提出標準java
API中所沒有的新API架構,或改進舊有的JSR架構。在�胇hite Paper: SIP and the Java
Platforms�苳仍ㄗ魽A有三個JSR計畫,分別針對J2SE、J2EE及J2ME設計SIP的API。其中J2ME的部分,是由Nokia所主導的
�紃SR 180: SIP API for J2ME�苤]參考資料3)。
藉由JSR
180,便可在Smartphone的J2ME環境中,開發SIP的應用程式。目前本組專題進行到這個部分,接著便是加上即時影像傳輸功能,並和
server組的同學進行整合。