CN103064662B - 基于Android平台的PhoneGap跨平台媒体扩展框架 - Google Patents
基于Android平台的PhoneGap跨平台媒体扩展框架 Download PDFInfo
- Publication number
- CN103064662B CN103064662B CN201210309708.6A CN201210309708A CN103064662B CN 103064662 B CN103064662 B CN 103064662B CN 201210309708 A CN201210309708 A CN 201210309708A CN 103064662 B CN103064662 B CN 103064662B
- Authority
- CN
- China
- Prior art keywords
- module
- platform
- music
- interface
- multimedia
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Telephone Function (AREA)
Abstract
本发明涉及一种基于Android平台的PhoneGap跨平台媒体扩展框架。其包括PhoneGap和jQuery Mobile的开源框架,在PhoneGap和jQuery Mobile的开源框架之上构建目录模块、多媒体播放模块和媒体框架的Javascript接口;目录模块用于提供多媒体目录,提供WEB样式和Javascript接口;多媒体播放模块用于多媒体的播放,多媒体列表通过目录模块提供;媒体框架的Javascript接口是将多媒体播放模块封装形成的向外提供的标准的多媒体播放预览接口。本发明可简单地使用Javascript构建类似本地的应用程序的软件,能提高程序员的效率,节省资源支出。
Description
技术领域
本发明属于PhoneGap平台的本地及网络媒体应用插件设计领域,具体涉及一种基于Android平台的PhoneGap跨平台媒体扩展框架。
背景技术
智能设备的普及,移动平台的应用也得到大力推广。移动互联网的快速发展带来了一个非常庞大的市场,成为众多移动厂家逐利的方向,铺天盖地的移动应用采用工厂式的复制,从一个平台复制到其它平台,如果推广的时间晚了,竞争对手势必会复制并推广到其它平台上。但是现有的平台如此之多,没有跨平台的应用开发工具将会使得开发的工作量非常大,因此,很多中间件厂商提出跨平台概念,例如REXSEE 公司提出的使用HTML5 + JavaScript + CSS3 来实现的移动中间件产品EMS 已经开始投入市场,但是中间件的形式对于访问本地文件有很大的局限性。
PhoneGap可以将基于标准HTML、CSS和Javascript打造的页面视图封装为本地客户端应用,目前支持10种移动平台,在数据资源传输方面,可以采用普通Web App所使用的Ajax等方式。PhoneGap在页面视图与本地应用之间提供了一个桥梁,允许开发者通过JavaScript访问并使用移动设备的硬件功能,比如摄像头、联系人信息、麦克风等;这是单纯依靠移动浏览器运行的Web App类应用所无法实现的,而且PhoneGap前端开发工具主要是模拟移动本地应用的UI样式,让Web
App看起来像是本地原生的UI(User Interface,用户界面)。目前大部分跨平台前端开发工具都采用Javascript框架来实现本地效果的渲染。
由于主流的移动平台之前互不兼容,没有一套标准的接口去实现跨平台的软件开发。例如,Symbian使用C/C++、iOS使用Object C、Android使用Java、BlackBerry使用Java(与Android的接口不一样)、Windows Phone使用C#,它们几乎无法融合,就算是都采用Java接口的Android和BlackBerry,它们的API(Application Programming
Interface,应用程序编程接口)接口也不一样,如果想开发一套原生的应用,必须在每个平台调用各自的原生API。这样会让程序开发人员耗费更多的人力物力,而维护费用也直线上升。
针对上面提出的问题,结合移动平台最重要的本地应用之一就是多媒体播放应用,所有移动平台都需要图片浏览、音乐播放和视频播放工具。开发者在移动平台开发的时候经常需要涉及到移动平台本地和网络的多媒体播放,而由于平台间差异导致同一应用需要多次重复编码,非常不便于应用的开发与维护,开发者往往希望通过一次编码,能够同时应用到不同的平台中。但目前PhoneGap在移动平台上仅仅提供一些基本功能,但是对于多媒体播放的支持还不够全面,还不能实现跨平台的应用。
发明内容
本发明解决的技术问题是克服现有技术的不足,提供一基于Android平台的PhoneGap跨平台媒体扩展框架,该框架主要为程序开发人员提供基于Android平台的PhoneGap多媒体插件,能够很好的弥补了目前PhoneGap不能很好的支撑多媒体框架的缺陷,同时也能够很好的解决对于多种平台的同一应用重复开发编码及不便于应用的开发与维护问题,从而提高程序员的效率,节省相关的资源支出。
为解决上述技术问题,本发明的技术方案如下:
一种基于Android平台的PhoneGap跨平台媒体扩展框架,包括PhoneGap和jQuery Mobile的开源框架,在PhoneGap和jQuery Mobile的开源框架之上构建目录模块、多媒体播放模块和媒体框架的Javascript接口;
所述目录模块用于提供多媒体目录,其提供WEB样式和Javascript接口;
多媒体播放模块用于多媒体的播放,其多媒体列表通过目录模块提供;
媒体框架的Javascript接口是将多媒体播放模块封装形成的向外提供的标准的多媒体播放预览接口。
本发明中以PhoneGap、jQuery Mobile两个开源平台为基础,并在之上构建多媒体播放预览接口,对外提供Javascript的标准接口,不同的移动设备平台只需要有PhoneGap和jQuery Mobile的支持,则可以简单地使用Javascript构建类似本地的应用程序的软件。
优选地,所述目录模块包括简单工作模式模块,用于提供多媒体目录列表。
优选地,所述多媒体模块包括:
图片预览模块,用于实现图片预览功能,其图片列表由目录模块提供;
音乐播放模块,用于音乐的播放,其音乐列表由目录模块提供;
视频播放模块,用于视频的播放,其视频列表由目录模块提供。
优选地,所述图片预览模块包括:
图片预览模块,其用于图片目录的展示和图片预览图的展示;
缩略图模块,用于图片显示;
图片事件委托处理模块,用于处理图片预览的事件处理,图片预览模块和缩略图模块通过图片事件委托处理模块加载相应图片数据。
优选地,图片预览模块通过同步记载数据模式从图片事件委托处理模块中加载数据,缩略图模块通过异步加载数据模式从图片事件委托处理模块中加载数据。
优选地,所述缩略图模块采用分页管理。
优选地,所述音乐播放模块包括:
音乐播放核心模块,用于实现音乐播放的具体动作;
音乐播放控制模块,其通过插件实现,作为前台的Javascript接口响应调用,对音乐播放的具体动作进行控制。
优选地,所述音乐播放核心模块采用平台自带的播放器实现。
优选地,所述视频播放模块采用双模式播放器,一种是基于Android操作系统原生的OpenCore播放器,另一种是基于移植的VLC开源框架的播放器。Android原生的基于OpenCore的播放器,内置的解码器种类太少,目前只支持mp4、3gp等少量的视频格式,而对于rm、rmvb、avi等主流的视频格式基本不支持,并且目前OpenCore对于网络流RTSP和HTTP流媒体,没有当前主流的MMS流媒体的支持。基于移植的VLC开源框架的播放器采用主流的解码器FFmpeg,基本支持所有当前主流的视频格式,并且支持MMS等主流的流媒体播放,因此基于移植的VLC开源框架的播放器是解决基于OpenCore的播放器不足的一个解决办法。而且VLC采用标准的C/C++开源库,并采用加载动态库模块的做法,方便维护和扩展,可以再不同的平台通过移植VLC制作相应的视频或网络播放器。
优选地,多媒体播放预览接口设置与图片预览模块、音乐播放模块和视频播放模块一一对应的Javascript接口。多媒体播放预览接口针对图片预览、音乐播放和视频播放向外提供标准的Javascript接口,它提供基本的媒体播放框架的Javascript功能接口,具有跨平台性能。
与现有技术相比,本发明技术方案的有益效果是:
本发明中以PhoneGap、jQuery Mobile两个开源平台为基础,并在之上构建多媒体播放预览接口,对外提供Javascript的标准接口,不同的移动设备平台只需要有PhoneGap和jQuery Mobile的支持,则可以简单地使用Javascript构建类似本地的应用程序的软件。本发明的框架主要为程序开发人员提供基于Android平台的PhoneGap多媒体插件,能够很好的弥补了目前PhoneGap不能很好的支撑多媒体框架的缺陷,同时也能够很好的解决对于多种平台的同一应用重复开发编码及不便于应用的开发与维护问题,从而提高程序员的效率,节省相关的资源支出。
而且本发明还采用双模式播放器,基本解决视频格式支持和网络播放流媒体支持的难题。
附图说明
图1本发明的总体设计图;
图2为本发明的基于PhoneGap的目录模块设计图;
图3为本发明的基于PhoneGap图片浏览模块设计图;
图4为本发明的基于PhoneGap音乐播放模块的设计图;
图5为本发明的基于PhoneGap视频播放模块的设计图;
图6为本发明的基于PhoneGap平台的视频播放控制模块的设计图;
图7 为本发明与不同移动平台结合的简单架构图。
具体实施方式
下面结合附图和实施例对本发明的技术方案做进一步的说明。
如图1所示,为本发明的总体设计图。
一种基于Android平台的PhoneGap跨平台媒体扩展框架,包括PhoneGap和jQuery Mobile的开源框架,在PhoneGap和jQuery Mobile的开源框架之上构建目录模块、多媒体播放模块和媒体框架的Javascript接口;
目录模块用于提供多媒体目录,其提供WEB样式和Javascript接口;
多媒体播放模块用于多媒体的播放,其多媒体列表通过目录模块提供,其包括用于实现图片预览功能的图片预览模块、用于音乐的播放的音乐播放模块和用于视频播放的视频播放模块,其中图片列表、音乐列表、视频列表具有目录模块提供。
媒体框架的Javascript接口是将多媒体播放模块封装形成的向外提供的标准的多媒体播放预览接口,其对应于图片预览模块、音乐播放模块和视频播放模块各设置对应的Javascript接口。
目录模块是在不同移动平台上构建基于PhoneGap的多媒体目录文件搜索,让不同移动平台的多媒体列表能够使用Javascript接口获取不同类型的多媒体,为本发明的框架提供多媒体目录,提供分页管理等功能,为图片预览模块、音乐播放模块、视频播放模块提供本地列表的Javascript接口。本发明设计的目录模块主要分成三大模块:基于PhoneGap的目录Plugin插件、基于PhoneGap.js.base的Javascript接口和基于jQuery Mobile的目录UI、分页及事件处理,如图2所示,可以在垂直层次上了解目录模块中各个模块之间的关系,其中,目录模块设置有权限访问设置功能,不同的移动设备平台添加不同的权限管理功能。
基于PhoneGap的目录Plugin扩展是基于PhoneGap开源平台,要扩展该平台的插件需要让主要类继承自Plugin抽象类。因此在设计该目录模块Plugin时,设计一个DirectoryPlugin类继承自PhoneGap的Plugin类,并主要实现Plugin抽象类的execute方法。该方法的实现效果流程如下:
当有外部的Javascript对于目录Plugin的调用时,会通过PhoneGap平台的plugin.xml文件的类标识,PluginManager类创建DirectoryPlugin对象,把对象转化为Plugin抽象类对象,再执行DirectoryPlugin的execute方法响应调用。
当Javascript请求送达DirectoryPlugin的execute方法内部时,先在终端Log输出标识已经执行到该模块。
判断当前Javascript使用的是哪种类型的请求。它的请求分为两大种类:选择媒体目录类型和目录的翻页等事件。在接口中定义了三种类型的目录:Photo、Music和Video,在Javascript层次也定义了init_photo、init_music和init_video三种初始化目录类型的请求。而对于目录的翻页事件:next(下一页)、preview(上一页)、first(首页)等事件,对应MediaDirectory的NextPage、PreviewPage、FirstPage方法。这几个简单的方法构成简单的翻页操作事件。
最后完成操作后,需要返回JSONObject类型(Javascript的JSON)的结果。
目录模块的简单工厂模式,先声明一个ImediaTypeFilter接口,接口包括一个isAccept的方法,需要它的实现类实现该方法。同时基于ImediaTypeFilter接口的实现类有PhotoMediaTypeFilter、VideoMediaTypeFilter和MusicMediaTypeFilter,这三个类继承接口,并实现过滤器的isAccept方法,不同的类型的过滤器有不同的过滤实现方法。在MediaDirectory类中,定义了过滤器接口,并在构造函数中传递外部定义好的过滤器类对象。MediaDirectory中实现了基于过滤器的目录分页管理,包括FirstPage(首页)、NextPage(下一页)、PreviewPage(上一页)等操作。由于PhoneGap平台的PluginManager管理Plugin是采用一个请求创建一个对象的形式来响应,因此对于分页管理的数据需要采用持久化模式才能保证分页管理的效率。在MediaDirectory类中采用单身模型,让一个类拥有持久化的多媒体目录列表。MediaDirectoryCreator是简单工厂模式的工厂类,它提供三个方法分别创建三种类型的MediaDirectory。
图片预览模块是实现移动平台图片预览功能,其提供标准的Javascript接口实现不同平台的图片预览功能。图片预览模块采用HTML中的IMG标签实现图片的预览,尽量避免更多的使用本地的Native API接口。在这个模块中用到的Native API主要是目录模块的API接口。在Web页面上访问本地的图片,至少需要列出图片的地址,在本图片预览模块中采用列出图片的缩略图,并采取分页管理和异步加载的方法。如图3所示,图片浏览模块中主要包括:
图片预览模块实现用户界面,用于图片目录的展示和图片预览图的展示,(用户界面);
缩略图模块,用于图的显示;
图片事件委托处理模块,用于处理图片预览的事件处理,图片预览模块和缩略图模块通过图片事件委托处理模块加载相应图片数据。其中图片预览模块通过同步记载数据模式从图片事件委托处理模块中加载数据,缩略图模块通过异步加载数据模式从图片事件委托处理模块中加载数据。
为能够适用于本发明跨平台的媒体播放框架,将图片预览模块制作成一个通用UI页面。图片预览模块的实现主界面是采用jQuery Mobile的UI风格设计,jQuery
Mobile的“页面”都有三个标签“Header”、“content”和“footer”。图片模块采用jQuery Mobile两个“页面”展示图片。其中一个“页面”展示图片的目录;另一个“页面”展示图片的预览图。每个“页面”的“Header”表示页面的头标题,可以在“Header”中放置返回按钮,也可以添加页面标题。“content”表示“页面”的内容,页面的内容可以添加任意想要的jQuery Mobile UI控件,也可以自定义UI控件。“footer”表示页面的底部状态栏,它也可以自定义格式,并且在里面添加相应的UI控件。下面详细介绍这两个页面的一些实现方式。
图片目录采用目录模块的简单工厂模式“生产”图片列表。在目录模块的简单工厂模式中,采用Photo的过滤器,过滤其它非指定图片文件格式的目录。在图片目录的“page”中,要注册多个函数,首先是翻页的三个事件:pageNext、pagePreview、pageFirst,它们分别代表下一页、上一页和首页。目录的列表采用jQuery Mobile的UI控件类型<ul
data-role="listview">,它是普通HTML的UL列表形式,但是采用jQuery Mobile的CSS模式“listview”,这种模式采用自适应的移动设备的列表,模拟移动设备的本地列表形式。当点击翻页控件的事件时,先通过目录模块的简单工厂模式获取JSON格式的目录名称,然后把它们作为UL的LI添加到UL中,最后采用jQuery Mobile的刷新列表形式方法$("#listview_image
").listview('refresh'),这种刷新方式可以动态的并且局部的刷新目录列表。在当前“page”中,需要使用jQuery注册目录“listview”的点击事件,并且需要传递图片的地址,注册点击事件的函数是$('#listview_image a').live('click', function(e)),它传递的this对象表示listview中的LI对象,采用jQuery的选择器选择列表中缩略图的地址,最后把地址设置为预览页面的img对象的地址上,至此完成切换。
音乐播放模块把音乐播放核心和音乐播放控制分开,形成音乐播放核心模块和音乐播放控制模块,前台的Javascript接口的音乐播放控制模块是由插件实现,但是音乐播放核心模块采用平台自带的播放器实现。
如图4所示,音乐播放模块是基于PhoneGap的平台之上的功能扩展,音乐播放模块的Javascript接口必须基于扩展后的音乐播放模块才能发挥作用。基于PhoneGap的音乐播放模块主要提供音乐播放的基本功能,包括正常的播放、暂停和进度条等,也包括音乐播放事件的处理。音乐播放模块包括两个类,一个是AudioPlayer,一个是AudioHandler。两个类中都有相互的引用。例如在AudioPlayer中需要引用AudioHandler提供的sendJavascript接口向Web页面发送音乐播放的事件,而在AudioHandler中需要引用AudioPlayer提供播放功能。这两个类需要相互之间的一些接口实现这个音乐扩展模块功能。下面介绍音乐播放核心模块和音乐播放控制模块的实现。
A. 音乐播放核心模块的实现
第一层的音乐播放插件的实现主要有两个类:AudioHandler和AudioPlayer。AudioPlayer需要实现OnCompletionListener, OnPreparedListener, OnErrorListener这三个接口,该类实现音乐播放的具体动作,继承的三个接口是音乐播放三种监听委托。
当音乐播放开始时,它会自动调用接口OnPreparedListener的onPrepared函数,AudioPlayer类在onPrepared函数中会设置OnCompletionListener接口的setOnCompletionListener(this),然后检测是否在prepared后才开始播放,如果是的话,则启动Android自带的MediaPlayer对象,然后保存音乐的播放时长,并且向Javascript前台发送播放状态。
当设置setOnCompletionListener(this)后,音乐播放完毕则会触发OnCompletionListener接口的onCompletion函数,它的功能只是简单的向Javascript前台返回播放停止的状态。
当播放失败时,则会调用OnErrorListener接口的onError函数,则注销MediaPlayer对象,并向客户端发送错误消息。
AudioPlayer类中实现了一些播放音乐的接口startPlaying(String
file),它可以播放本地音乐、网络音乐或者继续播放暂停的音乐。当需要播放网络音乐时,传递的file需要带有“http://”或者“https://”的字段,采用http协议下载音乐文件,然后MediaPlayer会启动网络播放功能,网络音乐的播放。而对于本地文件,则启动MediaPlayer的本地播放功能。当AudioPlayer对象被暂停后,有新的startPlaying的请求时,则会继续刚才被暂停的播放状态。
seekToPlaying(int
milliseconds)是定位播放位置接口,在Javascript的slider进度条中点击的话,则会触发seekToPlaying这个函数重新定位播放位置。
getDuration(String
file)函数是返回float类型的音乐时长。如果没有,则返回-2错误提示,如果音乐暂未播放,则启动音乐播放,然后返回时长。
getCurrentPosition()返回音乐当前播放的位置。如果失败则返回-1错误提示。
B.音乐播放控制模块的实现
AudioHandler继承PhoneGap的Plugin抽象类,它在PhoneGap的plugin.xml中注册,当有Javascript调用音乐播放的接口时,则先通过DroidGap的WebChromeClient捕获HTML页面传递的调用参数,PluginMananger从plugin.xml匹配音乐播放的类名,然后构建AudioHandler类的对象,赋值于Plugin对象,并把传递的参数传给它的execute函数,执行音乐播放功能。因此AudioHandler最重要的功能是重载Plugin的execute函数接口,并且实现音乐播放的功能接口,在execute函数中,需要根据Javascript调用参数,匹配相应的音乐播放接口。
HashMap<String,AudioPlayer>
players属性是AudioHandler类中保存播放对象的哈希表,该哈希表中可以存放多个播放对象。每个播放对象对应一个UUID(唯一字段)。这种做法可以实现在Javascript页面,多个页面调用音乐播放的功能,同时播放不同的音乐。
ArrayList<AudioPlayer>
pausedForPhone属性保存被暂停音乐播放对象。
startPlayingAudio(String
id, String file)当有Javascript传递的startPlayingAudio动作请求时,调用该函数。每个AudioPlayer对象需要对应一个唯一标识ID。函数创建AudioPlayer对象,并和ID保存于players哈希表中,同时启动该AudioPlayer对象。
seekToAudio(String id, int
milliseconds)函数根据ID从players哈希表中寻找相应的AudioPlayer对象,并重新设置
pausePlayingAudio(String
id)暂定音乐播放。
stopPlayingAudio(String id)停止音乐播放,并不注销AudioPlayer对象。
getDurationAudio(String id, String file)获取音乐的播放时长。
getCurrentPositonAudio(String id)获取当前播放位置。
视频播放模块采用双模式播放器,一种是基于Android操作系统原生的OpenCore播放器,另一种是基于移植的VLC开源框架的播放器。
A. 视频播放模块的实现
如图5所示,PhoneGapPlayer抽象类具备视频播放的所有函数,还定义了视频播放的监听接口。PhoneGapPlayer负责调用VLCPlayer和OpenCorePlayer,默认情况下,先选择Android自带的媒体库OpenCore进行播放,如果OpenCore播放Prepare时出现错误,则重新选择VLCPlayer。这种做法是因为有些Android系统自带的OpenCore添加了硬解码功能,硬件解码使播放更加流畅。PhoneGapPlayer抽象类的一些重要抽象函数如下:
getDefMediaPlayer()是获取OpenCorePlayer对象的函数;
getVlcMediaPlayer()是获取VLCPlayer对象的函数;
setDisplay(SurfaceHolder
holder)设置VLCPlayer的SurfaceHold,SurfaceHold是VLC视频输出的模块需要的输出接口;
seekTo(int msec)是根据参数msec时间定为播放位置;
getCurrentPosition()获取当前播放位置;
getVideoHeight()获取视频的输出图片的高度;
getVideoWidth()获取视频的输出图片的宽度;
prepare()视频播放前的视频信息准备;
pause()视频播放暂停;
start()视频开始播放;
stop()停止播放视频;
上面这些函数都是抽象函数,在PhoneGapPlayer没有实现,而是由它的继承者去实现它的功能,它的两个继承者就是VLCPlayer和OpenCorePlayer。PhoneGapPlayer抽象类中还定义了视频播放的各种监听事件接口:
Interface OnBufferingUpdateListener表示数据加载中,当采用流媒体播放的时候,数据还未加载完毕时,提示用户,数据正在Loading;
interface
OnCompletionListener该接口在视频播放完成后触发,并提示用户播放结束的信息;
interface
OnErrorListener该接口在视频播放错误时触发,提示错误类型;
interface
OnInfoListener该接口获取视频信息时触发,提示相应的视频信息;
interface
OnPreparedListener该接口在视频准备时触发,并提示准备完毕;
interface
OnProgressUpdateListener该接口在视频进度条更新时触发;
interface
OnVideoSizeChangedListener该接口在视频窗口改变时触发;
B.基于Android平台的PhoneGap插件
基于Android的PhoneGap双模式的插件是采用PhoneGap的标准接口,并实现Javascript调用Android的播放器的Native API。如图6所示。由于视频播放跟图片、音乐播放不一样,需要屏幕的实时输出,因此在设计时,虽然采用跟音乐播放类似的对外Javascript接口,但是实际操作上,对于视频播放的控制操作基本都是在视频播放的Android的View中实现,只是从外部传递一个视频的地址(包括网络地址和本地地址)到PlayerActivity对象中,对象根据视频地址获取视频格式,然后在SurfaceView中播放视频,并创建一个播放控制的View,当有触摸事件发生时,显示控制View,并等候用户的触摸动作。
基于Android的双模式视频播放PhoneGap插件继承PhoneGap的Plugin抽象类,并实现它定义的标准接口execute函数。该接口是PhoneGap通过PluginManager管理并使用插件的一种方式,只有实现该函数,并配置好Javascript的事件参数,才能准确的调用视频插件的API函数。继承抽象类还需要在plugin.xml中定义插件名称与VideoHandler类名。PluginManager寻找插件的方式是根据Javascript调用的参数去plugin.xml文件中寻找对应的插件类名,然后通过类名创建该类对象,并用向上转换方式,把VideoHandler对象赋值于Plugin对象,最后调用该对象的execute函数执行Javascript调用请求。
VideoHandler类的execute函数需要判断Javascript调用参数,不同的参数名称对应不同的本地API调用。虽然视频播放的特殊性,在VideHandler中还是保留了视频播放普通的API接口。例如:getDuration、getWidth、getHeight、isPlaying、seekTo、pausePlaying等。这些函数构成了基本的播放接口。通过Javascript接口和相对应的参数可以直接调用这些API。同时也在Javascript接口提供选择播放器模式的接口,用户可以明确选择采用VLC或者OpenCore播放器播放本地或者网络视频,如果用户不明确选择的话,则默认先调用OpenCore播放器模式,如果播放出现异常,则转向VLC播放模式。其实在设计的过程中还需要一个捕获视频第一个张图片的接口,显示一个视频的缩略图。VideoHandler类调用PhoneGapPlayer的方式也比较简单,只是创建PlayerActivity类对象,使用PlayerActivity类中播放机制,实现播放监听事件,加载播放的控制UI和处理播放异常情况。在VideoHandler类中,通过PlayerActivity处理视频播放控制,提取一些播放控制接口,并在execute函数中调用接口。
在视频列表中,只要用户点击相应的视频链接,则通过PhoneGap平台的PluginManager进入VideoHandler类中,然后调用PlayerActivity播放。视频列表是采用目录模块的简单工厂模型“生产”本地视频列表,并用jQuery Mobile的列表展示。同时在jQuery Mobile的“Page”页面中也注册了划动返回的事件。在视频列表中还有一个自定义添加网络播放地址的功能。
媒体框架的Javascript接口是向外提供的标准Javascript接口,它提供基本的媒体播放框架的Javascript功能接口,具有跨平台性能。根据媒体播放框架不同媒体的要求,采用jQuery Mobile的开源平台,实现符合媒体播放框架的界面,并通过PhoneGap平台调用我们扩展的媒体播放框架。当然也需要用到标准的PhoneGap平台的标准Javascript的API接口。
如图7所示,将本发明的基于Android平台的PhoneGap跨平台媒体扩展框架应用于不同移动平台时,不同移动设备平台只需要有PhoneGap和jQuery Mobile的支持,编程人员可以调用本地的多媒体接口或调用网络多媒体播放接口,则可以简单地使用Javascript构建类似本地的应用程序的软件,真正做到“Once write, run everywhere.”。
Claims (7)
1.一种基于Android平台的PhoneGap跨平台媒体扩展框架,包括PhoneGap和jQuery Mobile的开源框架,其特征在于,在PhoneGap和jQuery Mobile的开源框架之上构建目录模块、多媒体播放模块和媒体框架的Javascript接口;
所述目录模块用于提供多媒体目录,其提供WEB样式和Javascript接口;
多媒体播放模块用于多媒体的播放,其多媒体列表通过目录模块提供;
媒体框架的Javascript接口是将多媒体播放模块封装形成的向外提供的标准的多媒体播放预览接口;
所述多媒体播放模块包括:
图片浏览模块,用于实现图片预览功能,其图片列表由目录模块提供;
音乐播放模块,用于音乐的播放,其音乐列表由目录模块提供;
视频播放模块,用于视频的播放,其视频列表由目录模块提供;
所述图片浏览模块包括:
图片预览模块,其用于图片目录的展示和图片预览图的展示;
缩略图模块,用于图片显示;
图片事件委托处理模块,用于处理图片预览的事件处理,图片预览模块和缩略图模块通过图片事件委托处理模块加载相应图片数据;
图片预览模块通过同步记载数据模式从图片事件委托处理模块中加载数据,缩略图模块通过异步加载数据模式从图片事件委托处理模块中加载数据。
2.根据权利要求1所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,所述目录模块包括简单工作模式模块,用于提供多媒体目录列表。
3.根据权利要求2所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,所述缩略图模块采用分页管理。
4.根据权利要求3所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,所述音乐播放模块包括:
音乐播放核心模块,用于实现音乐播放的具体动作;
音乐播放控制模块,其通过插件实现,作为前台的Javascript接口响应调用,对音乐播放的具体动作进行控制。
5.根据权利要求4所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,所述音乐播放核心模块采用平台自带的播放器实现。
6.根据权利要求1所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,所述视频播放模块采用双模式播放器,一种是基于Android操作系统原生的OpenCore播放器,另一种是基于移植的VLC开源框架的播放器。
7.根据权利要求1所述的基于Android平台的PhoneGap跨平台媒体扩展框架,其特征在于,多媒体播放预览接口设置与图片预览模块、音乐播放模块和视频播放模块一一对应的Javascript接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210309708.6A CN103064662B (zh) | 2012-08-28 | 2012-08-28 | 基于Android平台的PhoneGap跨平台媒体扩展框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210309708.6A CN103064662B (zh) | 2012-08-28 | 2012-08-28 | 基于Android平台的PhoneGap跨平台媒体扩展框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064662A CN103064662A (zh) | 2013-04-24 |
CN103064662B true CN103064662B (zh) | 2016-09-21 |
Family
ID=48107300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210309708.6A Active CN103064662B (zh) | 2012-08-28 | 2012-08-28 | 基于Android平台的PhoneGap跨平台媒体扩展框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064662B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426967B (zh) * | 2013-08-30 | 2019-02-15 | 中国石油天然气股份有限公司 | 一种跨平台和跨设备的移动应用开发系统 |
CN103761087B (zh) * | 2014-01-03 | 2016-10-12 | 北京京东尚科信息技术有限公司 | 一种移动应用程序跨平台开发方法及装置 |
CN103870545B (zh) * | 2014-02-26 | 2019-01-01 | 浪潮软件股份有限公司 | 一种医院信息系统产品目录的设计方法 |
CN104111841B (zh) * | 2014-08-08 | 2017-03-08 | 浪潮软件股份有限公司 | 一种微内核web开发框架的实现方法 |
CN104580417A (zh) * | 2014-12-25 | 2015-04-29 | 中建材国际贸易有限公司 | 在智能移动终端上实现scorm课件学习的方法及智能移动终端 |
CN104598222A (zh) * | 2014-12-29 | 2015-05-06 | 苏州优势讯通互联网科技有限公司 | 一种跨平台私有云文件缩略图实现方法 |
CN106681704A (zh) * | 2015-11-11 | 2017-05-17 | 北大方正集团有限公司 | 用户界面的开发装置和开发方法 |
CN105681841B (zh) * | 2015-12-30 | 2018-05-29 | 广东欧珀移动通信有限公司 | 一种基于浏览器的视频播放控制方法及系统 |
CN107340997A (zh) * | 2016-05-03 | 2017-11-10 | 广州红线冻品信息科技有限公司 | 一种用于冻品行业电子商务平台的移动端web界面自适应方法 |
CN106600243A (zh) * | 2016-08-30 | 2017-04-26 | 广州云融信息科技有限公司 | 一种基于混合模式的移动支付方法及系统 |
CN106502656B (zh) * | 2016-10-09 | 2018-08-03 | 武汉斗鱼网络科技有限公司 | 一种ios系统中列表视图构建方法及系统 |
CN106534983A (zh) * | 2016-11-30 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 一种播放视频列表中多视频的播放系统及播放方法 |
CN106604063A (zh) * | 2016-12-28 | 2017-04-26 | 北京恒华伟业科技股份有限公司 | 一种调取视频的方法及装置 |
CN108469991B (zh) * | 2017-02-23 | 2021-04-09 | 阿里巴巴(中国)有限公司 | 多媒体数据处理方法及装置 |
CN109600652B (zh) * | 2017-09-30 | 2022-03-29 | 中兴通讯股份有限公司 | 移动终端播放多路视频的方法、移动终端及可读存储介质 |
CN108012085B (zh) * | 2017-12-19 | 2020-07-14 | 腾讯科技(上海)有限公司 | 一种多媒体信息处理方法、服务器及存储介质 |
CN108810652A (zh) * | 2018-06-04 | 2018-11-13 | 深圳汇通九州科技有限公司 | 一种信息处理方法及终端设备 |
CN109151571B (zh) * | 2018-10-10 | 2021-03-02 | 四川长虹电器股份有限公司 | 数字电视中基于GStreamer框架的流媒体播放器提升画质的方法 |
CN109637268A (zh) * | 2018-12-29 | 2019-04-16 | 无锡吾成互联科技有限公司 | 一种音乐教学app操作方法及其实现系统 |
CN117271270B (zh) * | 2023-11-21 | 2024-04-05 | 麒麟软件有限公司 | 在Web操作系统上监控Android音乐播放的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552836A (zh) * | 2009-05-18 | 2009-10-07 | 浙江大学 | 应用于手机中移动Widget引擎的实现方法 |
CN101895582B (zh) * | 2010-07-15 | 2012-09-26 | 北京邮电大学 | 一种支持web业务和多浏览器的sip软终端的工作方法 |
-
2012
- 2012-08-28 CN CN201210309708.6A patent/CN103064662B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103064662A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064662B (zh) | 基于Android平台的PhoneGap跨平台媒体扩展框架 | |
US10430212B1 (en) | Method for recording, editing and reproduction of computer session | |
US10083159B1 (en) | Method for recording, editing and reproduction of web browser session | |
TWI592019B (zh) | 彈幕顯示方法及裝置 | |
CN102955694B (zh) | 基于WebKit 浏览器的客户端实现方法以及客户端 | |
US9158510B2 (en) | System and computer program product for creating a telecommunications application | |
CN106445518A (zh) | 一种跨平台移动终端应用程序开发方法及系统 | |
US20150052219A1 (en) | Method and apparatus for streaming metadata between devices using javascript and html5 | |
CN109325145B (zh) | 视频缩略图的获取方法、终端及计算机可读存储介质 | |
US20180376209A1 (en) | Video player framework for a media distribution and management platform | |
CN103533428A (zh) | 将智能终端网页视频推送到电视播放的方法及智能终端 | |
WO2019007327A1 (zh) | 视频播放方法、装置、计算设备以及存储介质 | |
CN101365082A (zh) | 一种基于对等计算技术机顶盒在屏显示系统的实现方法 | |
CN104360840A (zh) | 一种基于html5的游戏开发方法及装置 | |
KR20140021090A (ko) | 하이브리드 웹 어플리케이션에서 자바스크립트 연동을 위한 인터페이스 | |
CN112068879B (zh) | 基于配置化的客户端应用程序开发框架构建方法及装置 | |
CN102542062B (zh) | 一种下载网页上视频的方法和装置 | |
CN112487322B (zh) | 一种第三方应用Loading页面的加载方法及显示设备 | |
CN113626130A (zh) | 视频应用程序的处理方法、装置、计算机设备及存储介质 | |
Amatya | Cross-platform mobile development: An alternative to native mobile development | |
Nicolaescu et al. | SeViAnno 2.0: Web-enabled collaborative semantic video annotation beyond the obvious | |
CN114363679B (zh) | 一种显示设备、服务器及媒资播放方法 | |
JP2018514827A (ja) | インタラクティブな操作方法、及びそれを用いた送信機、受信機及びインタラクティブな操作システム | |
Jonach et al. | Automatic System for Producing and Distributing Lecture Recordings and Livestreams Using Opencast Matterhorn. | |
Mackey | Silverlight Introduction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |