任意ディレクトリに置いた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;
}
}
関連する項目
- Interactive Audioの再生: sound.bdmvの再生
- Interactive Audioの再生-2: JARファイル中のSound data fileの再生