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

BD-J 開發入門(上):藍光光碟 Java 應用程式環境與第一支 Xlet

     編輯:J2ME

藍光播放器內建 Java ME 平台稱為 BD-J(Blu-ray Disc Java),基於 CDC/Foundation Profile/Personal Basis Profile,並整合 GEM/MHP、Java TV、BD-J 專屬 API。本文為系列首篇,涵蓋硬體需求、平台能力、API 架構、配置檔版本、Xlet 生命週期,並帶領讀者撰寫第一支在 PS3 上執行的 BD-J 應用。

開發環境硬體需求

  • Windows Vista/XP 桌機或筆電(Mac/Linux 工具鏈不成熟,建議 Boot Camp 跑 Windows)
  • 顯存 ≥256 MB 獨顯(GPU 解碼 1080p)
  • 1920×1080 顯示器
  • 藍光燒錄器(建議買附 BD-RE 可擦寫碟)
  • 約 $500 桌機 / $1000 筆電可編譯燒錄,但播放需更高階硬體

驗證工具:CyberLink BD Advisor(圖 2)

Java 平台分層 CyberLink Advisor 檢測結果

BD-J 平台能做什麼?

  • 繪製文字、圖形、動畫疊加在視頻上(字幕、UI、遊戲)
  • 互動選單:響應遙控器、切換標題/章節、啟用獎勵內容
  • 視頻控制:啟動播放、First Playback、畫中畫
  • 網路存取:下載額外內容、電子商務
  • 本地儲存:64 KB 永久儲存 + 虛擬檔案系統(Profile 1.1+,256MB~1GB)
  • 跨碟片持久化:盒裝影集跨碟保持遊戲進度/解鎖狀態

BD-J 互動選單範例

BD-J API 堆疊架構

BD-J API 堆疊

BD-J 專屬套件 (org.bluray.*)

套件用途
org.bluray.application光碟插入/彈出事件通知
org.bluray.media媒體控制:PiP、字幕、音軌
org.bluray.net藍光定位器,選擇標題用
org.bluray.storage查詢播放器可用儲存空間
org.bluray.system系統暫存器存取
org.bluray.ti標題資訊與中繼資料
org.bluray.ui視頻幀同步動畫、進階 UI
org.bluray.vfs虛擬檔案系統操作

GEM/MHP、Java TV、PBP/Foundation/CDC 套件

繼承自數位電視、機頂盒標準,包含 org.davic.*、org.dvb.*、org.havi.ui、javax.tv.*、java.awt、java.net、javax.microedition.io 等,功能相當於 Java SE 1.3 子集(無 JDBC、Swing、滑鼠導向 AWT)。

藍光配置檔版本

版本代稱關鍵需求
Profile 1.0—基礎 BD-J 支援
Profile 1.1Bonus ViewPiP + 虛擬檔案系統 ≥256 MB
Profile 2.0BD-LiveProfile 1.1 全部 + 網路連線 + VFS ≥1 GB

Xlet 生命週期

實作 javax.tv.xlet.Xlet(注意:從 Java TV 匯入,非 javax.microedition.xlet)。

Xlet 狀態圖

  1. Loaded:建構子執行完
  2. Paused:initXlet(context) 完成,等待啟動
  3. Active:startXlet() 執行中,可在 Paused↔Active 間多次切換
  4. Destroyed:destroyXlet(unconditional) 清理資源

startXlet() 是檢查網路、資源的最佳時機。

第一支 BD-J 應用:在螢幕顯示文字

package test;

import javax.tv.xlet.*;
import java.awt.*;
import org.havi.ui.*;

public class FirstBDJApp implements Xlet {
    private static Font font;
    private HScene scene;
    private Container gui;
    private String text = "My first BD-J app running on the PS3!";

    public void initXlet(XletContext context) {
        font = new Font(null, Font.PLAIN, 48);
        scene = HSceneFactory.getInstance().getDefaultHScene();
        gui = new Container() {
            public void paint(Graphics g) {
                g.setFont(font);
                g.setColor(new Color(10, 10, 10));
                g.fillRect(20, 20, getWidth() - 40, getHeight() - 40);
                g.setColor(new Color(245, 245, 245));
                int w = g.getFontMetrics().stringWidth(text);
                g.drawString(text, (getWidth() - w) / 2, 500);
            }
        };
        gui.setSize(1920, 1080);
        scene.add(gui, BorderLayout.CENTER);
        scene.validate();
    }

    public void startXlet() {
        gui.setVisible(true);
        scene.setVisible(true);
    }

    public void pauseXlet() {
        gui.setVisible(false);
    }

    public void destroyXlet(boolean unconditional) {
        scene.remove(gui);
        scene = null;
    }
}

無 Swing 元件,直接用 AWT Graphics 繪字。編譯打包成 JAR,燒錄到 BD-RE,放入 PS3 即可執行(圖 6)。

PS3 執行畫面

下一篇預告

第二部分將介紹完整開發環境搭建(BD-J SDK、模擬器、燒錄流程)與遙控器事件處理範例。

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