?? guicontroller.java
字號:
/*////////////////////////////////////////////////////////////////////
//文檔生成日期:2005.10.12
//
//(1)概述:
//類名稱:GUIController
//類說明:
// MVC中的控制器部分,負責(zé)界面事件的處理,以及決定該顯示哪一個Form。
//
//所在子系統(tǒng):VideoIM
//
//系統(tǒng)總描述:
我們提供的VideoIM手機自動拍照上傳器J2ME版本[開源]是
一個可以下載到手機(例如Nokia7610已經(jīng)確實可以下載安裝并正常運行)的應(yīng)用程序,
用來自動驅(qū)動手機攝像頭定時拍攝,并后臺將JPEG圖像(很小,大約幾KB)上傳到服務(wù)器上,
這樣就可以幫助其他系統(tǒng)工作,比如PC機上的MSN Messenger可以和你的移動MSN Messenger
通過這種方式視頻聊天,對方可以每隔十幾秒鐘看到你的手機所看到的畫面了。
子系統(tǒng)描述:
VideoIM的功能列表:
1:我要MobileWebCam
啟動MobileWebCam
停止MobileWebCam
2:MobileWebCam設(shè)置
3:關(guān)于我
4:退出
//(2)歷史記錄:
//創(chuàng)建人: 鄭昀(2005.10.07)
//聯(lián)系我: Google Talk >> zhengyun@gmail.com
//Blogs: http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc
//(3)版權(quán)聲明:
//由于我這個版本的VideoIM手機自動拍照上傳器也是基于Mowecam的設(shè)計理念基礎(chǔ)上改編而來的,
//所以決定遵照GPL協(xié)議的大意開放源代碼,您可以自由傳播和修改,在遵照GPL協(xié)議的約束條件的前提下。
//(4)相關(guān)資源:
1:《[J2ME]VideoIM手機自動拍照上傳器開源說明》
2:《[J2ME]VideoIM手機自動拍照上傳器設(shè)計說明》
3:下載源代碼:
////////////////////////////////////////////////////////////////////*/
package com.ultrapower.control;
import java.io.InputStream;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Item;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import com.ultrapower.common.CommandResources;
import com.ultrapower.facade.RmsFacade;
import com.ultrapower.midlet.TrafficView;
import com.ultrapower.model.VideoSettings;
import com.ultrapower.view.About;
import com.ultrapower.view.FormSetting;
import com.ultrapower.view.FormTrafficCam;
import com.ultrapower.view.MainMenuList;
import com.ultrapower.view.WaitFlash;
/**********************************************************
// GUIController
//
// Class Description:
// MVC中的控制器部分,負責(zé)界面事件的處理,以及決定該顯示哪一個Form。
//
// Author:
// zhengyun@ultrapower 2005.10.07
//
**********************************************************/
public class GUIController {
public TrafficView m_trafficcamMidlet;
private VideoSettings m_Settings;
private MainMenuList m_listMenu;
private FormSetting m_settingForm;
public FormTrafficCam m_camForm;
private WaitFlash m_waitFlash;
private Alert m_alert;
private About m_about;
private VideoControl m_video;
//////////////////////////////////////////////////////////
// 下面這4個參數(shù)是專門為了后臺處理線程傳遞數(shù)據(jù)進來到控制器準(zhǔn)備的
// 所以保證這4個set函數(shù)為線程同步的
/*
* 將要發(fā)送的圖像數(shù)據(jù)的總字節(jié)數(shù)目
*/
private String m_sPostDataTotalLength;
public synchronized void setPostDataTotalLength(String value)
{
m_sPostDataTotalLength = value;
}
/*
* 還剩余的圖像字節(jié)數(shù)目
*/
private String m_sPostingDataLength;
public synchronized void setPostingDataLength(String value)
{
m_sPostingDataLength = value;
}
/*
* 從遠端服務(wù)器傳回來的錯誤號
*/
private String m_sRemoteServerResponse;
public synchronized void setRemoteServerResponse(String value)
{
m_sRemoteServerResponse = value;
}
/*
* 在下載并播放時發(fā)生的異常報告
*/
private String m_sPlayerException;
public synchronized void setPlayerException(String value)
{
m_sPlayerException = value;
}
/*
* 通知下載數(shù)據(jù)的線程退出,
* 利用這種方式,使得后臺線程和界面同步退出
*/
private boolean m_bStopDownloadData = false;
public synchronized boolean getStopDownloadData()
{
return m_bStopDownloadData;
}
/*
* 在后臺線程中New出來一個VideoControl,然后傳出來到控制器上
* 這樣,讓對Video播放操作還在控制器中
*/
public synchronized void setVideoControl(VideoControl value)
{
m_video = value;
}
/////////////////////////////////////////////////////////////
/** Nbr of keys */
protected static final int NBR_OF_KEYS = 6;
public GUIController(TrafficView midletMain){
m_trafficcamMidlet = midletMain;
}
/**********************************************************
// GUIController::init()
//
// Description:
// 初始化控制器:
* 初始化各個Form界面
* 設(shè)定先顯示MainMenu列表界面
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.10.12
//
**********************************************************/
public void init(){
// Initialize the RMS persistence facade
RmsFacade.init(NBR_OF_KEYS);
m_Settings = VideoSettings.getInstance();
// init ui
m_listMenu = new MainMenuList(
String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_APP)), this);
setCurrent(m_listMenu);
m_about = new About(
String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_ABOUT)));
m_settingForm = new FormSetting(this);
m_camForm = new FormTrafficCam(
String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_STOPWEBCAM))
,this);
}
/**********************************************************
// GUIController::getSettings()
//
// Description:
// 返回當(dāng)前封裝了RMS操作的Settings的類實例
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.10.07
//
**********************************************************/
public VideoSettings getSettings(){
return m_Settings;
}
/**********************************************************
// GUIController::setCurrent()
//
// Description:
// 設(shè)置當(dāng)前顯示的界面
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.10.07
//
**********************************************************/
public void setCurrent(Displayable disp){
m_trafficcamMidlet.setCurrent(disp);
}
public void setCurrent(Alert alert, Displayable disp){
m_trafficcamMidlet.setCurrent(alert, disp);
}
/**********************************************************
// GUIController::setProgress/setTitle
//
// Description:
// 設(shè)置FormProgress界面上的顯示文字/標(biāo)題的
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.10.07
//
**********************************************************/
/*public void setProgress(String title, String message){
m_progressForm.setProgress(title, message);
}
public void setTitle(String title){
m_progressForm.setTitle(title);
}*/
/**********************************************************
// GUIController::EventID
//
// Description:
// 定義事件ID內(nèi)部類
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.10.07
//
**********************************************************/
public static class EventID{
private EventID(){
}
public static final byte EVENT_EXIT = 0;//退出
public static final byte EVENT_SHOWWEBCAM = 1;//進入webcam界面
public static final byte EVENT_STARTWEBCAM = 2;//TrafficCam界面的"啟動"按鈕
public static final byte EVENT_STOPWEBCAM = 3;//TrafficCam界面的"停止"按鈕
public static final byte EVENT_WEBCAM_BACK = 4;//TrafficCam界面的"返回"按鈕
public static final byte EVENT_SETTINGS_SAVE = 5;//設(shè)置界面的“保存”按鈕
public static final byte EVENT_SETTINGS_BACK = 6;//設(shè)置界面的“返回”按鈕
public static final byte EVENT_ABOUT = 7;//About界面
public static final byte EVENT_ABOUT_BACK = 8;//About界面的“返回”按鈕
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -