天天看點

[J2ME]VideoCoolala(MobileWebCam)設計說明 1背景、功能和特别之處 2 設計思路 3 設計過程中需要特别指出的問題 4 資源

<b>産品名稱</b><b></b>

<b>産品版本</b>

keyword: mobile videocontrol media 拍照手機 j2me midp midlet  webcam  java

<b>videocoolala</b>

<b>[mobilewebcam]</b>

1.12.1305

<b>[j2me] videocoolala(mobilewebcam)</b>

<b>設計說明</b><b></b>

<b>我的</b><b>mobilewebcam</b><b>資源:</b><b></b>

本文檔給出videocoolala(mobilewebcam)的設計思路和類說明。

第1章 簡單描述videocoolala(mobilewebcam)的背景、功能和特别之處。

第2章 描述調用videocoolala(mobilewebcam)的設計思路。

第3章 給出了 videocoolala(mobilewebcam)的設計過程中需要特别指出的問題。

第4章 給出了 各種下載下傳資源。<b></b>

<b> </b>

<b>摘要</b>:本章 簡單描述<b>videocoolala(mobilewebcam)</b>的背景、功能和特别之處。

我們提供的<b>videoim</b>手機自動拍照上傳器j2me版本[開源]就是這麼一種概念:

這樣就可以幫助其他系統工作,比如這麼一個場景:

pc機上的msn messenger使用者vicky正在和你的移動msn messenger通過這種方式視訊聊天,vicky的聊天對話框上能夠看到你的頭像,并且每隔十幾秒鐘就看到你的手機所看到的畫面了,是不是就是一種慢速的移動視訊聊天呢?

下面介紹<b>videocoolala-mobilewebcam</b>的功能清單:

l         我要<b>mobilewebcam</b>

n         啟動<b>mobilewebcam</b>

n         停止<b>mobilewebcam</b>

l         設定<b>mobilewebcam</b>

l         關于<b>mobilewebcam</b>

l         退出

l         這個應用程式的總體思路來自于mowecam的設計理念。

l         mvc的類分解,采用了 mingjava 的思路。

l         對rms記錄存儲的封裝模式以及對資源的調用方式,則參照了索愛公司的bluegammon遊戲代碼。

bluegammon遊戲源代碼,你可以從

bluegammon的代碼很經典,我隻是套用了bluegammon的rmsfacade類,将對rms的操作完全封裝起來。另外用videosettings類來提供存儲和讀取rms中關于本應用所需要的幾個參數的功能,videosettings其實就是調用了rmsfacade類。

總結一下特别之處。

l         <b>可以設定每隔多少秒鐘,抓拍一張照片,上傳伺服器;</b><b></b>

l         <b>可以設定玩家姓名;</b><b></b>

l         <b>可以設定遠端伺服器的接收頁面的</b><b>url</b><b>;</b><b></b>

l         <b>在傳送資料的過程中可以提示使用者,總共要傳送多少位元組,還剩餘多少位元組沒有傳輸;</b><b></b>

l         <b>傳送的過程發生了錯誤,會有</b><b>alert</b><b>界面提示使用者。</b><b></b>

特别是比原來mowecam的版本增加了幾個特性:

l         <b>可以設定抓拍圖像的格式,以及大小,進而能夠讓使用者自己控制上傳圖像的資料量大小;</b><b></b>

l         <b>當請求遠端伺服器時,加入了動畫等候畫面,提示使用者正在不斷地向伺服器上傳資料;</b><b></b>

一般來說,jpeg格式是推薦的,因為它資料量很小,其次是gif和bmp,但這兩種格式手機不一定支援,最差的是png格式。

在伺服器,我制作了一個很簡單的asp頁面來接收圖像資料,并進行儲存。代碼很簡單,就是利用adodb.stream讀寫資料流,進而能夠接收手機持續不斷上傳的資料,知道如何儲存。

<b>摘要</b>:本章描述<b>videocoolala(mobilewebcam)</b>的設計思路。

關鍵三個包:

l         javax.microedition.media.manager;

l         javax.microedition.media.player;

l         javax.microedition.media.control.videocontrol。

待續。

有時間一定更新。

劃分為四個子產品:

l         midlet:

n         videocoolala.java:  

u       這當然是midlet必須的入口;它負責初始化控制器guicontroller

l         <b>model</b><b>,模型:</b><b></b>

n         threadpostvideo.java

u       提供抓拍照片并發送的功能:

l         負責抓拍照片的邏輯;

l         調用httpuploadcapturedbuffer上傳照片;

n         videosettings.java

u       提供存儲和讀取rms中關于本應用所需要的幾個參數的功能

l         <b>view</b><b>,視圖:</b><b></b>

n         about.java

u       “關于”的alert界面

n         formpostprogress.java

u       報告目前上傳圖像進度的form

n         formsetting.java

u       提供設定關于本應用所需要的幾個參數的form

n         formwebcam.java

u       負責啟動/停止自動拍照和上傳照片的主力form

n         mainmenulist.java

u       提供菜單指令的list界面

n         waitflash.java

u       “動畫等待畫面”的canvas界面,能夠同時告知使用者上傳進度

l         <b>controller</b><b>:</b><b></b>

n         guicontroller.java

u       mvc中的控制器部分,負責界面事件的處理,以及決定該顯示哪一個form

<b>控制器的事件處理部分:</b><b></b>

下面來看看如何處理界面事件。

<b>代碼</b><b></b>

public void handleevent( int eventid,object[] args){  

           switch (eventid)

        {  

               case eventid.event_exit:

               {

                            system.gc();     // 通知進行垃圾收集

                            thread.yield();  // 本線程暫停一下,使得gc可以馬上獲得機會運作

                            rssmidlet.exit(false);

                      break;

               }

               case eventid.event_showwebcam:

                            try

                            {

                                   m_webcamform.startcapture();

                            }

                            catch(exception exc)

                            setcurrent(m_webcamform);

                   break;

                     case eventid.event_settings:

                            setcurrent(m_settingform);

               case eventid.event_startwebcam:

                            m_webcamform.startwebcamsnapshot();

……

<b>每一個</b><b>form</b><b>的如何轉發事件:</b><b></b>

每一個form上也有事件響應,并可以自行處理事件,然後加入參數,進一步轉發事件到控制器上。這個概念來自于mingjava。

       /*

     * 内部監聽器,監聽器監聽所有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

<b>摘要</b>:本章給出了 videocoolala(mobilewebcam)的設計過程中需要特别指出的問題。

有一篇《camera speed evaluation of the nokia 6600》專門評估了nokia6600在不同圖像格式下使用攝像頭的速度以及圖像大小,很有參考價值。

從中,我們可以看出png圖像的資料量是最大的,jpeg的資料量是最小的。

<b>format of the image: png</b>

<b>example picture:</b>

<b>result of the test running for png images:</b>

<b>resolution</b>

<b>time in seconds</b>

<b>memory size in kb</b>

<b>number of pictures</b>

80x60

1s

12, 7kb

1

3s

4

5s

8

7s

11

10s

15

160x120

42, 0 kb

3

5

7

10

200x150

67,4 kb

2

<b>format of the image: bmp</b>

<b>exapmle picture:</b>

<b>result of the test running: for bmp images</b>

5,8 kb

12

17

20,2 kb

6

9

31,0 kb

<b>format of the image: gif</b>

<b>result of the test running</b>

2,3 kb

4,8 kb

7,1 kb

<b>format of the image: jpeg</b>

1,1 kb

18

2,9 kb

3,0 kb

<b>網絡資源:</b>

1:熟練使用j2me在實際開發中的可選包mmapi

2:j2me中用mmapi開發手機攝像頭程式

3:camera speed evaluation of the nokia 6600

4:bluegammon

編寫者

日期

關鍵詞

鄭昀@ultrapower

2005-10-12

mobile videocontrol media 拍照手機 j2me midp midlet  webcam  java