Namespaces
Variants
Actions
Revision as of 06:42, 27 August 2012 by hamishwillee (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Como fazer um player de Vídeo em Java ME

Jump to: navigation, search
MultiMediaTile.png
Dados do artigo

Artigo
Tradução:
Última alteração feita por hamishwillee em 27 Aug 2012

Nestas poucas linhas você vai encontrar um código de como criar uma fácil tela de inicialização que pode reproduzir arquivos de vídeo de qualquer formato (GIF, AVI, MPG, 3GPP, real etc.)

Classe do player de vídeo

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();
// Cria a instância do player
 
player = Manager.createPlayer(is, this.MIMEtype);
 
player.prefetch();
player.addPlayerListener(this);
// inicia o 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;
 
}
}

segundo, este é o exemplo de lançá-lo na forma de MIDelt, note que tudo o que tenho que fazer é apenas criar e iniciar a nova instância da classe videosplash

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;
}
 
}
202 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved