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

📄 mycanvas.java

📁 手机上使用j2me控制相机的例子。需要手机支持jp7
💻 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 + -