- 浏览: 4173707 次
最新评论
[J2ME]VideoCoolala(MobileWebCam)设计说明
产品名称 | 产品版本 | |
Keyword: Mobile VideoControl Media 拍照手机 j2me midp midlet WebCam java | VideoCoolala [MobileWebCam] | 1.12.1305 |
[J2ME] VideoCoolala(MobileWebCam)
设计说明
我的MobileWebCam资源:
1:《[J2ME]VideoCoolala(MobileWebCam)开源说明》
2:《[J2ME]VideoCoolala(MobileWebCam)设计说明》
3:下载源代码:http://www.cnblogs.com/Files/zhengyun_ustc/videocoolala-src.rar
4:下载midlet:jad: videoim.jad jar: videoim.jar
摘要:
本文档给出VideoCoolala(MobileWebCam)的设计思路和类说明。
第1章 简单描述VideoCoolala(MobileWebCam)的背景、功能和特别之处。
第2章 描述调用VideoCoolala(MobileWebCam)的设计思路。
第3章 给出了 VideoCoolala(MobileWebCam)的设计过程中需要特别指出的问题。
第4章 给出了 各种下载资源。
1背景、功能和特别之处
摘要:本章 简单描述VideoCoolala(MobileWebCam)的背景、功能和特别之处。
我们提供的VideoIM手机自动拍照上传器J2ME版本[开源]就是这么一种概念:
一个可以下载到手机(例如Nokia7610已经确实可以下载安装并正常运行)的Java应用程序,用来自动驱动你的手机摄像头定时拍摄一张图像(默认是Jpeg格式,数据量很小)。然后,后台线程将Jpeg图像(很小,大约几KB)上传到服务器上。手机默默地拍照,默默地上传照片,不用手工干预,比如你可以设置每隔三分钟拍一张照片,然后上传到Flickr这个著名的图片共享站点上,全世界都会看到你的慢速视频。
这样就可以帮助其他系统工作,比如这么一个场景:
PC机上的MSN Messenger用户Vicky正在和你的移动MSN Messenger通过这种方式视频聊天,Vicky的聊天对话框上能够看到你的头像,并且每隔十几秒钟就看到你的手机所看到的画面了,是不是就是一种慢速的移动视频聊天呢?
更多情况参看《[J2ME]VideoCoolala(MobileWebCam)开源说明》。
下面介绍VideoCoolala-MobileWebCam的功能列表:
l 我要MobileWebCam
n 启动MobileWebCam
n 停止MobileWebCam
l 设置MobileWebCam
l 关于MobileWebCam
l 退出
1.1. 特别之处
l 这个应用程序的总体思路来自于Mowecam的设计理念。
l MVC的类分解,采用了 mingjava 的思路。
l 对RMS记录存储的封装模式以及对资源的调用方式,则参照了索爱公司的BlueGammon游戏代码。
对于MVC的类分解,你还可以参考我的另一篇文章《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明》。
BlueGammon游戏源代码,你可以从
http://www.cnblogs.com/Files/zhengyun_ustc/Bluegammon-eclipse.rar 下载。
BlueGammon的代码很经典,我只是套用了BlueGammon的RmsFacade类,将对RMS的操作完全封装起来。另外用VideoSettings类来提供存储和读取RMS中关于本应用所需要的几个参数的功能,VideoSettings其实就是调用了RmsFacade类。
总结一下特别之处。
l 可以设置每隔多少秒钟,抓拍一张照片,上传服务器;
l 可以设置玩家姓名;
l 可以设置远程服务器的接收页面的URL;
l 在传送数据的过程中可以提示用户,总共要传送多少字节,还剩余多少字节没有传输;
l 传送的过程发生了错误,会有Alert界面提示用户。
特别是比原来Mowecam的版本增加了几个特性:
l 可以设置抓拍图像的格式,以及大小,从而能够让用户自己控制上传图像的数据量大小;
l 当请求远端服务器时,加入了动画等候画面,提示用户正在不断地向服务器上传数据;
一般来说,Jpeg格式是推荐的,因为它数据量很小,其次是gif和bmp,但这两种格式手机不一定支持,最差的是png格式。
在服务器,我制作了一个很简单的ASP页面来接收图像数据,并进行保存。代码很简单,就是利用ADODB.Stream读写数据流,从而能够接收手机持续不断上传的数据,知道如何保存。
2 设计思路
摘要:本章描述VideoCoolala(MobileWebCam)的设计思路。
2.1. 如何使用MMAPI来抓拍照片
关键三个包:
l javax.microedition.media.Manager;
l javax.microedition.media.Player;
l javax.microedition.media.control.VideoControl。
待续。
有时间一定更新。
2.2. MVC设计模式
划分为四个模块:
l midlet:
n VideoCoolala.java:
u 这当然是MIDlet必须的入口;它负责初始化控制器GUIController
l Model,模型:
n ThreadPostVideo.java
u 提供抓拍照片并发送的功能:
l 负责抓拍照片的逻辑;
l 调用HttpUploadCapturedBuffer上传照片;
n VideoSettings.java
u 提供存储和读取RMS中关于本应用所需要的几个参数的功能
l View,视图:
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 controller:
n GUIController.java
u MVC中的控制器部分,负责界面事件的处理,以及决定该显示哪一个Form
控制器的事件处理部分:
下面来看看如何处理界面事件。
代码 |
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); break; } case EventID.EVENT_STARTWEBCAM: { m_webcamForm.StartWebcamSnapshot(); setCurrent(m_webcamForm); break; } …… |
每一个Form的如何转发事件:
每一个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 |
2.3. 上传图像的后台线程问题
待续。
有时间一定更新。
3 设计过程中需要特别指出的问题
摘要:本章给出了 VideoCoolala(MobileWebCam)的设计过程中需要特别指出的问题。
3.1. 图像格式和数据量的问题
有一篇《Camera speed evaluation of the Nokia 6600》专门评估了Nokia6600在不同图像格式下使用摄像头的速度以及图像大小,很有参考价值。
从中,我们可以看出PNG图像的数据量是最大的,Jpeg的数据量是最小的。
Format of the image: PNG
Example picture: | Result of the test running for PNG images: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1027" style="WIDTH: 150pt; HEIGHT: 112.5pt" type="#_x0000_t75" alt=""><imagedata src="file:///C:/DOCUME~1/VICTOR~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png" o:href="http://www.hcilab.org/documents/tutorials/ImagePerformanceEvaluation/pictures/imagePNG.png"></imagedata></shape> |
|
Format of the image: BMP
Exapmle picture: | Result of the test running: for BMP images | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<shape id="_x0000_i1025" style="WIDTH: 150pt; HEIGHT: 112.5pt" type="#_x0000_t75" alt=""><imagedata src="file:///C:/DOCUME~1/VICTOR~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png" o:href="http://www.hcilab.org/documents/tutorials/ImagePerformanceEvaluation/pictures/imageBMP.png"></imagedata></shape> |
|
Format of the image: GIF
Example picture: | Result of the test running | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<shape id="_x0000_i1028" style="WIDTH: 150pt; HEIGHT: 112.5pt" type="#_x0000_t75" alt=""><imagedata src="file:///C:/DOCUME~1/VICTOR~1/LOCALS~1/Temp/msohtml1/01/clip_image005.png" o:href="http://www.hcilab.org/documents/tutorials/ImagePerformanceEvaluation/pictures/imageGIF.gif"></imagedata></shape> |
|
Format of the image: JPEG
Example picture: | Result of the test running | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<shape id="_x0000_i1026" style="WIDTH: 150pt; HEIGHT: 112.5pt" type="#_x0000_t75" alt=""><imagedata src="file:///C:/DOCUME~1/VICTOR~1/LOCALS~1/Temp/msohtml1/01/clip_image007.jpg" o:href="http://www.hcilab.org/documents/tutorials/ImagePerformanceEvaluation/pictures/imageJPEG.jpeg"></imagedata></shape> |
|
4 资源
我的MobileWebCam资源:
1:《[J2ME]VideoCoolala(MobileWebCam)开源说明》
2:《[J2ME]VideoCoolala(MobileWebCam)设计说明》
3:下载源代码:http://www.cnblogs.com/Files/zhengyun_ustc/videocoolala-src.rar
4:下载midlet:jad: videoim.jad jar: videoim.jar
网络资源:
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 |
相关推荐
绝对优秀的J2ME的课程设计,包括word文档(中文一份英文一份),Visio的设计逻辑图和逻辑图都有。
J2me课程设计:俄罗斯方块(内附源码和设计报告)
J2ME手机游戏设计 含有论文和代码 直接运行
MTK系统下的J2ME运行平台设计,在目前手机移动开发上,Java技术提供给用户多种应用服务,发展空间比较大。本文描述了J2ME运行平台在MTK系统下的设计和实现。首先,简要介绍了 J2ME运行环境和MTK平台。
J2ME手机游戏设计示例代码 J2ME手机游戏设计示例代码
基于J2ME的手机游戏设计说明.doc
手机游戏设计大赛 手机游戏设计大赛 j2me 成都软件设计大赛决赛试题手机游戏设计大赛 j2me 成都软件设计大赛决赛试题
基于J2ME平台的手机游戏贪吃蛇程序的设计与实现
《j2me程序设计实例》,包括很多的实例,像短消息、邮件、文件管理系统、播放器等等。
J2ME弹球游戏设计
《J2ME程序设计实例教程》中的实例源码
关于J2me手机游戏设计,比较好的一篇文章。
不错的一个手机课程设计程序,本人局的很不错所以上传上来大家共享
J2ME 游戏 java 毕业设计 J2ME 游戏 java 毕业设计 J2ME 游戏 java 毕业设计 SYMBIAN S60 N73
J2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏程序设计.isoJ2ME MIDP 手机游戏...
本例是基于j2me 设计的贪吃蛇源代码,可供参考研究j2me下图形界面显示
j2me公交车查询系统
订做j2me毕业设计,由工作室设计。 成功案例:雷电、钓鱼、寻宝乐园、 爆力摩托、魂斗罗、坦克大战、 极跑飞车、潜艇大战、Q版CS、通信录、 中英字典、小兽争霸、仿造QQ、 mp3网络播放器。 Q_Q:535519388
J2ME课程设计摸版,有原代码.流程图,截面,参考文献等等设计报告.
J2ME开发平台搭建说明文档[整理].pdf