当前页面位置: » 丰搜网 » 文档中心 » 详细内容
一个出色的mobilewebcam项目-videocoolala
[j2me]videocoolala(mobilewebcam)设计说明[j2me] videocoolala(mobilewebcam)开源说明作者:郑昀产品名称:videocoolala 产品版本:1.12.130关键词: mobile videocontrol media 拍照手机
j2me midp midlet
webcam
java摘要:本文档给出videocoolala(mobile
webcam)的设计思路和类说明。
第1章 简单描述videocoolala(mobile
webcam)的背景、功能和特别之处。
第2章 描述调用videocoolala(mobile
webcam)的设计思路。
第3章 给出了 videocoolala(mobile
webcam)的设计过程中需要特别指出的问题。
第4章 给出了 各种下载资源。
1背景、功能和特别之处摘要:本章 简单描述videocoolala(mobile
webcam)的背景、功能和特别之处。
我们提供的videoim手机自动拍照上传器
j2me版本[
开源]就是这么一种概念:
一个可以下载到手机(例如nokia7610已经确实可以下载安装并正常运行)的
java应用程序,用来自动驱动你的手机摄像头定时拍摄一张图像(默认是jpeg格式,数据量很小)。然后,后台
线程将jpeg图像(很小,大约几kb)上传到
服务器上。手机默默地拍照,默默地上传照片,不用手工干预,比如你可以设置每隔三分钟拍一张照片,然后上传到flickr这个著名的图片共享站点上,全世界都会看到你的慢速视频。
这样就可以帮助其他系统工作,比如这么一个场景:
pc机上的msn messenger用户vicky正在和你的移动msn messenger通过这种方式视频聊天,vicky的聊天对话框上能够看到你的头像,并且每隔十几秒钟就看到你的手机所看到的画面了,是不是就是一种慢速的移动视频聊天呢?
更多情况参看《[
j2me]videocoolala(mobile
webcam)
开源说明》。
运行情况:
图1-1 videocoolala的主界面
图1-2 videocoolala的摄像头启动界面
图1-3 videocoolala的设置界面
下面介绍videocoolala-mobile
webcam的功能列表:
l 我要mobile
webcam
n 启动mobile
webcam
n 停止mobile
webcam
l 设置mobile
webcam
l 关于mobile
webcam
l 退出
1.1. 特别之处 这个应用程序的总体思路来自于mowecam的设计理念。
mvc的类分解,采用了 ming
java 的思路。
对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类。
总结一下特别之处。
可以设置每隔多少秒钟,抓拍一张照片,上传
服务器;
可以设置玩家姓名;
可以设置远程
服务器的接收页面的url;
在传送数据的过程中可以提示用户,总共要传送多少字节,还剩余多少字节没有传输;
传送的过程发生了错误,会有alert界面提示用户。
特别是比原来mowecam的版本增加了几个特性:
可以设置抓拍图像的格式,以及大小,从而能够让用户自己控制上传图像的数据量大小;
当请求远端
服务器时,加入了动画等候画面,提示用户正在不断地向
服务器上传数据;
一般来说,jpeg格式是推荐的,因为它数据量很小,其次是gif和bmp,但这两种格式手机不一定支持,最差的是png格式。
在
服务器,我制作了一个很简单的
asp页面来接收图像数据,并进行保存。代码很简单,就是利用adodb.stream读写数据流,从而能够接收手机持续不断上传的数据,知道如何保存。
2 设计思路摘要:本章描述videocoolala(mobile
webcam)的设计思路。
2.1. 如何使用mmapi来抓拍照片关键三个包:
javax.microedition.media.manager;
javax.microedition.media.player;
javax.microedition.media.control.videocontrol。
待续。
有时间一定更新。
2.2. mvc设计模式划分为四个模块:
midlet:
videocoolala.
java:
这当然是midlet必须的入口;它负责初始化控制器
guicontroller
model,模型:
threadpostvideo.
java 提供抓拍照片并发送的功能:
负责抓拍照片的逻辑;
调用httpuploadcapturedbuffer上传照片;
videosettings.
java 提供存储和读取rms中关于本应用所需要的几个参数的功能
view,
视图:
about.
java “关于”的alert界面
formpostprogress.
java 报告当前上传图像进度的form
formsetting.
java 提供设置关于本应用所需要的几个参数的form
form
webcam.
java 负责启动/停止自动拍照和上传照片的主力form
mainmenulist.
java 提供菜单命令的list界面
wait
flash.
java “动画等待画面”的canvas界面,能够同时告知用户上传进度
controller:
guicontroller.
java 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上也有事件响应,并可以自行处理事件,然后加入参数,进一步转发事件到控制器上。这个概念来自于ming
java。
代码
/*
* 内部监听器,监听器监听所有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(mobile
webcam)的设计过程中需要特别指出的问题。
3.1. 图像格式和数据量的问题有一篇《camera speed evaluation of the nokia 6600》专门评估了nokia6600在不同图像格式下使用摄像头的速度以及图像大小,很有参考价值。
从中,我们可以看出png图像的数据量是最大的,jpeg的数据量是最小的。
4 资源我的mobile
webcam资源:
1:《[
j2me]videocoolala(mobile
webcam)
开源说明》
2:《[
j2me]videocoolala(mobile
webcam)设计说明》
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
附:
开源版权声明
摘要:本章描述videocoolala(mobile
webcam)的
开源版权声明。
由于我这个版本的 videoim手机自动拍照上传器
j2me版本 也是基于mowecam的设计理念基础上改编而来的,所以决定遵照gpl协议的大意开放源代码,您可以自由传播和修改,在遵照下面的约束条件的前提下:
条件1
只要你在videocoolala(mobile
webcam)的每一副本上明显和恰当地出版版权声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。
条件2
你可以修改videocoolala(mobile
webcam)程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。
a)
你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。
b)
你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。
c)
如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。
这样,您就可以自由使用并传播本源代码,当然请您原封不动地保留原作者信息。
详细内容见:http://www.cnblogs.com/zhengyun_ustc/archive/2005/10/13/videocoolala.
html