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

📄 captureui.java

📁 < JavaME核心技术最佳实践>>的全部源代码
💻 JAVA
字号:
package com.j2medev.chapter8;

import java.io.*;
import java.util.Date;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.VideoControl;

public class CaptureUI extends Form implements CommandListener{
    
    private BrowserMIDlet midlet = null;
    private Player player = null;
    private VideoControl vc = null;
    private Command backCommand = new Command("back",Command.BACK,1);
    private Command okCommand = new Command("capture",Command.OK,1);
    
    public CaptureUI(BrowserMIDlet midlet) {
        super("new picture");
        this.midlet = midlet;
        startPlayer();
        addCommand(backCommand);
        setCommandListener(this);
    }
    //启动Player
    private void startPlayer(){
        if(player == null){
            try {
                player = Manager.createPlayer("capture://video");
                player.realize();
                vc = (VideoControl)player.getControl("VideoControl");
                if(vc != null)
                    append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null));
                addCommand(okCommand);
            } catch (MediaException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
    //释放Player的资源,这很重要
    private void release(){
        if(player != null){
            player.close();
            player = null;
        }
    }
    
    public void commandAction(Command command, Displayable displayable) {
        if(command == backCommand){
            //返回
            release();
            midlet.main();
        }else if(command == okCommand){
            //使用MMAPI拍照,并保存png文件到photos目录
            new Thread(){
                public void run(){
                    FileConnection fc = null;
                    try {
                        byte[] img = vc.getSnapshot(null);
                        //检查用户默认的图片存储目录是否存在,WTK 2.5支持
                        String p = System.getProperty("fileconn.dir.photos");
                        if(p == null)
                            //如果不存在,存储在根目录
                            p = BrowserMIDlet.ROOT;
                        fc = (FileConnection) Connector.open(p + "/" + new Date().getTime() + ".png");
                        if(!fc.exists()){
                            //新建文件
                            fc.create();
                            OutputStream os = fc.openOutputStream();
                            os.write(img);
                            os.close();
                            fc.close();
                            fc = null;
                        }
                        //释放Player资源并刷新当前文件列表
                        release();
                        midlet.main();
                    } catch (MediaException ex) {
                        ex.printStackTrace();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    } 
                }
            }.start();
        }
    }
}

⌨️ 快捷键说明

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