Title状態遷移イベントの取得

Titleの状態遷移イベント(TitleContextEvent)を取得するサンプルコード。
本コードをTitle unbound application用設定と組み合わせることで、再生対象Titleの状態遷移に伴うイベントを画面に表示させることが可能。

 

Monitor.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
 
import javax.tv.service.SIManager;
import javax.tv.service.selection.ServiceContextEvent;
import javax.tv.service.selection.ServiceContextFactory;
import javax.tv.service.selection.ServiceContextListener;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.bluray.net.BDLocator;
import org.bluray.ti.Title;
import org.bluray.ti.selection.TitleContext;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
// ServiceContextListenerを実装
public class Monitor implements Xlet, ServiceContextListener {
    int x=100, y=100;
    Graphics g = null;
    public void initXlet(XletContext xc){
        try {
            Font font = new Font(null, java.awt.Font.BOLD, 48);
            HScene hs= HSceneFactory.getInstance().getFullScreenScene(
                    HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
            hs.setFont(font);
            hs.setVisible(true);
            g = hs.getGraphics();
            g.setColor(Color.white);
			// TitleContextの取得
            TitleContext tc = (TitleContext) ServiceContextFactory.getInstance().getServiceContext(xc);
            // TitleContextに関するイベントリスナーに自身を登録
            tc.addListener(this);
            // Title#1を起動
            SIManager sim = SIManager.createInstance();
            Title t = (Title)sim.getService(new BDLocator("bd://1"));
            tc.select(t);
        } catch (Throwable thr){
        }
    }
    public void startXlet(){    }
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){}
 
    public void receiveServiceContextEvent(ServiceContextEvent arg0) {
        g.drawString(arg0.getClass().toString(), x, y); y+=50;
    }
}

関連する項目

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください