Interactive Audioの再生-3

任意ディレクトリに置いたInteractive Audio再生のサンプルコード。

 

本プログラムではBUDAにコピーしたSound data fileを再生している。

 

 

Main.java

 

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URL;
 
import javax.media.Manager;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.bluray.ti.DiscManager;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
public class Main implements Xlet {
    Graphics g = null;
    int x=100, 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);
            hs.requestFocus();
 
            g = hs.getGraphics();
            g.setColor(Color.white);
 
            String media_root = System.getProperty("bluray.vfs.root");
            String buda_root = System.getProperty("bluray.bindingunit.root");
            String BDFileName = media_root + "BDMV" + File.separator + "AUXDATA" + File.separator +
            "sound.bdmv";
 
            String orgID = (String) xc.getXletProperty("dvb.org.id");
            String discID = DiscManager.getDiscManager().getCurrentDisc().getId();
            String BUDAFileName = buda_root+File.separator+orgID+File.separator+discID+File.separator+"sound.bdmv";
            // BUDAにファイルをコピー
            copyFile( BDFileName, BUDAFileName );
            // BDメディア上のsoundファイルを再生
            Manager.createPlayer(new URL("file://"+BDFileName)).start();
            Thread.sleep(1000);
            // BUDA上のsoundファイルを再生
            Manager.createPlayer(new URL("file://"+BUDAFileName)).start();
        } catch (Exception e){
            g.drawString(e.toString(), x, y); y+=50;
        }
    }
    public void startXlet(){}
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){ }
    boolean copyFile( String BDFileName, String BUDAFileName ){
        File src = new File(BDFileName);
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(src);
            File dst = new File(BUDAFileName);
            out = new FileOutputStream(dst);
 
            byte[] buff = new byte[1024*32];
            long len;
            for( ; -1 != (len = in.read(buff)) ; ){
                out.write(buff, 0, (int)len);
            }
            out.close();
            in.close();
        } catch (Throwable e) {
            g.drawString(e.toString(), x, y); y+=50;
            return false;
        }
        return true;
    }
}

 


関連する項目

返信を残す

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