package com.ociweb.mmapi;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;
public class VideoMIDlet extends MIDlet implements CommandListener, PlayerListener {
private Player videoPlayer;
private List entryScreen;
private Form busyForm = createBusyForm();
protected void startApp() throws MIDletStateChangeException {
if (entryScreen == null) {
entryScreen = new List("Video", List.IMPLICIT);
entryScreen.append("Full screen", null);
entryScreen.append("Window", null);
entryScreen.setCommandListener(this);
}
Display.getDisplay(this).setCurrent(entryScreen);
}
private void showDisplayInWindow() {
Form videoForm = new Form("Please watch");
videoForm.append("Check this out!");
try {
videoPlayer = Manager.createPlayer("http://localhost/Rabbit2004.mpg");
videoPlayer.addPlayerListener(this);
Display.getDisplay(this).setCurrent(busyForm);
videoPlayer.realize();
VideoControl videoControl = (VideoControl)videoPlayer.getControl("VideoControl");
if (videoControl != null) {
Item videoItem = (Item)videoControl.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
videoControl.setDisplaySize(75, 75);
videoForm.append(videoItem);
videoForm.append("Watch above");
Display.getDisplay(this).setCurrent(videoForm);
}
videoPlayer.start();
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
}
private void showFullScreenDisplay() {
Canvas canvas = new Canvas() {
protected void paint(Graphics g) {
// We won't draw anything ourselves
}
};
Display.getDisplay(this).setCurrent(canvas);
try {
videoPlayer = Manager.createPlayer("http://localhost/Rabbit2004.mpg");
videoPlayer.addPlayerListener(this);
Display.getDisplay(this).setCurrent(busyForm);
videoPlayer.realize();
VideoControl videoControl = (VideoControl)videoPlayer.getControl("VideoControl");
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
videoControl.setVisible(true);
videoPlayer.start();
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
}
protected void pauseApp() {
stopPlayer();
}
private void stopPlayer() {
try {
videoPlayer.stop();
} catch (MediaException e) {
e.printStackTrace();
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
stopPlayer();
}
public void commandAction(Command arg0, Displayable arg1) {
if (entryScreen.getSelectedIndex() == 0) {
Thread fullScreenThread = new Thread() {
public void run() {
showFullScreenDisplay();
}
};
fullScreenThread.start();
} else {
Thread windowThread = new Thread() {
public void run() {
showDisplayInWindow();
}
};
windowThread.start();
}
}
private Form createBusyForm() {
Form form = new Form("Please wait...");
form.append("Loading movie...");
return form;
}
public void playerUpdate(Player player, String event, Object eventData) {
if (event == PlayerListener.END_OF_MEDIA) {
Display.getDisplay(this).setCurrent(entryScreen);
}
}
}