以下展示在 J2ME MIDP 環境下播放 WAV 格式音效的標準流程,涵蓋資源載入、Player 建立、預讀緩衝與播放啟動四大關鍵步驟:
try {
// 1. 以輸入串流形式獲取封裝在 JAR 內的音效資源
InputStream is = getClass().getResourceAsStream("/ringin.wav");
// 2. 建立 Player 物件,指定 MIME 型別為 audio/x-wav
Player p = javax.microedition.media.Manager.createPlayer(is, "audio/x-wav");
// 3. 預讀緩衝:預先載入音效資料至播放緩衝區,降低播放延遲
p.prefetch();
// 4. 啟動播放
p.start();
} catch (IOException ex) {
// 處理 I/O 異常:資源檔案遺失、讀取失敗等
ex.printStackTrace();
} catch (MediaException ex) {
// 處理媒體格式不支援、編解碼器錯誤等媒體層異常
ex.printStackTrace();
}
使用 getClass().getResourceAsStream() 而非檔案系統路徑,確保音效檔案隨 MIDlet 套件打包於 JAR 內,實現跨裝置部署一致性。資源路徑以 / 開頭表示從 JAR 根目錄查找。
createPlayer() 返回後,Player 處於此狀態,尚未載入媒體資料prefetch() 後進入,完成資料緩衝與解碼器初始化start() 後正式播放生產環境建議監聽 PlayerListener 事件,根據狀態變化動態更新 UI(如顯示載入進度、播放完成回調)。
分離捕獲 IOException(資源層)與 MediaException(媒體層),針對性記錄錯誤日誌並提供使用者友善提示。避免使用空 catch 區塊吞沒異常,導致除錯困難。
prefetch() 造成卡頓p.getControl("VolumeControl") 實現動態音量調節