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

J2ME MMAPI 多媒體 API 實戰速查:音效、視訊、錄音、攝影完整範例

     編輯:Java 程式設計入門

前言

MMAPI (JSR 135) 為 J2ME 提供統一多媒體存取介面。本文彙整常見場景完整程式碼範例,涵蓋單音、音樂播放、MIDI 控制、視訊播放、RMS/JAR 資源播放、多播放器同步、音序生成、語音錄製、攝影擷取,供開發者直接參考。

核心範例彙總

1. 播放單音

Manager.playTone(ToneControl.C4, 5000, 100); // 頻率、持續毫秒、音量

2. 簡單媒體播放 (HTTP 串流)

Player p = Manager.createPlayer("https://server/music.mp3");
p.setLoopCount(5);
p.start();

3. 進階播放控制 (音量、起始時間、預緩衝)

Player p = Manager.createPlayer("https://server/music.mp3");
p.realize();
VolumeControl vc = (VolumeControl)p.getControl("VolumeControl");
if (vc != null) vc.setLevel(100);
p.setMediaTime(5 * 1000000L); // 5 秒
p.prefetch();
p.start();
// PlayerListener 處理 END_OF_MEDIA 循環播放...

4. MIDI 速度控制

Player p = Manager.createPlayer("https://server/tune.mid");
p.realize();
TempoControl tc = (TempoControl)p.getControl("TempoControl");
tc.setTempo(120000); // 120 BPM
p.start();

5. 視訊播放 (GUI 基本型)

Player p = Manager.createPlayer("https://server/movie.mpg");
p.realize();
VideoControl vc = (VideoControl)p.getControl("VideoControl");
if (vc != null) {
    Form form = new Form("video");
    form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));
    Display.getDisplay(midlet).setCurrent(form);
}
p.start();

6. 播放 RMS 儲存的音訊

byte[] data = rs.getRecord(recordID);
InputStream is = new ByteArrayInputStream(data);
Player p = Manager.createPlayer(is, "audio/X-wav");
p.start();

7. 播放 JAR 內嵌媒體 (MIDP 2.0 強制支援 WAV)

InputStream is = getClass().getResourceAsStream("audio.wav");
Player p = Manager.createPlayer(is, "audio/X-wav");
p.start();

8. 多播放器同步 (影音同步)

Player p1 = Manager.createPlayer("https://server/tune.mid");
Player p2 = Manager.createPlayer("https://server/movie.mpg");
p1.realize(); p2.realize();
p2.setTimeBase(p1.getTimeBase()); // p2 同步 p1 時間基準
p1.prefetch(); p2.prefetch();
p1.start(); p2.start();

9. 生成音序 (ToneControl)

byte[] seq = {
    ToneControl.VERSION, 1,
    ToneControl.TEMPO, 30, // 120 BPM
    ToneControl.BLOCK_START, 0,
    ToneControl.C4, 8, ToneControl.C4+2, 8, ... // 音符、音長
    ToneControl.BLOCK_END, 0,
    ToneControl.PLAY_BLOCK, 0, ...
};
Player p = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
p.realize();
ToneControl tc = (ToneControl)p.getControl("ToneControl");
tc.setSequence(seq);
p.start();

10. 語音錄製

Player p = Manager.createPlayer("capture://audio");
p.realize();
RecordControl rc = (RecordControl)p.getControl("RecordControl");
rc.setRecordLocation("file:/tmp/audio.wav");
rc.startRecord();
p.start();
Thread.sleep(5000);
p.stop();
rc.stopRecord();
rc.commit();

11. 攝影擷取

Player p = Manager.createPlayer("capture://video");
p.realize();
VideoControl vc = (VideoControl)p.getControl("VideoControl");
if (vc != null) {
    Form form = new Form("video");
    form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));
    Display.getDisplay(midlet).setCurrent(form);
}
p.start();
// 拍照
byte[] png = vc.getSnapshot(null);

開發提醒

  • 所有網路/捕獲操作需在背景執行緒執行。
  • 資源用畢必須 close()/deallocate() 釋放。
  • 裝置支援格式差異大,發布前務必實機測試目標格式。
  • MIDP 2.0 僅強制支援 WAV(採樣音訊裝置),其他格式視裝置而定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved