📄 mycanvas.java
字号:
/*
* MyCanvas.java
*
* Created on 2006年8月26日, 下午4:19
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package MyCamera;
import javax.microedition.amms.control.camera.CameraControl;
import javax.microedition.amms.control.camera.ExposureControl;
import javax.microedition.amms.control.camera.FocusControl;
import javax.microedition.amms.control.camera.SnapshotControl;
import javax.microedition.amms.control.camera.ZoomControl;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
/**
*
* @author tp
*/
public class MyCanvas extends Canvas
{
public Player player;
private MyVideo myVideo;
private ZoomControl zc;
private FocusControl fc;
private SnapshotControl sc;
private CameraControl cc;
Menu menu;
private int room;
int roomAspect, roomMax;
private boolean update = false;
public MyCanvas()
{
room = 1;
setFullScreenMode(true);
try
{
String url = "capture://video";
player = Manager.createPlayer(url);
player.realize();
}
catch(Exception e)
{
e.printStackTrace();
}
myVideo = new MyVideo(this);
menu = new Menu(this, player);
SnapshotControl ssc = (SnapshotControl)player.getControl("SnapshotControl");
ssc.setDirectory("c:/pictures/");
ssc.setFilePrefix("MyImage");
ssc.setFileSuffix(".jpg");
zc = (ZoomControl)player.getControl("ZoomControl");
roomMax = zc.getMaxDigitalZoom() / 100;
roomAspect = (roomMax * 100 - 100) / (zc.getDigitalZoomLevels() - 1) * 10;
fc = (FocusControl)player.getControl("FocusControl");
sc = (SnapshotControl)player.getControl("SnapshotControl");
sc.setFilePrefix("MyImage");
sc.setFileSuffix(".jpg");
}
public void paint(Graphics g)
{
if(myVideo!=null)
{
if(myVideo.isInitialized() && !update)
{
g.setClip(0, 0, 0, 0);
}
else if(update)
{
repaint();
update = false;
}
}
if(menu.selection == 0)
{
g.setColor(255,255,255);
g.drawString("X"+String.valueOf(room), 0, 0, 0);
ExposureControl ec = (ExposureControl)player.getControl("ExposureControl");
int cec = ec.getExposureCompensation();
g.drawString(String.valueOf(cec), 0, g.getFont().getHeight(), 0);
int cet = ec.getExposureTime();
g.drawString(String.valueOf(cet), 0, g.getFont().getHeight()*2, 0);
int cev = ec.getExposureValue();
g.drawString(String.valueOf(cev), 0, g.getFont().getHeight()*3, 0);
int cfs = ec.getFStop();
g.drawString(String.valueOf(cfs), 0, g.getFont().getHeight()*4, 0);
int iso = ec.getISO();
g.drawString(String.valueOf(iso), 0, g.getFont().getHeight()*5, 0);
FocusControl foc = (FocusControl)player.getControl("FocusControl");
g.drawString(String.valueOf(foc.getMacro()), 0, g.getFont().getHeight()*6, 0);
g.drawString(ec.getLightMetering(), 0, g.getFont().getHeight()*7, 0);
}
else
{
menu.showMenu(g);
}
}
public void keyPressed(int key)
{
switch(key)
{
case -37:
room++;
if(room > roomMax) room = roomMax;
zc.setDigitalZoom( roomAspect * room );
break;
case -36:
room--;
if(room < 1) room = 1;
zc.setDigitalZoom( roomAspect * room );
break;
case 49:
VideoControl vc = (VideoControl)player.getControl("VideoControl");
try {
vc.getSnapshot("");
} catch (MediaException ex) {
ex.printStackTrace();
}
break;
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 42:
case 48:
case 35:
if(menu.selection == 0)
{
menu.showMenu( key - 48 );
}
else
{
menu.action( key - 49 );
}
break;
case -1:
menu.downEC();
break;
case -2:
menu.upEC();
break;
case -3:
menu.downISO();
break;
case -4:
menu.upISO();
break;
case -25:
menu.focus();
break;
case -26:
menu.snapshot();
break;
}
repaint();
}
public void keyRepeated(int key)
{
switch(key)
{
case -37:
room++;
if(room > roomMax) room = roomMax;
zc.setDigitalZoom( roomAspect * room );
break;
case -36:
room--;
if(room < 1) room = 1;
zc.setDigitalZoom( roomAspect * room );
break;
}
repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -