Hi
I want to capture and record a video on my nokia n73.and for that i have got one code but when i run this code on my mobile phone it dont work.
I am submitting my code can some body please tell me what i need to change.
Thanks
Vineet
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.RecordControl;
import java.io.ByteArrayOutputStream;
public class VideoMIDlet extends MIDlet implements CommandListener
{
private Display display;
private Form form;
private Command exit, back, capture, camera,stopRecord,Record;
private Player player;
private VideoControl videoControl;
private Video video;
private RecordControl rControl = null;
ByteArrayOutputStream bos = null;
public VideoMIDlet()
{
exit = new Command("Exit", Command.EXIT, 0);
camera = new Command("Camera", Command.SCREEN, 2);
back = new Command("Back", Command.BACK, 0);
capture = new Command("Capture", Command.SCREEN, 2);
Record = new Command("Record", Command.SCREEN, 2);
stopRecord = new Command("stopRecord", Command.SCREEN, 3);
form = new Form("Capture Video");
form.addCommand(camera);
form.setCommandListener(this);
}
public void startApp()
{
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void commandAction(Command c, Displayable s)
{
if (c == exit)
{
destroyApp(true);
notifyDestroyed();
}
else if (c == camera)
{
showCamera();
}
else if (c == back)
display.setCurrent(form);
else if (c == capture)
{
video = new Video(this);
video.start();
}
else if (c == Record)
{
try
{
RecordControl rControl = (RecordControl)player.getControl("RecordControl");
if (rControl == null) throw new Exception("No Record control found");
bos = new ByteArrayOutputStream();
rControl.setRecordStream(bos);
rControl.startRecord();
recording = true;
}
catch (Exception ioe) { }
//catch (MediaException me) { }
}
else if (c == stopRecord)
{
try
{
rControl.stopRecord();
rControl.commit();
recording = false;
}
catch (IOException ioe) { }
//catch (MediaException me) { }
}
}
public void showCamera()
{
try
{
//Form mcanvas = new Form("camera");
player = Manager.createPlayer("capture://video");
player.realize();
VideoControl vc = (VideoControl)player.getControl("VideoControl");
Canvas canvas = new VideoCanvas(this, videoControl);
//mcanvas.addCommand(back);
canvas.addCommand(capture);
//mcanvas.addCommand(Record);
//mcanvas.addCommand(stopRecord);
canvas.setCommandListener(this);
display.setCurrent(canvas);
player.start();
}
catch (IOException ioe) { }
catch (MediaException me) { }
}
private boolean recording = false;
class Video extends Thread
{
VideoMIDlet midlet;
public Video(VideoMIDlet midlet)
{
this.midlet = midlet;
}
public void run()
{
captureVideo();
}
}
public void captureVideo()
{
try
{
byte[] raw = videoControl.getSnapshot(null);
Image image = Image.createImage(raw, 0, raw.length);
form.append(image);
display.setCurrent(form);
player.close();
player = null;
videoControl = null;
}
catch (MediaException me) { }
}
}
****************************************************************
import javax.microedition.lcdui.*;
import javax.microedition.media.MediaException;
import javax.microedition.media.control.VideoControl;
public class VideoCanvas extends Canvas {
private VideoMIDlet midlet;
public VideoCanvas(VideoMIDlet midlet, VideoControl videoControl) {
int width = getWidth();
int height = getHeight();
this.midlet = midlet;
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
try {
videoControl.setDisplayLocation(2, 2);
videoControl.setDisplaySize(width - 4, height - 4);
} catch (MediaException me) {}
videoControl.setVisible(true);
}
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
g.setColor(0x00ff00);
g.drawRect(0, 0, width - 1, height - 1);
g.drawRect(1, 1, width - 3, height - 3);
}
}

Reply With Quote



