Categories: Java | How To | Java ME | Code Examples | Multimedia | Video
This page was last modified 11:22, 21 October 2007.
How to record video in Java ME
From Forum Nokia Wiki
Here is a sample code showing how to record video and save recorded files to the file system using Java ME:
dcrocha 01:01, 20 October 2007 (UTC)
package example; import java.io.OutputStream; import javax.microedition.io.Connector; import javax.microedition.io.file.FileConnection; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; 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.Graphics; import javax.microedition.media.Manager; import javax.microedition.media.Player; import javax.microedition.media.PlayerListener; import javax.microedition.media.control.RecordControl; import javax.microedition.media.control.VideoControl; public class VideoCanvas extends Canvas implements PlayerListener, CommandListener { private VideoRecordMIDlet midlet = null; private Command start = new Command("Start",Command.OK,0); private Command stop = new Command("Stop",Command.OK,1); private Command exit = new Command("Exit",Command.BACK,0); private Command play = new Command("Play",Command.OK,2); private String status = "Not initialized"; private Player player = null; private VideoControl control = null; private RecordControl record = null; private boolean recording = false; private FileConnection conn = null; private OutputStream stream = null; private String PATH = System.getProperty("fileconn.dir.videos") + "vi.3gp"; /** * Constructor * * @param midlet */ public VideoCanvas(VideoRecordMIDlet midlet) { System.out.println(PATH); this.midlet = midlet; addCommand(play); addCommand(start); addCommand(stop); addCommand(exit); setCommandListener(this); } public void commandAction(Command c, Displayable arg1) { if(c == start) { recording = true; startRecording(); } else if(c == stop) { stop(); recording = false; } else if(c == play) { recording = false; repaint(); startPlaying(); } else if(c == exit) { midlet.notifyDestroyed(); } } /** * Paint */ protected void paint(Graphics g) { g.setColor(0,0,0); g.fillRect(0,0,getWidth(),getHeight()); } public void startRecording() { try { player = Manager.createPlayer("capture://video"); player.addPlayerListener(this); player.realize(); //setup recording record = (RecordControl)player.getControl("RecordControl"); record.setRecordSizeLimit(300000); conn = (FileConnection)Connector.open(PATH,Connector.READ_WRITE); if(!conn.exists()) conn.create(); stream = conn.openOutputStream(); record.setRecordStream(stream); // Grab the video control and set it to the current display. control = (VideoControl)player.getControl("VideoControl"); if (control != null) { control.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this); control.setDisplaySize(getWidth(),getHeight()); control.setVisible(true); } player.start(); record.startRecord(); } catch(Exception e) { Alert erro = new Alert("Erro",e.toString(),null,AlertType.ERROR); Display.getDisplay(midlet).setCurrent(erro); e.printStackTrace(); } } /** * Start * */ public void startPlaying() { try { player = Manager.createPlayer(PATH); player.addPlayerListener(this); player.realize(); // Grab the video control and set it to the current display. control = (VideoControl)player.getControl("VideoControl"); if (control != null) { control.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this); control.setDisplaySize(176,144); control.setDisplayLocation((getWidth() - control.getDisplayWidth()) / 2,(getHeight() - control.getDisplayHeight()) / 2); control.setVisible(true); } player.start(); } catch(Exception e) { Alert erro = new Alert("Erro",e.getMessage(),null,AlertType.ERROR); Display.getDisplay(midlet).setCurrent(erro); e.printStackTrace(); } } public void stop() { if(player != null) { try { if(recording) { record.stopRecord(); record.commit(); stream.close(); } player.stop(); player.deallocate(); player.close(); player = null; if(recording) { Alert alert = new Alert("Mensagem","Gravado em " + PATH,null,AlertType.INFO); Display.getDisplay(midlet).setCurrent(alert,this); stream = null; } if(conn != null) conn.close(); } catch(Exception e) { } } } public void playerUpdate(Player p, String s, Object o) { if(p.getState() == Player.STARTED) { status = control.getDisplayHeight() + "=" + control.getDisplayWidth(); setTitle(status); } } }
dcrocha 01:01, 20 October 2007 (UTC)
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| CMdaAudioRecorderUtility and AMR on N6630 | stenlik | Symbian Media (Graphics & Sounds) | 3 | 2005-09-06 10:58 |
| RMS deleteRecord in 7210 | gaetan.lefevre | Mobile Java General | 12 | 2003-08-28 19:58 |
| Sending Video MMS problem | stephenclifton | General Symbian C++ | 1 | 2004-08-24 12:37 |
| I have so many questions what to ask~Thanks | e160 | Graphics & Video & Streaming | 0 | 2004-01-28 16:43 |
| 6681 camera flash light - TORCH APPL. | marecekc | General Symbian C++ | 3 | 2006-01-02 18:45 |
