首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME MMAPI 播放聲音完整教學:從 WAV 到 MIDI 的跨平台實作

     編輯:J2ME

簡介

Mobile Media API (MMAPI, JSR-135) 是 MIDP 1.0 選配包、MIDP 2.0 核心包。支援格式視裝置而定,常見有 WAV、MIDI、AMR、MP3(部分高階機)。本文以最通用的 JAR 內嵌 WAV 播放 為例。

播放流程三步驟

  1. 取得輸入串流:InputStream is = getClass().getResourceAsStream("/sound.wav");
  2. 建立 Player:Player player = Manager.createPlayer(is, "audio/x-wav");
  3. 啟動播放:player.start();

完整 MIDlet 範例

package sound;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import java.io.*;

public class SoundMIDlet extends MIDlet {
    private Player player;

    public SoundMIDlet() {
        try {
            InputStream is = getClass().getResourceAsStream("/Autorun.wav");
            player = Manager.createPlayer(is, "audio/x-wav");
            player.prefetch(); // 預載緩衝,降低 start() 延遲
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void startApp() {
        if (player != null) {
            try { player.start(); }
            catch (MediaException e) { e.printStackTrace(); }
        }
    }

    public void pauseApp() {
        if (player != null) player.stop(); // 釋放音訊資源
    }

    public void destroyApp(boolean unconditional) {
        if (player != null) { player.close(); player = null; }
    }
}

進階控制

  • 循環播放:player.setLoopCount(3); 或 Player.LOOP_CONTINUOUSLY。
  • 音量控制:VolumeControl vc = (VolumeControl)player.getControl("VolumeControl"); vc.setLevel(50);
  • 播放進度監聽:實作 PlayerListener 處理 END_OF_MEDIA 事件實現自動切換曲目。

跨平台相容性提醒

常見問題排查

  1. 無聲音:確認 prefetch() 成功、音量非靜音、檔案路徑大小寫正確(區分大小寫)。
  2. MediaException:格式不支援或檔案損壞,嘗試降低採樣率/位深重新編碼。
  3. 記憶體不足:大型音檔改用 HTTP 串流播放 Manager.createPlayer("https://host/sound.wav") 避免一次載入 JAR。

結語

掌握 MMAPI 基本播放流程與平台差異,即可為 J2ME 遊戲與應用加入豐富聲音回饋,提升使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
平台支援格式備註
Nokia S40/S60WAV, MIDI, AMR, MP3 (S60 3rd+)WAV 採樣率建議 ≤ 22.05kHz
Sony EricssonWAV, MIDI, AMR, MP3部分舊機型僅支援 8kHz WAV
Moto EZXMIDI, AMRWAV 需轉 AMR
WTK 模擬器所有 Java Sound 支援格式真機測試不可省略