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

MMAPI 開發手機攝像頭應用:VideoControl 兩種顯示模式完整解析

     編輯:J2ME

MMAPI 攝像頭核心類

  • Manager.createPlayer("capture://video") 建立 Player。
  • player.getControl("VideoControl") 取得 VideoControl。
  • VideoControl.initDisplayMode(mode, arg) 設定顯示模式。
  • getSnapshot(null) 取得 PNG 圖片位元組陣列。

兩大顯示模式詳解

模式一:USE_GUI_PRIMITIVE (高階 UI 容器)

  • 適用:Form 等高階 UI 容器。
  • arg:null (單一 UI 平台) 或完整類名字串 (多 UI 平台)。
  • 回傳:對應 UI 元件 (如 Item),直接 form.append()。
  • 預設可見。
Player p = Manager.createPlayer("capture://video");
p.realize();
VideoControl vc = (VideoControl) p.getControl("VideoControl");
if (vc != null) {
    Item videoItem = (Item) vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
    form.append(videoItem); // 當前類繼承 Form
}
p.start();

模式二:USE_DIRECT_VIDEO (低階 Canvas 直接繪製)

  • 適用:Canvas 或子類。
  • arg:Canvas 實例 (this)。
  • 回傳:null。
  • 預設不可見,需呼叫 vc.setVisible(true)。
  • 可調整位置 setDisplayLocation(x, y) 與大小 setDisplaySize(w, h)。
Player p = Manager.createPlayer("capture://video");
p.realize();
VideoControl vc = (VideoControl) p.getControl("VideoControl");
if (vc != null) {
    vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); // 繼承 Canvas
    vc.setVisible(true);
    vc.setDisplaySize(176, 144);
    vc.setDisplayLocation(0, 0);
}
p.start();

畫面屬性查詢方法

  • 來源尺寸:getSourceWidth(), getSourceHeight()
  • 顯示尺寸:getDisplayWidth(), getDisplayHeight()
  • 顯示位置:getDisplayX(), getDisplayY()

注意:setDisplaySize 僅影響預覽畫面大小,不影響 getSnapshot() 取得的原始解析度。

擷取靜態圖片並儲存/上傳

byte[] pngData = vc.getSnapshot(null); // null = PNG 格式
Image img = Image.createImage(pngData, 0, pngData.length);
// 後續可存入 RMS、顯示於 UI、或透過 HTTP 上傳伺服器

創意應用範例

西門子 SX1 遊戲《打蚊子》:背景為攝像頭即時畫面,玩家搖晃手機,遊戲計算移動方向調整蚊子位置與瞄準器,極具創新性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved