?? formwebcam.java
字號:
/*////////////////////////////////////////////////////////////////////
//文檔生成日期:2005.10.12
//
//(1)概述:
//類名稱:FormWebcam
//類說明:
// MVC中的View部分,負責啟動/停止自動拍照和上傳照片的主力Form。
//
//所在子系統:VideoIM
//
//系統總描述:
我們提供的VideoIM手機自動拍照上傳器J2ME版本[開源]是
一個可以下載到手機(例如Nokia7610已經確實可以下載安裝并正常運行)的應用程序,
用來自動驅動手機攝像頭定時拍攝,并后臺將JPEG圖像(很小,大約幾KB)上傳到服務器上,
這樣就可以幫助其他系統工作,比如PC機上的MSN Messenger可以和你的移動MSN Messenger
通過這種方式視頻聊天,對方可以每隔十幾秒鐘看到你的手機所看到的畫面了。
子系統描述:
VideoIM的功能列表:
1:我要MobileWebCam
啟動MobileWebCam
停止MobileWebCam
2:MobileWebCam設置
3:關于我
4:退出
//(2)歷史記錄:
//創建人: 鄭昀(2005.10.07)
//聯系我: Google Talk >> zhengyun@gmail.com
//Blogs: http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc
//(3)版權聲明:
//由于我這個版本的VideoIM手機自動拍照上傳器也是基于Mowecam的設計理念基礎上改編而來的,
//所以決定遵照GPL協議的大意開放源代碼,您可以自由傳播和修改,在遵照GPL協議的約束條件的前提下。
//(4)相關資源:
1:《[J2ME]VideoIM手機自動拍照上傳器開源說明》
2:《[J2ME]VideoIM手機自動拍照上傳器設計說明》
3:下載源代碼:
////////////////////////////////////////////////////////////////////*/
package com.ultrapower.view;
import java.io.IOException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.StringItem;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import com.ultrapower.common.CommandResources;
import com.ultrapower.control.GUIController;
import com.ultrapower.model.ThreadPostVideo;
/**********************************************************
//FormWebcam
//
//Class Description:
// MVC中的View部分,負責啟動/停止自動拍照和上傳照片的主力Form。
//
//Author:
//zhengyun@ultrapower 2005.10.12
//
**********************************************************/
public class FormWebcam extends Form
{
private GUIController controller;
private static final Command cmdBack = new Command("返回", 3, 0);
private static final Command cmdStart = new Command("啟動", "啟動Webcam", 4, 1);
private static final Command cmdStop = new Command("停止", "停止webcam", 6, 2);
private VideoControl video;
private Player player;
private ThreadPostVideo threadPost;
public static FormWebcam formWebcam;
// 保留當前Tips的提示資源的ID號:
private int m_nItemTipsAppendId = -1;
public FormWebcam(String title, GUIController control)
{
super(title);
controller = control;
addCommand(cmdBack);
addCommand(cmdStart);
setCommandListener(new FormWebcamListener());
formWebcam = this;
}
/*
* 內部監聽器,監聽器監聽所有Command事件,并把事件響應推出來讓控制器處理
*/
private class FormWebcamListener implements CommandListener{
public void commandAction(Command command, Displayable disp){
if(command == cmdBack){
controller.handleEvent(GUIController.EventID.EVENT_WEBCAM_BACK, null);
}
else if(command == cmdStart){
controller.handleEvent(GUIController.EventID.EVENT_STARTWEBCAM, null);
}
else if(command == cmdStop){
controller.handleEvent(GUIController.EventID.EVENT_STOPWEBCAM, null);
}
//end else
}
}//end inner class
public final void StopWebcamSnapshot()
{
threadPost.m_bCaptureVideo = false;
removeCommand(cmdStop);
addCommand(cmdStart);
setTitle(String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_STOPWEBCAM)));
}
public final void StartWebcamSnapshot()
{
System.out.println("/** Enter FormWebcam::StartWebcamSnapshot!");
removeCommand(cmdStart);
addCommand(cmdStop);
threadPost = new ThreadPostVideo(controller, video);
Thread thread;
(thread = new Thread(threadPost)).start();
setTitle(String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_STARTWEBCAM)));
}
public void StartCapture()
throws MediaException, IOException, SecurityException
{
System.out.println("/** Enter FormWebcam::StartCapture!");
player = Manager.createPlayer("capture://video");
player.realize();
video = (VideoControl)player.getControl("VideoControl");
if(video != null)
{
System.out.println("/** 已經得到了VideoControl!");
Item itemVideoWindow;
// 在USE_GUI_PRIMITIVE模式下,默認是可見的,而在USE_DIRECT_VIDEO模式下,
// 默認是不可見的,需要通過方法setVisible(boolean visible)來設置
(itemVideoWindow = (Item)video.initDisplayMode(
0, null)).setLayout(3);
append(itemVideoWindow);
StringItem siSelect;
(siSelect = new StringItem("",
String.valueOf(CommandResources.getChars(
CommandResources.TXT_WEBCAMTIPS)))).setLayout(3);
m_nItemTipsAppendId = append(siSelect);
System.out.println("/** 啟動Player!");
player.start();
}
video.setVisible(true);
}
public final synchronized void setProgress(
String strProgressTitle,
String strMessage)
{
if(m_nItemTipsAppendId < 0)
{
m_nItemTipsAppendId = append(new StringItem(strProgressTitle, strMessage));
}
else
{
set(m_nItemTipsAppendId, new StringItem(strProgressTitle, strMessage));
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -