JMF Playerの再生の状態遷移イベント(ControllerEvent)を取得するサンプルコード。
これを使うことで、再生開始や再生終了などの状態変化を捉えることができる。手順は以下のとおり。
これを使うことで、再生開始や再生終了などの状態変化を捉えることができる。手順は以下のとおり。
- イベントを受け取るinterfaceであるjavax.media.ControllerListenerを実装
- JMFプレーヤーに、addControllerLisnterで先ほどのlistenerを指定
- 状態遷移毎に先ほどのlistenerにcontrollerUpdateメソッドが呼び出されるので、渡されるイベントの型を調べる。
なお、Movie PlayListだけでなく、Sound data fileなどJMF Playerを使うものであれば何でも使用可能である。
Main.java
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.Player;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import org.bluray.net.BDLocator;
import org.davic.media.MediaLocator;
public class Main implements Xlet, ControllerListener {
public void initXlet(XletContext context){
try {
BDLocator loc = new BDLocator("bd://1.PLAYLIST:00000");
MediaLocator ml = new MediaLocator(loc);
Player player = Manager.createPlayer(ml);
player.addControllerListener(this);
player.start();
} catch(Throwable thr) {
}
}
public void controllerUpdate(ControllerEvent arg0) {
}
public void startXlet(){ }
public void pauseXlet(){ }
public void destroyXlet(boolean unconditional){ }
}
ちなみに、PS3で実行した際に、取得できたイベントは以下のとおりである。
Movie PlayListの場合
javax.media.TransitionEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.DurationUpdateEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.DurationUpdateEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent
sound.bdmvの場合
javax.media.TransitionEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent