⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videocanvas.java

📁 蓝牙视频
💻 JAVA
字号:
package example;

import java.io.OutputStream;
import java.util.Date;

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");
        private String videoPath = null;
	
	/**
	 * 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() {
            videoPath = PATH + getFileName();
            System.err.println(videoPath);
            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(videoPath,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(videoPath);
		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("Message","Recorded in " + videoPath,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);
            }
            
	}
        
        private String getFileName() {
           Date d = new Date();
           String retValue = d.getTime() + "_rec.3gp";
           return retValue;
        }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -