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

📄 cameracanvas.java

📁 j2me编制的摄像头程序,虽然比较简单
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.IOException;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class cameraCanvas extends Canvas implements Runnable{

  Player p;
  VideoControl vc;

  int mintMode = VideoControl.USE_DIRECT_VIDEO;//默认模式

  String mstrSnapshot = null;//文件格式,null时是PNG

  boolean mblnSnapshot = false;//是否需要拍照

  Command cmdSnapshot = new Command("拍照",Command.ITEM,0);

  Image imgSnapshot = null;

  cameraMidlet midlet;

  public cameraCanvas(cameraMidlet m) {
	midlet = m;

	try{
      p = Manager.createPlayer("capture://video");
      p.realize();
      vc = (VideoControl) p.getControl("VideoControl");
      if (vc != null) {
        vc.initDisplayMode(mintMode, this);
      }
      p.start();
    }catch(Exception e){
      System.out.println("init Error:"+e.toString());
    }

    (new Thread(this)).start();
  }


  public void run(){
    while(true){
      try{
        Thread.sleep(100);
      }catch(Exception e){}
      repaint();
	  if(mblnSnapshot){
		imgSnapshot = getImage();
	  }
    }
  }


  public void paint(Graphics g){
	
    g.setColor(0xFFFFFF);
    g.fillRect(0,0,getWidth(),getHeight());
	if(imgSnapshot!=null){
		vc.setVisible(false);
		g.drawImage(imgSnapshot,0,0,20);
	}else{
		String[] strInfo = {
			"getContentType:" + p.getContentType(),
			"getDisplayX:" + vc.getDisplayX(),
			"getDisplayY:" + vc.getDisplayY(),
			"getDisplayWidth:" + vc.getDisplayWidth(),
			"getDisplayHeight:" + vc.getDisplayHeight(),
			"getSourceWidth:" + vc.getSourceWidth(),
			"getSourceHeight:" + vc.getSourceHeight()
		};
		vc.setVisible(true);
		g.setColor(0x0);
		for(int i=0;i<strInfo.length;i++){
			g.drawString(strInfo[i],0,vc.getDisplayY()+vc.getDisplayHeight()+i*Font.getDefaultFont().getHeight(),20);
		}
	}

  }


  public void keyPressed(int keyCode){
	try{
		switch(keyCode){
			case 42://* 缩小
				vc.setDisplaySize(vc.getDisplayWidth()-vc.getSourceWidth()/10
					,vc.getDisplayHeight()-vc.getSourceHeight()/10);
				break;
			case 35://# 放大
				vc.setDisplaySize(vc.getDisplayWidth()+vc.getSourceWidth()/10
					,vc.getDisplayHeight()+vc.getSourceHeight()/10);
				break;
			case 50://2 移动
				vc.setDisplayLocation(vc.getDisplayX(),vc.getDisplayY()-2);
				break;
			case 52://4 移动
				vc.setDisplayLocation(vc.getDisplayX()-2,vc.getDisplayY());
				break;
			case 54://6 移动
				vc.setDisplayLocation(vc.getDisplayX()+2,vc.getDisplayY());
				break;
			case 56://8 移动
				vc.setDisplayLocation(vc.getDisplayX(),vc.getDisplayY()+2);
				break;
			case 48://0 拍照
				mblnSnapshot = true;
				break;
			case 53://5 返回摄像画面
				imgSnapshot = null;
				break;
			case 49://1 返回主界面
				vc = null;
				p.close();
				p = null;
				midlet.display.setCurrent(midlet.lstMenu);
				break;
		}
	}catch(Exception e){
		System.out.println("keyPressed Error:"+e.toString());
	}
  }

	//拍一张照片并返回
	Image getImage(){
		byte[] RGB;
		Image img=null;
	    if(mblnSnapshot){
			mblnSnapshot = false;
			try {
				RGB = vc.getSnapshot(mstrSnapshot);
				img = Image.createImage(RGB, 0, RGB.length);
	        }
		    catch (Exception e) {
				System.out.println("get image error:"+e.toString());
	        }
	    }
		return img;
	}
}

⌨️ 快捷键说明

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