Xlet情報の取得

Titleに属するXlet(アプリケーション)に関する情報を取得するサンプルコード。
本サンプルコードでは、次の情報を取得し表示している。
複数Xletが登録されている場合、すべてのアプリに関する情報が表示される。

 

Main.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Enumeration;
 
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.bluray.application.AppAttributes;
import org.dvb.application.AppID;
import org.dvb.application.AppsDatabase;
import org.dvb.application.CurrentServiceFilter;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
public class Main  implements Xlet{
    int x=100, y=100;
    public void initXlet(XletContext context){
        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);
            Graphics g = hs.getGraphics();
            g.setColor(Color.white);
            // アプリケーションデータベースのインスタンスを取得
            AppsDatabase ad = AppsDatabase.getAppsDatabase();
            // 現Titleのアプリケーション属性リストを抽出するためのフィルタを取得
            CurrentServiceFilter csf = new CurrentServiceFilter();
            // アプリケーション属性リストの取得
            Enumeration e = ad.getAppAttributes(csf);
            for( int i=0; e.hasMoreElements(); i++ ){
                // 次のアプリケーション属性を取得
                AppAttributes aa = (AppAttributes)e.nextElement();
                // Application
                AppID aid = aa.getIdentifier();
                g.drawString("["+i+"]", x, y); y+=50;
                g.drawString( "+-organization_id: "+Integer.toHexString(aid.getOID())
                        +",application_id: " + Integer.toHexString(aid.getAID()), x, y); y+=50;
                g.drawString( "+-isServiceBound: "+aa.getIsServiceBound()
                        +",isDiscBound: "+aa.isDiscBound(), x, y); y+=50;
            }
        } catch (Throwable thr){
        }
    }
    public void startXlet(){    }
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){}
}

関連する項目

コメントを残す

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

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