キーに関する各種情報を取得するサンプルコード。
キーに関する情報を提供するクラスとして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){}
}