📄 cameracanvas.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 + -