キーに関する各種情報の取得

キーに関する各種情報を取得するサンプルコード。

 

キーに関する情報を提供するクラスとしてorg.havi.ui.event.HEventRepresentationが用意されている。
本クラスを使用することで、各キーに関する次の情報を取得できる(付加されていた場合に限る)。
  • キーを示す文字列: Stringクラス
  • キーを示す色: Colorクラス
  • キーのアイコン: Imageクラス

 

このクラスは、主にカラーキーの色を特定するのに使われる。カラーキーの色並びは地域によって異なる(例えばVK_COLORED_KEY_0を発生するカラーキーは日本では青であるが、欧州では赤)ため、この情報を使うことで地域の違いを吸収することが可能である。

 

Main.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
 
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.bluray.ui.event.HRcEvent;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
import org.havi.ui.event.HEventRepresentation;
import org.havi.ui.event.HRcCapabilities;
 
public class Main implements Xlet {
    Graphics g;
    int x = 100, y = 100;
    int[] kc = {
            HRcEvent.VK_COLORED_KEY_0, HRcEvent.VK_COLORED_KEY_1, HRcEvent.VK_COLORED_KEY_2, HRcEvent.VK_COLORED_KEY_3,
            HRcEvent.VK_PLAY , HRcEvent.VK_STOP, HRcEvent.VK_STILL_OFF, HRcEvent.VK_PAUSE,
            HRcEvent.VK_TRACK_NEXT, HRcEvent.VK_TRACK_PREV,HRcEvent.VK_FAST_FWD, HRcEvent.VK_REWIND,
            HRcEvent.VK_UP, HRcEvent.VK_DOWN, HRcEvent.VK_LEFT, HRcEvent.VK_RIGHT, HRcEvent.VK_ENTER, HRcEvent.VK_POPUP_MENU,
            HRcEvent.VK_PG_TEXTST_ENABLE_DISABLE, HRcEvent.VK_SECONDARY_AUDIO_ENABLE_DISABLE,
            HRcEvent.VK_SECONDARY_VIDEO_ENABLE_DISABLE,
            HRcEvent.VK_0, HRcEvent.VK_1, HRcEvent.VK_2, HRcEvent.VK_3, HRcEvent.VK_4, 
            HRcEvent.VK_5, HRcEvent.VK_6, HRcEvent.VK_7, HRcEvent.VK_8, HRcEvent.VK_9,
    };
    public void initXlet(XletContext context){
        try {
            HScene hs= HSceneFactory.getInstance().getFullScreenScene(
                    HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
            g = hs.getGraphics();
            g.setColor(Color.white);
            g.setFont(new Font(null, Font.BOLD, 48));
            hs.setVisible(true);
 
            for(int i = 0; i < kc.length; i++ ){
                HEventRepresentation her = HRcCapabilities.getRepresentation( kc[i] );
                if( her == null ) continue; // キーが存在しなければnull
                int type = her.getType(); // 各種表現の有無を取得
                String s = Integer.toString(kc[i]);
                g.setColor(Color.white);
                if( ( type & HEventRepresentation.ER_TYPE_STRING )>0){ // 文字列表現が存在すれば
                    s = her.getString();
                }
                if( ( type & HEventRepresentation.ER_TYPE_COLOR ) >0){ // 色表現が存在すれば
                    g.setColor(her.getColor());
                }
                if( ( type & HEventRepresentation.ER_TYPE_SYMBOL ) > 0){ // シンボル表現が存在すれば
                    s += "+symbol";
                }
                g.drawString(s, x, y); y+=50;
                if( y > 1000){ y = 100; x +=400;}
            }
        } catch (Throwable thr){
        }
    }
    public void startXlet(){    }
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){}
}

関連する項目

返信を残す

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