マスクされたキーの入力イベントの取得

UOMaskTableでマスクされた再生制御キーが入力されたイベントを取得するサンプルコード。
本サンプルでは、早送りキーと早戻しキーがマスクされていることを前提として、それらのキーが押された場合にマスクされていることを画面に表示する。

 

Main.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
 
import javax.media.Manager;
import javax.media.Player;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.bluray.media.UOMaskTableChangedEvent;
import org.bluray.media.UOMaskTableControl;
import org.bluray.media.UOMaskTableListener;
import org.bluray.media.UOMaskedEvent;
import org.bluray.net.BDLocator;
import org.davic.media.MediaLocator;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
public class Main implements Xlet, UOMaskTableListener {
    Graphics g = null;
    int x=50, y=100;
 
    public void initXlet(XletContext xc){
        try {
            HScene hs= HSceneFactory.getInstance().getFullScreenScene(
                    HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
            hs.setFont(new Font(null, java.awt.Font.BOLD, 48));
            hs.setVisible(true);
 
            g = hs.getGraphics();
            g.setColor(Color.white);
 
            Player player = Manager.createPlayer(new MediaLocator(new BDLocator("bd://1.PLAYLIST:00000")));
            // UOMaskTableControlを取得
            UOMaskTableControl umtc = (UOMaskTableControl) player.getControl("org.bluray.media.UOMaskTableControl");
            // リスナーを登録
            umtc.addUOMaskTableEventListener(this);
            player.start();
        } catch (Exception e){
        }
    }
    public void startXlet(){}
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){ }
    // リスナーを実装
    public void receiveUOMaskTableChangedEvent(UOMaskTableChangedEvent e) {}
    public void receiveUOMaskedEvent(UOMaskedEvent e) {
        String s = "ここでの";
        // どのキーがマスクされていたかをチェック
        if( e.getUOMaskPosition() == UOMaskTableControl.FORWARD_PLAY_MASK_INDEX )s += "早送りは";
        if( e.getUOMaskPosition() == UOMaskTableControl.BACKWARD_PLAY_MASK_INDEX )s += "早戻しは";
        g.drawString(s+"禁止", x, y); y+=50;
    }
}

関連する項目

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.