OMA Download 入门
背景介绍:
既然是OMA DOWNLOAD 简介,那我们先介绍一下背景知识,来了解一下什么是OMA:
OMA(OPEN MOBILE ALLIANCE 开放移动联盟)始创于2002年6月12日,WAP论坛(WAP Forum)和开放式移动体系结构(Open Mobile Architecture) 两个标准化组织通过合并成立最初的OMA。随后,区域互用性论坛(Location Interoperability Forum (LIF)), SyncML, MMS互用性研究组(MMS Interoperability Group(MMS-IOP)) 和无线协会(Wireless Village), 这些致力于推进移动业务规范工作的组织又相继加入OMA。此外,移动博弈互用性论坛(Mobile Gaming Interoperability Forum (MGIF)) 和移动无线因特网论坛(Mobile Wireless Internet Forum (MWIF)) 都表明了自己想加入OMA的意图。截至成立当年11月份,OMA就已发展成员公司约300家。其成员公司包括了世界主要的移动运营商,设备和网络供应商,信息技术公司,应用发展商和内容提供商。整个价值链上的成员共同协作,以确保为全世界的终端用户提供无缝的移动业务。
OMA的形成标志着移动业务的发展向前迈出了重要的一步,避免了由于分散的个体而容易导致的技术上的孤立。几个规范组织的合并,有利于信息和资源的共享,促进了工作的流程化,减少了不必要的重复劳动。一个统一的合法框架确保了技术和标准的真正意义上的互用性测试。这将使市场运作更加快捷并减少了工业总成本和复杂性。开放式移动联盟的任务是为全球的用户消除不同系统间的屏障,确保无缝的互用性业务,促进整个移动工业市场的发展。
上面我们看到OMA是致力于寻求一种与系统无关的、开放的,使各种应用和业务能够在全球范围内的各种终端上实现互联互通标准的联盟组织。而OMA DOWNLOAD 即是开发移动联盟(OMA)定义的下载技术,能够为普通类型的内容提供可靠的下载功能,可用于管理数字多媒体版权,防止盗版及不合理的使用。
OMA DOWNLOAD:
OMADownload提供了一种从web服务器下载媒体对象的方式,主要包含两大块:
(1) 媒体对象的下载;
(2) 在移动终端上根据版权对象播放媒体对象。
OMADownload是建立在Http Download和MIDlet Download之上的,OMA Download和MIDlet Download的主要区别是:MIDlet Download主要是为下载JAVA应用而设计的,而OMA Download扩展了Http Download的流程,增加了两个额外的步骤:
(1)在现在媒体对象之前,需要首先下载一个download descriptor类似于描述符的文件,也就是所谓的dd文件,该文件包含了许多与需要下载的媒体对象相关的信息。
(2)媒体对象下载完毕之后,移动终端需要发送一个状态报告至服务器端,便于服务器端监测服务质量和收费。
OMA DOWNLOAD作用和好处:
OMA DOWNLOAD的目的是定义一种将数字内容保存到用户移动终端的方法,这些数字内容可以是图片、音频、视频、游戏、商业应用数据等所有以数字形式存在的信息。
Http下载适合于页面的浏览,不适合于这种计费的媒体对象的下载,因为它无法创建一个服务器或者计费系统来确保客户端已经收到媒体对象。
OMA下载:为普通内容的下载提供了可靠的下载功能,是一种基于描述符文件的下载方式,描述符文件包含:媒体对象的Metadata;下载媒体对象的URL;发送状态报告的URL;在下载过程中,设备首先从服务器获取下载描述符文件,然后对其进行解析,解析出的信息允许设备判断是否可以处理此媒体对象——动态性能检查,检查之后可以知道是否要下载此媒体文件,如果要下载,则取下载描述符文件中的下载媒体对象的URL,进行下载,下载完成后,从下载描述符中获取出发送状态报告的URL,向服务器发送一个安装告示通知给服务器,服务器收到用户下载成功的消息之后,再计费,此时会向而客户端发送一个确认响应,如果服务器没有收到客户端发送的安装告示通知的消息,则客户端就不会收到服务器的确认响应,则此时不计费,同时客户端的安装程序也是不能用的,这样,就保证了客户端和服务器之间的下载可靠性。
OMA DOWNLOAD 流程:
在OMADownload系统中,媒体对象被看做一个文件,通常在web服务器上用URL标识。
标识媒体文件的download descriptor通常包含:媒体对象的Metadata;下载媒体对象的URL;发送状态报告的URL;
各个元素之间的关系如下:
对于此图的理解:
左框Download: 其中的download descriptor(下载描述符)和status report(状态报告)是1对1或1对0的关系,如果download descriptor文件中要求发送status report给服务器,并且包含了发送状态报告URL,则为1对1的关系,并需要发送status report给服务器,否则不发送。
中间小框Media object,0个或多个download descriptor可以用来描述一个媒体对象;0个或多个right objects可以用来规定媒体对象的使用,一个媒体对象对应一个DRM Content Format
右框DRM,一个DRM Message对应一个DCF和一个right object
参考下图可以弄清楚各个网络实体之间的关系。
用户可以通过presentation server查看有哪些媒体对象可供下载,选择了喜欢的文件后,交由download agent负责从download server上下载媒体对象,注意,下载的媒体对象一定是事先经过DRM packager打包的,同时在下载完毕后,根据downloaddescriptor来决定是否发送status report。当以上步骤完成后,媒体对象就交由DRM Agent来控制了。
OMA Download标准文档中给出了3个user case:
HTTPDownload
1.客户向URL发起一个GET请求,例如点击web上的一个链接;
2.客户端发送一个GET至服务器,并等待响应;
3.服务器根据请求返回数据给客户端;
4.客户端接收服务器返回的数据,并根据HTTP头来进行相应的处理;如果客户端不支持HTTP头中Content-type所指示的媒体对象类型,客户端可以关闭连接,服务器发现超时;如果客户端判断HTTP头中Content-length字段,发现无法保存
CombinedDescriptor and Media Object(描述符和媒体对象组合发送)
客户端发送GET请求后,服务器将download descriptor和媒体对象同时发送至客户端,因此,客户端无法对下载媒体对象进行确认。
1.客户向URL发起一个GET请求,例如点击web上的一个链接;
2.客户端发送一个GET至服务器,并等待响应;
3.服务器将媒体对象和download descriptor打包,作为服务器响应,返回给客户端;
4.根据download descriptor的指示来决定是否发送status report。
Separate Descriptor and Media Object(描述符和媒体对象分别发送)à常用
1.客户向URL发起一个GET请求,例如点击web上的一个链接;
2.客户端发送一个GET至服务器,并等待响应;
3.服务器将download descriptor作为响应,返回给客户端;
4.客户端接收到download descriptor并解析,提示用户是否下载;
5.客户端确认下载,获取对应媒体对象。
具体事例如下:
基于下载描述符概念的通用OMA下载包括3种基本的情况:
● 下载描述符与媒体对象分别发送的OMA下载:
● 下载描述符与媒体对象组合发送的OMA下载;
● 不含有安装通知的OMA下载。
下面以下载描述符与媒体对象分别发送的OMA下载的情况为例,描述业务实现流程,如图3-23所示。这种下载的过程包括:用单独的请求一应答交互对发送下载描述符、内容发送和可选的应用层事务处理过程确认。
图中下载描述符和媒体对象是分开发送的。在没有定义Install Notify URI的情况下,这一下载过程中第④个应答交互可以进行删减。(即:download descriptor中要求发送status report给服务器则要第④个应答,否则不要,发送status report不是必选的)
①客户通过平台门户上业务目录索引发现包含有想要下载的内容。
②客户选择指向下载描述URI的链接,该下载描述文件保存在下载业务系统中。下载业务系统向客户端返回下载描述文件,下载描述中包含所引用媒体对象的URl地址。
③客户经过下载业务系统用户鉴权及业务管理平台计费发起后从下载业务系统中获取媒体对象文件。
④客户向下载业务系统上报有关本次下载过程的状态报告。下载业务系统根据该状态报告,向业务管理平台发送计费请求消息。
Downlod Description(DD文件):
DownLoad Description文件一般来说后缀是dd,但也存在后缀是jsp或者php的情况,所以不能以后缀为dd为标准来判断是否为DownLoad Description文件。可以使用文件属性mimeType等于 application/vnd.oma.drm.message来判断。
下面我们以一个例子来说明DD文件内容:
<media xmlns= "http://www.openmobilealliance.org/xmlns/dd"><objectURI>http://omadl-perso.ftgroup-devices.com/Images/GIF_fixes/f1_logo_om.gif</objectURI><size>1024</size><type>image/gif</type><name>image01</name><vendor>XXXXX</vendor><description> Describe the file here</description>
</media>
1. objectURI : 要被下载的档案的完整URL在这个Script是用<media>包起来的, 下面这三个栏位是必须的
2. type : 要被下载的档案的 MIME Type
3. size : 被下载档案的size(单位是byte)
非必须的栏位有:
1.installNotifyURI : 安装完或下载完通知的 URL
2.nextURL : 结束下载后转至的 URL
3.DDVersion : 档案版本 (目前MTK支持1.0,高通支持1.x)
4.name : 下载档案的名称(可自行取, 不用跟档名一致)
5.description : 简单的描述
6.vendor : 作者名称
7.infoURL : 档案说明的 URL
8.iconURI : 档案的 icon 图示的 URL
9.installParam : 安装时额外的参数
在非必须的栏位中有两个栏位要注意的
1.installNotifyURI : 这个栏位在下载完或安装完时, 会通知你指定的 URL,这样可以知道,用户有没有下载成功, 这在Internet的环境中是无法得知的,其用意是让营运商计费用的, 也可以正确的统计下载次数
2.nextURL : 这个栏位是在下载完后, 通知WAP转至指定的URL, 在这个页面,你可以用上面的Info, 马上统计出下载量, 也可以马上显示感谢下载的页面,或其他你想得到的(有些手机要成功下载才会转至此 URL)
installNotifyURI的通知方式是用POST的方式, 在你指定的页面接收POST的值就可以得知下载结果;POST的内容有
1.900 Success : 成功下载完成
2.901 Insufficient memory : 手机不接受此档案的规格或手机的记忆体已不足存放此档案
3.902 User Cancelled : 用户自行取消下载
4.903 Loss of Service : 下载时手机无讯号
5.905 Attribute mismatch : 实际的档案属性与DD档中描述的不一致(一般是文件大小)
6.906 Invalid descriptor : 错误的DD档 (DD文档格式不对)
7.951 Invalid DDVersion : 不正确的版本宣告(目前MTK支持1.0,高通支持1.x)
8.952 Device Aborted : 与 901 讯息类似, 也是不支援或记忆体不足所造成的
9.953 Non-Acceptable Content : 手机不支援此档案
10.954 Loader Error : objectURI所指定的 URL 错误, 找不到下载的档案或档案有问题
OMA DOWNLOAD 代码流程(以Qualcomm为例):
1、浏览器中触发文件下载:
DownloadHandler.java onDownloadStart |
2、开始下载DD文件
OmaDownloadActivity.java onCreate start ------doInit start --------------------setListViewValues --------------------startDownload ------doInit end OmaDownloadActivity.java onCreate end |
DownloadThread.java runInternal start ------executeDownload(开始执行下载) ------notifyDownloadCompleted start(通知下载完成) ------------DownloadInfo.java sendIntentIfRequested ------notifyDownloadCompleted end DownloadThread.java runInternal end OMADownloadComplete.java onReceive(下载完成) |
3、解析DD文件
ODDownloadEngine.java onCreate start ------ readFile start ------------- parseXml (解析dd文件) ------------- onCreateDialog (弹出文件信息确认框) ------ readFile end ODDownloadEngine.java onCreate end |
4、下载真实文件
ODDownloadEngine.java downloadMediaAction OmaDownloadActivity.java onNewIntent DownloadThread.java runInternal start ------ executeDownload(执行下载) ------------ notifyDownloadCompleted start(通知下载完成) ------------------------ DownloadInfo.java sendIntentIfRequested() ------------notifyDownloadCompleted end DownloadThread.java runInternal end OMADownloadComplete.java onReceive(下载完成) ODStatusReportor.java sendAndRecevie()(发送状态码) |
参考:
http://www.blogjava.net/lihao336/archive/2010/05/05/320142.html
http://blog.163.com/matthewschen@126/blog/static/81585140200911234024302/
OMA Download 入门相关推荐
- OMA Download
总结:OMA Download与Java MIDlet Download非常相似,部分细节根据特性需求进行了扩展. OMA Download提供了一种从web服务器下在媒体对象的方式. OMA Dow ...
- OMA DRM 1.0 – OMA Download 框架
author: A.TNG email: jiyucn_at_163_dot_com 总结:OMA Download与Java MIDlet Download非常相似,部分细节根据特性需求进行了扩展. ...
- OMA DRM V1.0学习笔记
author: A.TNG email: jiyucn_at_163_dot_com OMA中关于DRM的定义主要是为了给内容提供商提供一种控制媒体对象使用的方式,包括对DRM Message的预览. ...
- Download数据库及一些常量解析
Downloads内部类Impl有具体含义 public static final class Impl implements BaseColumns {// ...// 调用者UID所拥有的下载pu ...
- Spring Boot2.x-14 使用Prometheus + Grafana 实现可视化的监控
文章目录 环境信息 Prometheus 组件 下载 & 安装 通过指定配置文件prometheus.yml启动Prometheus 查看采集到的性能指标 查看prometheus规则 查看监 ...
- Android精品软件汇总(不断更新)
用Android手机有一段时间了,发现了不少优秀的软件,在这里向大家推荐一下 1.GTasks:手机上的任务列表,与谷歌账户同步还可以显示日历上的待办事项,做备忘录用 下载地址:https://pla ...
- 常用MIME类型(Mp4的mime类型设置)
前两天在遇到了一个h5写的mp4视频网页在某些电脑中打开后只下载而不播放的问题(大部分电脑都播放正确,而有些电脑在打开网页时就会变成迅雷下载,下载完成也不会播放). html如下: <video ...
- OMA DRM原理的研究及实现
一.DRM技术简介 DRM(Digital Right Management)是数字权限管理的简称,又可以称为"内容数字版权加密保护技术",是目前应用最广泛的内容版权保护技术.其 ...
- 云知识 - OMA-DM 和OTA的关系
OMA-DM和OTA关系 OTA是一种方式 OMA-DM是一种协议. OMA-DM通过OTA方式,可以升级移动端软件. OMA-DM OMA : Open Mobile Alliance OMA-DM ...
最新文章
- Maven学习——安装与修改Maven的本地仓库路径
- python制作工资计算器-Python实现扣除个人税后的工资计算器示例
- python 如何重定向输出
- docker 搭建Tomcat web 简单示例过程
- 打印user webclient ui浏览历史的工具
- 7收不到邮件 contact form_如何解决Contact Form 7提示的配置错误
- 图文|Android 使用Thread 和多线程使用互斥锁
- 使用 XHGui 对 PHP 应用进行性能诊断
- CCF201612-5 卡牌游戏(募集解题代码)
- java无头浏览器_java – 使用无头浏览器的Android Web Scraping
- 基于Edge插件+格式工厂下载B站上的喜欢视频
- Java+学生信息管理系统+GUI+文件
- C语言移动营业厅程序设计,c语言实现移动电话系统
- Linux基本指令(1)
- photoshop cs6用户界面字体太小的解决方案
- 高速公路上边有没有人脸识别摄像头_支小蜜初高中智慧校园人脸识别消费系统...
- Hbuilderx 代码折叠和展开
- 给键盘加上音效(机械键盘音效)
- linux命令:tar(打包、压缩、解压)
- dz论坛去掉orum.php,DiscuzX3.4最新论坛漏洞修复解决方案
热门文章
- 最热门的网络游戏排行榜及分析
- Make a cool intro for your Android app.
- 无线路由器“无线漫游”
- Mysql 常用函数(40)- time_to_sec 函数
- 山东科技大学OJ题库 1011-GHacker的解谜过关游戏
- 如何使用字体图标——icomoon使用详细介绍
- 基于协同过滤的图书推荐系统(python+MySQL+Django)
- uniapp 英寸尺子 尺子 左右滑动
- 初中计算机的组成试讲教案模板小学语文,初中语文面试试讲教案
- Angular4 Angular HttpClient