一种Android智能电视场景管理方法与流程

文档序号:12134000阅读:464来源:国知局
一种Android智能电视场景管理方法与流程

本发明涉及基于Android系统的智能电视,应用于Android智能电视TV与媒体场景切换的管理,属于智能电视技术领域。



背景技术:

智能电视后台服务很多,用户在观看TV时,某个后台服务可能会推送一段音频,电视端TV也在继续播放,就可能同时出现两种声音,也可能被强制停止切换到音频,给用户带来很不好的体验,同时,电视场景比较复杂,在场景切换时,如何及时释放与申请资源,需要一种策略来管理场景切换。



技术实现要素:

本发明主要是利用创建的Native Service模块RM,通过创建的场景列表来管理场景的切换。

本发明是这样实现的:

一种Android智能电视场景管理方法,包括:

首先,该发明在Android系统上实现,在c++代码层新建一个Native Service,由Android系统的Init.rc启动,Native Service里面新建一个模块RM,用来管理整个TV场景,在RM模块中把电视场景设置为ATV、DTV、MMP、OTHER 4种类型,ATV场景定义为ATV节目源在有信号状态,DTV场景定义为DTV节目源在有信号状态,MMP定义为视频播放状态,OTHER定义非播放状态场景。整个RM处于一个独立线程中,RM中场景切换的接口通过jni层提供给JAVA应用层,不同的应用调用这个接口切换到不同的场景。场景切换是同步进行的,在切换场景的接口里面有互斥锁,保证在上一个场景切换动作没有完成情况,下一个场景动作不能开始,任何时候TV只处于一个场景状态。

其次,RM在系统启动后,会创建一个场景列表,用来保存应用申请的场景类型,场景列表中加入的元素包括CallingPid和申请的场景类型,最初场景列表是空的。TV应用通过API调用切换场景时,会通过CallingPid去查找场景列表中是否存在该CallingPid,如果没有就新建一个对象,加入到场景列表中,如果存在就更新内容。如果Android系统检测到上层应用挂掉,RM会根据CallingPid来切换到另外一个约定的场景。例如当前在播放TV,申请的场景是ATV,如果TV应用异常退出,底层就可能还在播放,用户看到的就是电视有视频、声音,还在播放,但是已经不能进行换台等操作了。这个时候,RM通过Binder捕获到TV应用异常退出通知后,主动切换到另外一个场景OTHER,OTHER状态下,实现了黑屏,静音。这时用户可以通过重新启动TV应用来播放,进行换台等。

最后,通过Android Binder标准通信流程,依赖Android系统的AM机制,实时将Android最上层全屏应用页面的包名通过binder告知的RM,RM采用字符串形式保留在本地。例如当前正在播放TV,当第三方应用推送视频时,这里可能是用户通过手机推送的一部视频,也可能是TV系统里面一些应用主动推送的广告视频,前面一种是我们希望播放的,第二种是需要避免的,两种视频播放时,都会通过接口申请MMP场景,这时我们会根据前面保存的包名做判断,如果是我们允许的,就申请MMP场景成功,开始播放视频,如果不是就返回申请场景失败,继续播放TV。

通过上面的方式,实现了一套电视场景的管理方法,控制了场景切换,解决了以前切换场景混乱的问题。通过实时获取最上层全屏应用页面的包名做对比,来决定是否播放MMP,可以管控部分播放方式。通过资源列表管理,可以实现在客户端挂掉之后,自动切换到另外一个场景。

附图说明

图1为场景管理总图,各个场景通过Native Service RM来切换,实现统一管理。

图2为后台服务推送一段音频,Native Service RM判断的流程图。

具体实施方式

把Android电视场景区分为PLAYER_ATV,PLAYER_DTV,PLAYER_MMP,PLAYER_OTHER,PLAYER_ATV场景为模式电视播放场景,PLAYER_DTV场景为数字电视播放场景,PLAYER_MMP为本地媒体或者网络播放视频场景,PLAYER_OTHER为非播放状态场景,具体为当前非ATV播放,非DTV播放,非媒体播放。

构建一个Native Service RM,如图1所示,ATV apk,DTV apk为厂商应用,应用在启动时需要向Native Service RM申请对应场景,离开时需要把场景切换到OTHER场景,MMP场景则通过CALLBACK向Native Service RM申请。Native Service RM切换场景在同步线程中完成,在切换到下一个场景时,需要等待上一个场景把资源释放掉,同时将应用信息保存到RM中。

Native Service RM提供统一的资源释放接口Release,用来将场景切换为PLAYER_OTHER,具体表现为视频黑屏,静音。为了避免ATV调用该接口将正在播放的DTV切换到OTHER场景,要求该API只有在对应场景下才能调用,如ATV apk只能在PLAYER_ATV场景下调用该接口。

在TV播放状态下,如果是微信发送一段特殊的音频amr格式,且需要在TV状态下播放该音频,Native Service RM会检查该段音频格式大小以及是否可以播放,如果可以,则允许该音频播放(不会切换场景),播放过程中,将TV的音量值减小,待音频播放完成之后,在恢复TV的音量值。

在TV播放状态下,如果是用户通过手机等第三方推送的一首mp3,则在电视端有对应的apk启动来播放,这时framework会通过binder把最新的package信息传递给Native Service RM,当callback申请MMP场景时,会和预制的apk进行对比,不一致则允许切换场景,播放该视频。

在TV播放状态下,如果是电视端内部的某个服务推送一段音频,该音频格式不是特殊格式,并且没有对应的应用启动来播放,则会被Native Service RM阻止,继续播放TV。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1