面對眾多媒體格式、儲存設備與傳輸協議,J2ME 提供 Mobile Media API (MMAPI) 統一播放/錄製介面。
DataSource 知曉如何從原始位置(檔案、擷取裝置、流服務)讀取媒體資料並傳給 Player。支援 HTTP、RTP 等流式協議。javax.microedition.media.protocol.DataSource 提供支援。圖1 展示工作流程。
圖1:DataSource 工作流程
Player 從 DataSource 讀取資料,解析解碼,識別輸出裝置(音訊/視訊),傳送資料至裝置緩衝區。提供播放控制與同步方法。javax.microedition.media.Player 介面實現。
Player 可提供一或多個 Control(如 ToneControl、VideoControl),實現 javax.microedition.media.Control,允許在轉換過程中動態調整。
採工廠模式(似 JDBC DriverManager),Manager 負責創建 Player 與 DataSource。三個 createPlayer 多載:
createPlayer(String locator):URL 字串指定協議與位置,Manager 解析建立 DataSource、推斷內容類型、創建對應 Player。createPlayer(DataSource source):已知 DataSource。createPlayer(InputStream stream, String type):輸入流 + MIME 類型。圖2 展示 MMAPI 整體架構圖。
圖2:MMAPI 整體架構圖
程式須先 import javax.microedition.media.*。範例:Player pMP3 = Manager.createPlayer("https://www.xxx.com/111.mp3")。無法確定類型時拋 MediaException。