This page was last modified 17:08, 24 October 2007.
Como gravar videos em Java ME
From Forum Nokia Wiki
Aqui vai um exemplo de código para gravação de vídeo em Java ME:
dcrocha 19:48, 22 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); } } }
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Is it possible to put picture or video in code? | vemaka | General Symbian C++ | 1 | 2004-10-04 10:02 |
| New 'Setting Up Bluetooth' doc published | seppo_fn | Bluetooth Technology | 40 | 2005-02-01 08:57 |
| Video in the Prototype_4_0_s60_MIDP_Emulator | ninku6a | Mobile Java Media (Graphics & Sounds) | 3 | 2006-03-06 19:10 |
| Video Rotation J2ME | mzeeshan | Mobile Java Media (Graphics & Sounds) | 2 | 2007-12-27 07:10 |
| 请教一下关于nokia手机多媒体文件的存储问题? | fly2048 | Symbian | 3 | 2006-06-15 08:34 |
