Android电视三屏互动实行过程

Android电视三屏互动实行过程

 

渐暴露出在鼠标、手势、语音等输入上的缺陷,这就使得人手一台的手机或Pad来操控电视成为一种可能,同时利用三屏互动技术还是可以实现电视、手机、Pad上面的内容共享,实时传输等功能。公司市场调查表明,三屏互动技术的开发和实现已迫在眉睫,且对今后智能电视的开发起着重要作用。   一、涉及的关键技术   三屏互动的制作过程中主要运用的网络通信技术包括:IP多播技术、HTTPWebServer技术和Socket套接字技术。它们分别用于手机对电视的局域网内检索、将手机端媒体内容甩屏给电视播放、进程间的消息通信。   虚拟驱动技术:用于在电视端模拟实现手机端发送过来的虚拟按键、鼠标、传感器消息;多媒体播放技术:用于在手机端和电视端分别播放手机端的多媒体文件;语音识别和合成技术:分别用于识别手机端的用户录音数据和合成电视端需要播报的文字内容。   二、三屏互动总体设计   对于Android和Linux双系统的智能电视来说,三屏互动的原理框图如图1所示,手机端负责检索和连接电视,并将手机的虚拟按键、鼠标、手势、传感器和语音数据发送给智能电视端的后台控制服务(ControlService),并开启一个HttpWebServer供智能电视端的Linux播放接口下载并播放手机SD卡内的媒体文件。智能电视Android端主要负责接收手机端的消息,并分别处理或传给Linux端的播放接口。智能电视Linux端主要负责接收和播放ControlService传过来的媒体资源,并响应虚拟驱动设备的消息映射。   三、手机端接口设计与实现   (一)检索和连接部分   1.依据设计思想,采用IP多播技术进行手机对电视检索的设计,然后再运用TCP单播建立电视与手机的一对一的可靠连接。手机端作为多播服务器端,首先发起检索的多播请求,并等待电视回复平台名和IP地址。   2.在手机端检索到电视列表后,如果手机端用户在电视IP列表点击某一IP选项,主程序将另开一个线程专门负责与该IP对应的电视建立一对一的连接。当然,这其中需要电视端先开启连接的服务器端,然后在对应端口监听来自手机端的连接请求。   (二)虚拟遥控部分   当手机和电视建立连接后,手机端UI程序首先捕获用户按下Button消息,然后将它转换为电视需要的按键消息,通过之前已经建立好连接的socket发送给电视。   2.电视鼠标的滑动和手势的判断都是手机端UI程序通过系统捕获触摸屏滑动数据来模拟鼠标和手势的移动的数据,然后将移动的数据(包括方向和距离)打包成滑动消息,通过socket发送给电视端。   3.将智能手机中自带的重力传感器产生的感应数据传给电视,来模拟一些Android游戏操作。   4.通过手机端录入语音数据传给电视的语音服务器来进行语音识别操作和控制。   (三)甩屏部分   手机甩屏部分主要实现手机文件的过滤和预览,实现本地多媒体文件的播放,以及开启一个Http的WebServer供电视端下载手机资源,最后就是将手机本地中的多媒体文件以url形式传输给电视。这个模块是我们三屏互动中实现资源共享的一个主要的功能。它可以将手机端的文件“甩”给电视,然后在电视上播放。   四、智能电视端接口设计与实现   (一)ControlService的设计   我们的智能电视中,ControlService处于电视Android端,作为一个服务运行在系统后台,主要设计如下几个功能:(1)在手机端发起多播检索消息后,通过ControlService的UDP多播客户端回应消息给手机;(2)在检索后,作为手机和电视通信的TCP服务器端,可以保证多个手机同时连接一台电视;(3)将虚拟遥控、鼠标和甩屏命令等处理组装后发送给UserService服务线程;(4)将语音数据发送给语音服务器和接收识别结果,同时将结果反馈给AndroidUI处理。   (二)语音识别处理   目前国内中文语音识别和合成最好的要数科大讯飞的语音引擎,该公司对于智能电视的语音识别库有两套方案。一种是打包在手机端程序,在手机端识别后发送文字到电视端;另外一种是在手机发送语音数据到电视,电视再转发给云端语音服务器,由云端服务器来识别语音数据,再将处理结果反馈给电视端。目前我们就是采用后者的解决方案。   (三)虚拟按键在linux端的获取   为了能在Linux主进程中接受虚拟按键消息,需要在Main函数中增加一个虚拟按键的读取线程。   该线程主要工作流程如下:(1)获取虚拟按键文件节点描述符;(2)阻塞读取虚拟按键文件节点的按键数据;(3)映射按键码;(4)发送按键映射码给上层处理。   (四)UserService和播放接口设计   UserService主要用来在Linux端接收Android端ControlService的消息,以及调用底层接口去处理这些消息。其本质是一个中间接口层。为了实现以上功能,我们最好在主进程中另开一个单独的线程来接收消息。同时为了更加灵活的调用下层接口来处理接收的ControlService消息,可以采用注册回调类的方式来实现。   由于三屏互动的接收甩屏消息大部分是一些播放消息,所以我们在回调类中主要需要实现的也就是play播放接口。播放接口定义如下:virtualvoidplay(constchar**url,constchar*type,intcount,constchar*index)url是手机端的WebServer服务器上的媒体文件地址,可能是多个媒体文件。在此函数中调用Linux底层的播放器接口即可完成甩屏播放。 #p#分页标题#e#   五、结语   虽然基于三屏互动技术的产品越来越受大众的喜爱,但在国内,三屏互动技术的应用还需大力加强。尤其是在电视终端产品,利用手机屏、Pad屏及无线局域网的通信技术能够促进电视机的功能多样化和操作简单化。基于此种情况,本文三屏互动技术进行了探讨和研究,结合实际,设计和实现了基于Android智能电视的三屏互动功能模块。