Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Revision as of 10:49, 29 July 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

How to make video splashscreen in Java ME

From Wiki
Jump to: navigation, search

This code snippet shows how to create a simple splash screen in Java ME that can play play video files of any format (GIF,AVI,mpg,3gpp,real etc.)

Article Metadata
Article
Created: mohamed shaheen (18 Nov 2007)
Last edited: hamishwillee (29 Jul 2013)

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;
//the next screen
private Displayable next;
//the video mime type
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();
 
}
 
//if any button is pressed, finalizes splash screen
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);
 
 
}
 
//for touch screen devices.
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) {
//checks if the video is being rendered.
if (player.getState() == Player.STARTED) {
player.stop();
}
//the player has all resources to execute
if (player.getState() == Player.PREFETCHED) {
//free resources
player.deallocate();
}
//the player obtained the necessary information to acquire the resources (REALIZED) or the player
//has just been created.
if (player.getState() == Player.REALIZED ||
player.getState() == Player.UNREALIZED) {
player.close(); //closes the player
}
}
player = null;
}
 
private void play(String url) {
try {
//gets video from /res folder
InputStream is = getClass().getResourceAsStream(url);
VideoControl vc;
resetplayer();
// create a player instance
 
player = Manager.createPlayer(is, this.MIMEtype);
 
// realize the player
player.realize();
//gets all necessary resources
player.prefetch();
//adds a player listener. annonces player events: stoped, paused, etc
player.addPlayerListener(this);
 
//video control for video rendering
vc = (VideoControl) player.getControl("VideoControl");
//if null, the device probably has no support for video rendering
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.start();
this.display.setCurrent(this);
} catch (Throwable t) {
 
player = null;
nextScreen();
}
}
 
private void stopPlayer() {
try {
resetplayer();
} catch (MediaException me) {
 
}
player = null;
 
}
}

second ,this is the MIDlet example. Note that all I have to do was just to create a 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;
}
 
}
This page was last modified on 29 July 2013, at 10:49.
108 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.

×