MMAPI - Problemas na hora do comando snapshoot

Pessoal,

No meu aplicativo faço um acesso a camera. A camera aparece no aplicativo, mas quando dou o comando de capture (getSnapshot) ele lança o exception: javax.microedition.media.MediaException: Timed out while making a Camera Snapshot.


byte[] raw = videoControl.getSnapshot(null); // Exception aqui
//byte[] raw = videoControl.getSnapshot("encoding=png"); //Tentei assim tambem
image = Image.createImage(raw, 0, raw.length); 

Alguem tem alguma idéia do que pode ser?

Valew

Ninguem???

Vc é muito apressado, ainda mais para uma dúvida tão esotérica.

RSRSRS…verdade.
Só pra saber…
valew

Fala galera…
Alguem …???
Valew

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