Ae galera, Vou postar o código todo, pra ver se alguem tem alguma idéia.
import java.io.IOException;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
/**
* @author Rodolfo D Avila Ramos
*/
public class carregamento implements CommandListener {
public static Player player;
public static VideoControl videoControl;
public Video video;
public static Form form;
public static Image image = null;
public static int controlFoto = 0;
public carregamento() {
showCamera();
}
public static void gravarCarregamento() {
lerQRCODE qr = new lerQRCODE();
String code = qr.qr;
System.out.println(code);
}
public void showCamera() {
System.out.println("10");
try {
System.out.println("11");
player = Manager.createPlayer("capture://video");
System.out.println("12");
player.realize();
System.out.println("13");
videoControl = (VideoControl) player.getControl("VideoControl");
System.out.println("14");
Canvas canvas = new VideoCanvas((Entrega) Entrega.app, videoControl);
canvas.addCommand(Entrega.back);
canvas.addCommand(Entrega.capture);
canvas.addCommand(Entrega.gravarDados);
canvas.setCommandListener(this);
System.out.println("15");
Entrega.display.setCurrent(canvas);
System.out.println("16");
player.start();
} catch (IOException ioe) {
System.out.println(ioe);
} catch (MediaException me) {
System.out.println(me);
}
}
public void commandAction(Command c, Displayable d) {
if (c == Entrega.back) {
Display.getDisplay(Entrega.app).setCurrent(new TelaMenu());
} else if (c == Entrega.capture) {
controlFoto = 0;
video = new Video((Entrega) Entrega.app);
Video.videoControl = videoControl;
video.start();
while (controlFoto == 0) {
}
carregamento.player.close();
carregamento.player = null;
carregamento.videoControl = null;
Alert alerta = new Alert("Produto cadastrado.");
Display.getDisplay(Entrega.app).setCurrent(alerta, new TelaMenu());
showCamera();
} else if (c == Entrega.gravarDados) {
video = null;
try {
player.stop();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
carregamento.gravarCarregamento();
Alert alerta = new Alert("Dados Gravados com sucesso.");
Display.getDisplay(Entrega.app).setCurrent(alerta, new TelaMenu());
}
}
Entrega.app é o midlet inicial
import javax.microedition.lcdui.*;
import javax.microedition.media.MediaException;
import javax.microedition.media.control.VideoControl;
public class VideoCanvas extends Canvas {
private Entrega midlet = (Entrega) Entrega.app;
private static final int CB_H = 8; // Control Bar Height
private static final int VB_W = 10; // Video Border Width
private static final int VB_H = 8; // Video Border Height
private int CB_Y = 0; // Control Bar Y location
private int canvasW; // Canvas Width
private int canvasH; // Canvas Height
private int videoW; // Video Display Area Width
private int videoH; // Video Display Area Height
public void setMidlet(Entrega midlet) {
this.midlet = midlet;
}
public Entrega getMidlet() {
return midlet;
}
public VideoCanvas(Entrega midlet, VideoControl videoControl) {
System.out.println("ABRINDO CAMERA");
int width = getWidth();
int height = getHeight();
this.setMidlet(midlet);
canvasW = getWidth();
canvasH = getHeight();
CB_Y = canvasH - CB_H - VB_H - 20;
videoW = canvasW - VB_W * 2;
videoH = CB_Y - VB_H * 2;
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
try {
videoControl.setDisplayLocation(2, 2);
videoControl.setDisplaySize(width - 4, height - 4);
} catch (MediaException me) {
System.out.println("VideoCanvas 9");
}
System.out.println("CAMERA OK");
videoControl.setVisible(true);
}
public void paint(Graphics g) {
g.setColor(0x9090E0);
g.fillRect(0, 0, canvasW, canvasH);
g.setColor(0x202050);
//Video Border
g.drawLine(VB_W - 1, VB_H - 1, videoW + VB_W - 1, VB_H - 1);
g.drawLine(VB_W - 1, VB_H - 1, VB_W - 1, videoH + VB_H - 1);
g.setColor(0xD0D0FF);
//Video Border
g.drawLine(videoW + VB_W, VB_H, videoW + VB_W, videoH + VB_H);
g.drawLine(videoW + VB_W, videoH + VB_H, VB_W, videoH + VB_H);
}
}
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Image;
import javax.microedition.media.MediaException;
import javax.microedition.media.control.VideoControl;
public class Video extends Thread {
Entrega midlet = (Entrega) Entrega.app;
public static Image image = null;
public static VideoControl videoControl=null;
public Video(Entrega midlet) {
this.midlet = midlet;
}
public void run() {
if(videoControl==null){
System.out.println("Video control null");
}else{
System.out.println("Video control ok");
}
try {
System.out.println("Video 5");
byte[] raw = videoControl.getSnapshot("encoding=png");
System.out.println("Video 6 ->" + raw.length + " ");
image = Image.createImage(raw, 0, raw.length);
System.out.println("img - " + image);
Alert al = new Alert("Snapshot", "Here's the snap", image,
AlertType.INFO);
al.setTimeout(2000);
Display.getDisplay(Entrega.app).setCurrent(al);
} catch (MediaException me) {
System.out.println(me);
} catch (NullPointerException ne) {
System.out.println(ne);
}
}
}
Se alguem puder me ajudar, agradeço.
Valew