×
Namespaces

Variants
Actions
Revision as of 13:43, 5 June 2009 by tanjaluodes (Talk | contribs)

How to make video splashscreen in Java ME

From Nokia Developer Wiki
Jump to: navigation, search

In those a few lines you will find a code of how to create easy startup splash screen that can play video files of any format (GIF,AVI,mpg,3gpp,real etc..)

video splash class

package GALAXY.videosplash;
 
import java.io.*;
 
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
 
public class Splash extends Canvas implements PlayerListener, Runnable {
private Display display;
private Displayable next;
private String MIMEtype;
private Player player;
private String file;
 
public Splash(Display display, Displayable next, String file,
String MIMEtype) {
 
this.display = display;
this.next = next;
this.file = file;
this.MIMEtype = MIMEtype;
Thread th = new Thread(this);
th.start();
 
}
 
protected void keyPressed(int keyCode) {
stopPlayer();
nextScreen();
}
 
protected void paint(Graphics g) {
int x = g.getClipX();
int y = g.getClipY();
 
int w = g.getClipWidth();
int h = g.getClipHeight();
 
g.setColor(0x0000000);
g.fillRect(x, y, w, h);
 
 
}
 
protected void pointerPressed(int x, int y) {
stopPlayer();
nextScreen();
}
 
protected void showNotify() {
 
}
 
private void nextScreen() {
 
this.display.setCurrent(next);
}
 
public void run() {
try {
resetplayer();
} catch (MediaException ex) {
nextScreen();
}
this.play(file);
 
}
 
public void playerUpdate(Player player, String playerstate, Object object) {
if (playerstate == PlayerListener.END_OF_MEDIA) {
try {
resetplayer();
} catch (MediaException me) {
 
}
player = null;
nextScreen();
}
 
}
 
private void resetplayer() throws MediaException {
if (player != null) {
if (player.getState() == Player.STARTED) {
player.stop();
}
if (player.getState() == Player.PREFETCHED) {
player.deallocate();
}
if (player.getState() == Player.REALIZED ||
player.getState() == Player.UNREALIZED) {
player.close();
}
}
player = null;
}
 
private void play(String url) {
try {
InputStream is = getClass().getResourceAsStream(url);
VideoControl vc;
resetplayer();
// create a player instance
 
player = Manager.createPlayer(is, this.MIMEtype);
 
player.prefetch();
player.addPlayerListener(this);
// realize the player
player.realize();
 
vc = (VideoControl) player.getControl("VideoControl");
if (vc != null) {
 
vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
vc.setDisplayLocation(((this.getWidth() - vc.getDisplayWidth()) /
2),
(this.getHeight() - vc.getDisplayHeight()) /
2);
 
 
vc.setVisible(true);
 
this.setFullScreenMode(true);
}
player.prefetch();
player.start();
this.display.setCurrent(this);
} catch (Throwable t) {
 
player = null;
nextScreen();
}
}
 
private void stopPlayer() {
try {
resetplayer();
} catch (MediaException me) {
 
}
player = null;
 
}
}

second ,this is example of launch it form midelt,note that all I have to do i just create & initiate new instance of videosplash class

MIDLET

{
package GALAXY.videosplash;
 
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
public class SplashMIDlet extends MIDlet {
static SplashMIDlet instance;
 
public SplashMIDlet() {
instance = this;
}
 
public void startApp() {
Display dispaly = Display.getDisplay(this);
 
 
Splash sp = new Splash(dispaly, new Form("Test"),"/PhotoStory.3gp", "video/3gpp");
 
 
}
 
public void pauseApp() {
}
 
public void destroyApp(boolean unconditional) {
}
 
public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}
 
}

MohamedShaheen@ieee.org 2007-11-19

98 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×