[J2ME] 手机看交通监视器实时录像 实现说明

2024-03-16 05:40

本文主要是介绍[J2ME] 手机看交通监视器实时录像 实现说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:

本文档给出Mobile TrafficCam Viewer的实现说明。

第1章 简单描述Mobile TrafficCam Viewer的功能和特别之处。

第2章 给出了 Mobile TrafficCam Viewer的下载资源。

1背景、功能和特别之处

摘要:本章 简单描述Mobile TrafficCam Viewer的背景、功能和特别之处。

 

1.1. 手机看交通重要路口摄像头 – 北京司机的心愿?

我每天开车三个多小时,最喜欢听的节目就是1039的一路畅通。堵在北四环的时候,热切地盼望着主持人早点播报路况信息。但往往他们不说北四环,可能因为这里常年拥堵吧。这时就心想,要是我自己能够看到前行路上每一个交通要道的实况就好了,知道什么时候通了,什么时候茬上了,这样也有个盼头,或者提前选择道路避让。

 

您该问了,北京各个地方的交通监视器摄像头能提供给你吗?

答,可以,北京各个路口的摄像头实况,已经有人提供流媒体服务器播放了。

从 mms://real.u-mail.cn/cebeijing1,到 mms://real.u-ail.cn/cebeijing58。为了演示本项目,我选择了国贸桥的监视器:mms://real.u-mail.cn/cebeijing10 。

 

您又有疑问了,手机怎么看呢?

答,当然了,现有的各种品牌的手机都不会支持流媒体的,他们只能播放手机存储卡的媒体文件或者内存中的InputStream。我们呢,就必须自建一个服务器,帮助手机转换流媒体为手机支持的标准播放格式,然后提供给手机下载播放。这个下载转换过程是很快的。

 

那么,在当前移动网络带宽的情况下如何保证实用性呢?

答,我们并不是让手机播放实时的流媒体,而是当用户想看路况时,就通过GPRS通知我们的3GP转换服务器,仅仅去下载交通监视器流媒体数据的几秒钟长度数据,然后转换为3GP标准格式。这样,一段2秒钟的实时录像大约为35KB,在中国移动GPRS的带宽为13Kbps~54Kbps情况下,最多3秒钟就下载到手机上了并播放。整个过程大约在10秒钟之内就能完成,这样比较接近于实时交通了,用户应该可以接受。

 

下载的实况录像是否保存在手机上呢?

答,我们只将数据存储在内存中,然后让手机播放,并不会占用手机存储卡空间。

1.2. Mobile TrafficCam Viewer概要

我们提供的Mobile TrafficCam Viewer J2ME版本 就是这么一种概念:

一个可以下载到手机(例如Nokia7610已经确实可以下载安装并运行)的Java应用程序。

每次选择它的“Download&Play”命令,它就会向我们的服务器发起请求(通过GPRS),然后下载服务器准备好的3gp格式数据,并播放它你还可以选择Replay刚才下载的交通路况录像。

 

1.3. 如何来体验Mobile TrafficCam Viewer

这样,每天当我在车里,在安慧桥前苦苦等待的时候,就可以拿起手机随时看一眼前方惠新东桥的实时路况录像,以解我心忧!

或者当我停在翠宫大厦前时,就可以先看一眼安慧桥的实时路况录像,以决定是不是还走四环。

 

如果你真的要在实际生活中用到这种功能,那么请申请开通你的GPRS包月套餐,那样20块钱就可以自由使用GPRS了。

建议你的手机是Nokia的手机,同时用Nokia程序管理器设置这个应用配置参数:在连接网络时第一次询问。

为了更好地体验本应用,请先下载TrafficCam.jad和TrafficCam.jar到计算机上,安装了Nokia开发者模拟器后,用S60系列的模拟器来运行TrafficCam.jad。你就可以看到下面所描述的效果了。

在服务器端,我配置了一个Java Web Service,来做mms流媒体的格式转换工作,从WMV3格式转换为3gpp格式。3gpp格式是标准,MIDP2.0的手机都支持的。

 

1.4. Mobile TrafficCam Viewer功能列表

下面介绍Mobile TrafficCam Viewer的功能列表:

l         TrafficView

n         Download&Play

n         StopDownload&Play

l         Settings

l         About

l         Exit

 

下面就是应用程序的主界面:

                  

界面主菜单

图1-1 Mobile TrafficCam Viewer的主界面

TrafficView界面 

图1-2 Mobile TrafficCam Viewer的TrafficView主界面,提供了Download&Play命令

国贸桥录像在手机上的显示

图1-3 下载了国贸桥的交通录像,并在播放中

 

西直门

图1-4 Mobile TrafficCam Viewer已经下载了西直门的交通录像,并在播放中

 

西直门重放

图1-5 Mobile TrafficCam Viewer停止播放下载的交通录像,提供了Replay命令来重放

 

设置界面

图1-6  Mobile TrafficCam Viewer的Settings界面,来设置转换服务器地址以及下载录像的秒数
 

1.5. 特别之处

下面,我们说说这个应用程序的特别之处。

l         这个应用程序的总体思路其实很简单,最重要的工作是在服务器端由一个Java Web Service做的。本Midlet应用就是利用KSoap2和远端Web Service交互之后,下载3gp媒体文件流,然后播放。

l         MVC的类分解,采用了 mingjava 的思路。

l         对RMS记录存储的封装模式以及对资源的调用方式,则参照了索爱公司的BlueGammon游戏代码。

 

对于MVC的类分解,你还可以参考我的另一篇文章《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明》以及《[J2ME]Mobile TrafficCam Viewer设计说明》。

BlueGammon游戏源代码,你可以从

http://files.cnblogs.com/zhengyun_ustc/Bluegammon-eclipse.rar 下载。

BlueGammon的代码很经典,我只是套用了BlueGammon的RmsFacade类,将对RMS的操作完全封装起来。另外用VideoSettings类来提供存储和读取RMS中关于本应用所需要的几个参数的功能,VideoSettings其实就是调用了RmsFacade类。

 

总结一下特别之处。

l         可以设置转换服务器下载多少秒钟长度的交通实时录像;

l         可以选择从1到58个摄像头的录像,遍及京城各个角落;

l         可以设置远程服务器的Web Service的URL;

l         转换出的3gp格式能够实际被手机所播放。(并不是每一个Convert Application都能够转换出能够真正被Nokia手机识别的3gpp格式!我也是花费了很长时间才寻找到解决之道的。)

 

实际上,mpeg格式也是很多手机支持播放的,但是因为mpeg数据量是3gpp格式的两倍以上,而且3gpp格式是未来的标准,所以最终我们还是选择了3gpp。

那么什么是3gpp呢?

3G peer protocol(3gpp)是基于3G移动通信网络上的一种创建、传输、回放多媒体的标准。这种标准是基于MPEG-4编码技术的。市面上众多的MPEG-4标准只要支持3GPP这个标准都可以用于3G移动通信设备上。

1.6. 小结

总的来说,让手机播放流媒体,目前是做不到的。但是不等于说,基于流媒体的应用就无法在手机上实现,只要换一个思路,就可以。

不过,交通路况实时录像是一个比较特殊的流媒体移动应用。它的用户是可以接受只能察看几秒钟乃至10秒钟的录像的,因为短短几秒钟的路况录像信息就足以让人判断出来是拥堵还是畅通了。

 

2 资源

我的Mobile TrafficCam Viewer资源:

1:《[J2ME]手机实时交通监视器开源说明》

2:下载源代码:http://files.cnblogs.com/zhengyun_ustc/trafficcam-src.rar

3:下载midlet:jad: TrafficCam.jad jar:TrafficCam.jar

 

网络资源:

1:熟练使用J2ME在实际开发中的可选包MMAPI

2:实例解析MMS流媒体协议,下载LiveMediaVideo[1]

3:BlueGammon

4:北京各个路口的摄像头实况。以后下班前先看看路况再走

从 mms://real.u-mail.cn/cebeijing1 到 mms://real.u-ail.cn/cebeijing58

下面是已经辨认出来的:

3 三元桥 mms://real.u-mail.cn/cebeijing3

7 马甸 mms://real.u-mail.cn/cebeijing7

8 西直门 mms://real.u-mail.cn/cebeijing8

9 西厢月坛桥 mms://real.u-mail.cn/cebeijing9

10 国贸桥 mms://real.u-mail.cn/cebeijing10

14 天宁寺桥 mms://real.u-mail.cn/cebeijing14

15 永定门 mms://real.u-mail.cn/cebeijing15

16 手帕口桥 mms://real.u-mail.cn/cebeijing16

17 西二环(官园北)?mms://real.u-mail.cn/cebeijing17

26 十里河 mms://real.u-mail.cn/cebeijing26

27 木樨园南mms://real.u-mail.cn/cebeijing27

34 北二环小街桥 mms://real.u-mail.cn/cebeijing34

35 二环东直门 mms://real.u-mail.cn/cebeijing35

36 二环德胜门 mms://real.u-mail.cn/cebeijing36

37 安定门 mms://real.u-mail.cn/cebeijing37

41 三环蓟门桥 mms://real.u-mail.cn/cebeijing41

42安贞桥 mms://real.u-mail.cn/cebeijing42

44 白石桥 mms://real.u-mail.cn/cebeijing44

47 阜石路出四环西北角 mms://real.u-mail.cn/cebeijing47

48 西四环五棵松北 mms://real.u-mail.cn/cebeijing48

50 北苑路 mms://real.u-mail.cn/cebeijing50

51 八达岭 mms://real.u-mail.cn/cebeijing51

52 八达岭2 mms://real.u-mail.cn/cebeijing52


转自http://www.cnblogs.com/zhengyun_ustc/archive/2005/10/24/mobiletrafficcamviewer.html

这篇关于[J2ME] 手机看交通监视器实时录像 实现说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814479

相关文章

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr