发明内容
本发明提供一种播放在线视频时休眠控制方法及系统。
为解决上述问题,本发明采用的一个技术方案是:
提供一种播放在线视频时休眠控制方法,包括:S1、系统媒体播放服务模块启动媒体播放进程,创建一个新的媒体播放器或者请求系统的音视频解码器供系统其他应用进行媒体流的播放;S2、flash视频检测模块检测并判断媒体播放器或音频解码器是否是由flash插件调用,若是,进入步骤S3;S3、flash视频检测模块初始化所述休眠状态控制模块及系统休眠控制模块;S4、休眠状态控制模块完成初始化后向所述系统休眠控制模块发送休眠状态控制消息;S5、系统休眠控制模块将与休眠状态控制消息对应的系统休眠状态控制指令上报给系统电源管理服务模块,从而实现在flash插件播放视频时对安卓系统电源管理服务模块进行休眠控制。
其中,所述休眠状态控制消息包括可休眠控制消息及不休眠控制消息,所述步骤S4的具体执行步骤为:S41、媒体播放服务模块设置可休眠控制消息、不休眠控制消息;S42、向系统休眠控制模块发送所述可休眠控制消息和不休眠控制消息。
其中所述步骤S1与步骤S2之间还包括步骤:flash插件将每个flash视频源的播放控制状态传递给媒体播放服务模块中被flash插件所使用的资源,其中,所述播放控制状态包括停止播放、开始播放、暂停播放、恢复播放;所述步骤S41具体包括:S411、当接收到暂停播放时设置可休眠控制消息;S412、当接收到停止播放时设置延时为T的可休眠控制消息以及延时为T+n的释放系统休眠控制模块单实例对象消息;S413、当接收到开始播放、恢复播放时设置不休眠控制消息。
其中,所述步骤S5具体包括:S51、获取系统休眠控制模块的实例;S52、当接收到延时为T的可休眠控制消息时,在T时间后向系统电源管理服务模块发送设置可休眠命令;S53、当接收到所述休眠状态控制模块实例发送的不休眠控制消息时,向系统电源管理服务模块发送设置不休眠命令;S54、当接收到所述休眠状态控制模块实例发送的延时为T+n的释放系统休眠控制模块单实例对象消息时,向系统休眠控制模块发送设置销毁单实例对象命令。
其中,在所述步骤S5中,只有当计数器值为1时,系统休眠控制模块在接收到设置不休眠命令的时候可以向系统电源管理服务模块发送设置不休眠命令;只有当计数器值为0时,系统休眠控制模块在接收到设置可休眠命令的时候可以向系统电源管理服务模块发送设置可休眠命令;当计数器值为0时,系统休眠控制模块在接收到释放本模块单实例对象时可以向系统休眠控制模块发送设置销毁单实例对象命令,然后进入本模块的自销毁函数进行自销毁处理。
本发明采用的另一个技术方案是:
提供一种播放在线视频时休眠控制系统,包括系统电源管理服务模块,还包括:系统媒体播放服务模块,用于启动媒体播放进程,创建一个新的媒体播放器或者请求系统的音视频解码器供系统其他应用进行媒体流的播放;flash视频检测模块,用于当所述系统媒体播放服务模块启动媒体播放进程时检测并判断媒体播放器或音频解码器是否是由flash插件调用,并当确定是由flash插件调用时,初始化所述休眠状态控制模块及系统休眠控制模块;休眠状态控制模块,用于完成初始化后向所述系统休眠控制模块发送休眠状态控制消息;系统休眠控制模块,用于当接收到所述休眠状态控制消息时,将与休眠状态控制消息对应的系统休眠状态上报给系统电源管理服务模块,从而实现在flash插件播放视频时对电源管理服务模块进行休眠控制。
其中,所述休眠状态控制消息包括可休眠控制消息及不休眠控制消息,所述休眠状态控制模块包括初始化接口、休眠设置子模块、不休眠设置子模块以及休眠状态控制子模块;所述初始化接口用于供flash视频检测模块调用以对所述休眠状态控制子模块进行初始化;所述休眠设置子模块以及不休眠设置子模块用于供媒体播放服务模块调用以设置可休眠控制消息、不休眠控制消息;所述休眠状态控制子模块用于向系统休眠控制模块发送所述可休眠控制消息和不休眠控制消息。
其中,flash插件将每个flash视频源的播放控制状态传递给媒体播放服务模块中被flash插件所使用的资源,所述播放控制状态包括停止播放、开始播放、暂停播放、恢复播放;所述休眠设置子模块用于当接收到暂停播放时设置可休眠控制消息;所述休眠设置子模块还用于当接收到停止播放时设置延时为T的可休眠控制消息以及延时为T+n的释放系统休眠控制模块单实例对象消息;所述不休眠设置子模块用于当接收到开始播放、恢复播放时设置不休眠控制消息;
所述系统休眠控制模块包括获取实例对象接口、设置休眠接口、设置不休眠接口、设置释放实例对象接口以及消息处理子模块;所述获取实例对象接口用于获取系统休眠控制模块的实例;所述设置休眠接口用于当接收到延时为T的可休眠控制消息时,在T时间后通过消息处理子模块向系统电源管理服务模块发送设置可休眠命令;所述设置不休眠接口用于当接收到所述休眠状态控制模块实例发送的不休眠控制消息时,通过消息处理子模块向系统电源管理服务模块发送设置不休眠命令;所述释放实例对象接口用于当接收到所述休眠状态控制模块实例发送的延时为T+n的释放系统休眠控制模块单实例对象消息时,通过消息处理子模块向向系统休眠控制模块发送设置销毁单实例对象命令。
其中,所述消息处理子模块包括计数器,所述消息处理子模块用于在接收到不休眠控制消息时且当计数器值为1时向系统电源管理服务模块发送设置不休眠命令;在接收到可休眠控制消息时且当计数器值为0时向系统电源管理服务模块发送设置可休眠命令;在接收到释放系统休眠控制模块单实例对象消息且当计数器值为0时向系统休眠控制模块发送设置销毁单实例对象命令,然后进入本模块的自销毁函数进行自销毁处理。
本发明的播放在线视频时休眠控制方法及系统,当媒体播放器或音频解码器是否是由flash插件调用时,通过休眠状态控制模块向所述系统休眠控制模块发送休眠状态控制消息,系统休眠控制模块将与休眠状态控制消息对应的系统休眠状态控制指令上报给系统电源管理服务模块,从而实现在flash插件播放视频时对安卓系统电源管理服务模块进行休眠控制。本发明的有益效果在于,通过该方案解决在安卓系统上使用flash插件进行网络视频播放的时候不会因为视频网站多片段视频切换,或者adobe停止在新的安卓系统上进行插件更新等原因引起在播放时会系统进入休眠的问题。在暂停时系统休眠时间到达时会立刻进入休眠,在停止播放后,最多等待时间T后系统就进入休眠而不消耗设备的电池电量。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
Adobe flash插件在播放视频时,一个片源中各个视频断切换,一个视频集中各个视频的切换,网页内嵌和全屏播放的切换,都会重新实例化一个系统的播放器或解码器,释放之前实例化的播放器或解码器。用户对flash播放器的操作,例如暂停、播放,flash插件最终会将对应的播放操作传递到系统的播放器或解码器上。同时,视频网站上播放flash视频的时候会有广告,广告有可能是以视频的形式或者flash动画形式出现,一般来说每段广告都不会超过20s,在网速正常的情况下,在一个视频源中各个视频断切换的切换时间也不会超过20s,视频集中各个视频的切换也同样不会超过20s。
在安卓系统上,目前adobe flash插件在播放视频的时候的这些特性,只要保证在每次调用媒体播放器进行播放期间设备不暗屏进入休眠,媒体播放器暂停后系统是否休眠取决于系统本身,在每次媒体播放器被释放后,保持系统在之后nS(具体可根据实测数据来定)内不进入休眠,这样就可以保证用户在观看一个长视频或者视频集期间系统不进入休眠,而且在观看视频后,不会一直不休眠,也很好的保证的电池的寿命。
请参阅图1,是本发明一实施方式中一种播放在线视频时休眠控制系统的整体框图。该播放在线视频时休眠控制系统100包括系统媒体播放服务模块10、flash视频检测模块20、休眠状态控制模块30、系统休眠控制模块40、以及系统电源管理服务模块50。
所述系统媒体播放服务模块10用于启动媒体播放进程,创建一个新的媒体播放器或者请求系统的音视频解码器供系统其他应用进行媒体流的播放。所述flash视频检测模块20用于当所述系统媒体播放服务模块10启动媒体播放进程时检测并判断媒体播放器或音频解码器是否是由flash插件调用,并当确定是由flash插件调用时,初始化所述休眠状态控制模块30及系统休眠控制模块40。在一实施方式中,所述flash视频检测模块20通过学习已知的flash插件调用系统多媒体资源的方式来判断媒体播放器或音频解码器是否是由flash插件调用,在另一实施方式中,所述flash视频检测模块20通过插件API接口在flash插件进行视频播放时设置属性,媒体播放服务模块10通过获取当前的前台应用是否是浏览器以及属性值来判断媒体播放器或音频解码器是否是由flash插件调用。
所述休眠状态控制模块30用于完成初始化后向所述系统休眠控制模块40发送休眠状态控制消息,所述休眠状态控制消息包括可休眠控制消息及不休眠控制消息,其中,因为存在同时有多个视频片段向媒体播放服务模块10申请资源进行顺序播放或者同时播放,所以休眠状态控制模块30必须是可以多实例化的模块,flash插件播放每个视频片段时都可以通过休眠状态控制模块30来维护各个视频片段对当前系统休眠状态的要求,保证准确上报每个视频段对系统休眠状态的要求。
请参阅图2,是状态休眠控制模块主要接口框图。所述休眠状态控制模块30包括初始化接口31、休眠设置子模块32、不休眠设置子模块33以及休眠状态控制子模块34,所述初始化接口31用于供flash视频检测模块20调用以对所述休眠状态控制子模块34进行初始化,所述休眠设置子模块32以及不休眠设置子模块33用于供媒体播放服务模块10调用以设置进入休眠消息、不进入休眠消息,所述休眠状态控制子模块34用于向系统休眠控制模块40发送所述可休眠控制消息和不休眠控制消息。
请参阅图3,是休眠状态控制流程图。当flash视频检测模块20确定媒体播放器或音视频解码器是由flash插件调用时,休眠状态控制模块30当确定休眠状态有改变时会向系统休眠控制模块40发送对应的休眠状态控制消息。例如,如由“可设置”到“休眠”,则休眠状态控制模块30向系统休眠控制模块40发送可休眠控制消息。
请参阅图4,是flash插件控制休眠状态控制模块的框图。flash插件将每个flash视频源的播放控制状态传递给媒体播放服务模块10中被flash插件所使用的资源,媒体播放服务模块10间接通过每个休眠状态控制模块30的实例进行休眠状态的控制。其中,所述播放控制状态包括停止播放、开始播放、暂停播放、恢复播放。具体地,所述休眠设置子模块32用于当接收到暂停播放时设置可休眠控制消息,当接收到停止播放时设置延时为T的可休眠控制消息以及延时为T+n的释放系统休眠控制模块单实例对象消息;所述不休眠设置子模块33用于当接收到开始播放、恢复播放时设置不休眠控制消息。其中,延时时间参数T可以是常规测试所得到片段与片段间切换所需时间的经验值,具体地可根据产品来设置。其他的操作,例如开始播放、暂停播放以及恢复播放都需要立即执行。
所述系统休眠控制模块40用于当接收到所述休眠状态控制消息时,将与休眠状态控制消息对应的系统休眠状态上报给系统电源管理服务模块50,从而实现在flash插件播放视频时对安卓系统电源管理服务模块50进行休眠控制,防止安卓系统进入休眠,完成flash插件在播放网络视频时系统休眠的控制流程。其中,系统休眠控制模块40能同时供多个休眠状态控制模块的实例设置休眠状态,所述系统休眠控制模块40为单实例模块、具有自销毁本单实例对象功能、且带有时间延时的消息队列管理功能,实时处理消息队列中到时消息。
请参阅图5,是多个媒体播放器调用系统休眠控制模块的框图。所述系统休眠控制模块40包括获取实例对象接口41、设置休眠接口42、设置不休眠接口43、设置释放实例对象接口44以及消息处理子模块45。
所述获取实例对象接口41用于获取系统休眠控制模块40的实例。所述设置休眠接口42用于接收到延时为T的可休眠控制消息时,在T时间后通过消息处理子模块45向系统电源管理服务模块50发送设置可休眠命令。所述设置不休眠接口43用于当接收到所述休眠状态控制模块30实例发送的不休眠控制消息时,通过消息处理子模块45向系统电源管理服务模块50发送设置不休眠命令。所述释放实例对象接口44用于当接收到所述休眠状态控制模块30实例发送的延时为T+n的释放系统休眠控制模块单实例对象消息时,通过消息处理子模块45向系统休眠控制模块40发送设置销毁单实例对象命令。
请参阅图6,是系统休眠控制模块进行消息处理的流程图。由于休眠状态控制模块30的多个实例可能会向系统休眠控制模块40发送多次设置休眠/不休眠/释放实例对象休眠状态控制消息,为了过滤这些中间过程的消息,所述消息处理子模块45设置计数器wakeLockCount,所述消息处理子模块45用于在接收到不休眠控制消息时且当计数器值为1时向系统电源管理服务模块50发送设置不休眠命令;在接收到可休眠控制消息时且当计数器值为0时向系统电源管理服务模块50发送设置可休眠命令;在接收到释放系统休眠控制模块单实例对象消息且当计数器值为0时向系统休眠控制模块40发送设置销毁单实例对象命令,然后进入统休眠控制模块的自销毁函数进行自销毁处理。
请参阅图7,是本发明一实施方式中一种播放在线视频时休眠控制方法的流程图。该播放在线视频时休眠控制方法包括:
步骤S1、系统媒体播放服务模块10启动媒体播放进程,创建一个新的媒体播放器或者请求系统的音视频解码器供系统其他应用进行媒体流的播放;
步骤S2、flash视频检测模块20检测并判断媒体播放器或音频解码器是否是由flash插件调用,若是,进入步骤S3;其中,在一实施方式中,所述flash视频检测模块20通过学习已知的flash插件调用系统多媒体资源的方式来判断媒体播放器或音频解码器是否是由flash插件调用,在另一实施方式中,所述flash视频检测模块20通过插件API接口在flash插件进行视频播放时设置属性,媒体播放服务模块10通过获取当前的前台应用是否是浏览器以及属性值来判断媒体播放器或音频解码器是否是由flash插件调用。
步骤S3、flash视频检测模块20初始化所述休眠状态控制模块30及系统休眠控制模块40;
步骤S4、休眠状态控制模块30完成初始化后向所述系统休眠控制模块40发送休眠状态控制消息;步骤S5、系统休眠控制模块40将与休眠状态控制消息对应的系统休眠状态控制指令上报给系统电源管理服务模50,从而实现在flash插件播放视频时对安卓系统电源管理服务模块50进行休眠控制。
其中,所述休眠状态控制消息包括休眠控制消息及不休眠控制消息,所述步骤S4的具体执行步骤为:
步骤S41、休眠设置子模块32以及不休眠设置子模块33供媒体播放服务模块10调用以设置可休眠控制消息、不休眠控制消息;
步骤S42、休眠状态控制子模块34向系统休眠控制模块40发送所述可休眠控制消息和不休眠控制消息。
其中,所述步骤S1与步骤S2之间还包括步骤:flash插件将每个flash视频源的播放控制状态传递给媒体播放服务模块10中的被flash插件所使用资源,所述播放控制状态包括停止播放、开始播放、暂停播放、恢复播放,媒体播放服务模块10间接通过每个休眠状态控制模块30的实例进行休眠状态的控制。所述步骤S41具体包括:
S411、休眠设置子模块32当接收到暂停播放时设置可休眠控制消息;
S412、休眠设置子模块32当接收到停止播放时设置延时为T的可休眠控制消息以及延时为T+n的释放系统休眠控制模块单实例对象消息;
S413、不休眠设置子模块33当接收到开始播放、恢复播放时设置不休眠控制消息。
其中,所述步骤S5具体包括:
步骤S51、获取实例对象接口41获取系统休眠控制模块40的实例。
步骤S52、设置休眠接口42当接收到延时为T的可休眠控制消息时,在T时间后通过消息处理子模块45向系统电源管理服务模块50发送设置可休眠命令。
步骤S53、设置不休眠接口43当当接收到所述休眠状态控制模块30实例发送的不休眠控制消息时,通过消息处理子模块45向系统电源管理服务模块50发送设置不休眠命令。
步骤S54、所述释放实例对象接口44当接收到所述休眠状态控制模块30实例发送的延时为T+n的释放系统休眠控制模块单实例对象消息时,通过消息处理子模块45向系统休眠控制模块发送设置销毁单实例对象命令。
其中,由于休眠状态控制模块30的多个实例可能会向系统休眠控制模块40发送多次设置休眠/不休眠/释放实例对象休眠状态控制消息,为了过滤这些中间过程的命令,所述消息处理子模块45设置计数器wakeLockCount,所述系统休眠控制模块40包括计数器,在所述步骤S5中,系统休眠控制模块40在接收到不休眠控制消息且当计数器值为1时向系统电源管理服务模块50发送设置不休眠命令;系统休眠控制模块40在接收到可休眠控制消息且计数器值为0时向系统电源管理服务模块50发送设置可休眠命令;系统休眠控制模块40在接收到释放系统休眠控制模块单实例对象消息且计数器值为0时向系统休眠控制模块40发送设置销毁单实例对象命令,然后进入系统休眠控制模块的自销毁函数进行自销毁处理。
本发明的播放在线视频时休眠控制方法及系统,当媒体播放器或音频解码器是否是由flash插件调用时,通过休眠状态控制模块向所述系统休眠控制模块发送休眠状态控制消息,系统休眠控制模块将与休眠状态控制消息对应的系统休眠状态控制指令上报给系统电源管理服务模块,从而实现在flash插件播放视频时对安卓系统电源管理服务模块进行休眠控制。本发明的有益效果在于,通过该方案解决在安卓系统上使用flash插件进行网络视频播放的时候不会因为视频网站多片段视频切换,或者adobe停止在新的安卓系统上进行插件更新等原因引起在播放时会系统进入休眠的问题。在暂停时系统休眠时间到达时会立刻进入休眠,在停止播放后,最多等待时间T后系统就进入休眠而不消耗设备的电池电量。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。