• adb的那点小事——360电视助手实现研究


    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa

    1.   前言

    1.1.  行业背景简单介绍

    当下,智能家居与智能穿戴设备无疑是继智能手机后两个最热门的方向。而智能家居在占领用户客厅的行动中。电视无疑占领着一个十分重要的位置。

    近期两年,智能电视(包含盒子),发展的如火如荼,引发了一波电视换机潮。如今购买电视,不是智能电视,甚至都不好意思拿出来说。

    然而,国内移动应用市场激战正酣的三巨头(百度、360、腾讯)在电视应用分发上都鲜有举动,市面上仅仅有一些小公司在做,当中做的还算不错的有:奇珀市场、爱家电视应用市场。

    直到在今年(2014年)4360推出了“360电视助手以及”360电视助手手机端,电视市场逐渐開始改变。

    1.2.  一次糟糕的个人体验

    讲一个小故事:一张SD卡引发的血案

    背景:

    在去年的时候,我购买了2台创维的Android智能电视和一台大麦盒子。拿到电视以后。我仅仅有一个非常easy的想法:我不想花钱看电视,我要在电视上面看优酷、看爱奇艺、看腾讯视频。

    现实情况是。电视厂商为了推广自己的付费视频。在电视机自带的电子市场中,根本没有这些应用。

    看到这里有些朋友会说,你找张SD卡把应用拷贝进去,然后依照不即可了?没错。但是。我木有SD卡呀……于是開始了一段崎岖的折腾之路。

    我的坎坷看片经历:

    1、  打开电视浏览器搜索优酷下载。提示没有SD卡下载不了

    2、  安装电视市场中的QQ,远程发生优酷到电视,提示没有SD卡,无法接收

    3、  于是乎在绞尽脑汁之后。在QQ很多其它里面我找到了应用宝。这里真要庆幸哥们是开发的啊。否则预计打死都找不到这里。

    此过程全然通过鼠标进行,遥控器操作不了

    4、  H5的应用宝中搜索豌豆荚,安装后。在里面搜索优酷,提示没有SD卡下载不了;果断卸载豌豆荚。安装百度手机助手。提示没有SD卡下载不了”……到这里哥们已经接近崩溃了。

    5、  最后在H5的应用宝中下载应用宝client,发现没有SD卡也能够下载(这里说一下应用宝在没有SD卡时会先下载到/data/文件夹)。于是乎感叹应用宝真好。

    6、  带着从绝望中刚恢复过来的喜悦,在应用宝中搜索优酷,下载安装完毕、打开。

    尼玛。是横屏的有木有?!原来手机市场里面一般都仅仅有手机和pad的应用,木有TV版本号。不仅屏幕是横的,并且不支持遥控器

    那究竟要怎么办?我仅仅想看个片而已呀,My God !!。

    7、  幸亏哥们练过!我想到了没有SD卡。我可不能够挂载一张虚拟的SD卡到电视上?于是開始了新一轮验证。

    8、  在应用宝中,下载“ES文件浏览器”。然后在个人电脑中注冊申请百度云账号,在“ES文件浏览器”的设置中与百度云绑定。然后在“ES文件浏览器”中挂载虚拟存储。

    9、 在电脑上搜索TV版的优酷、爱奇艺等,将这些APK复制到百度云里面去。然后在电视机上打开“ES文件浏览器”。找到挂载的虚拟存储位置,点击APK安装。最终成功安装了!当看到电视上出现优酷的画面是。哥们都要泪奔了,有木有……

    整个过程下来。浪费了哥们大半个下午的时间。

    或许有些人会说,怎么不通过电脑USB连接。然后安装。

    可是USB须要驱动呀…..并且对小白用户的话,是根本不可能通过USB安装应用的。

    1.3.  360电视助手体验

    前面说过,我购买了2台电视和一台盒子。在购买盒子的时候,我无意中发现了“360电视助手,于是乎我在前面的体验一下子简单多了:扫描局域网、建立连接,然后在手机端选择自己喜欢的应用安装。发现盒子就已经给我安装好了。然后在手机上选择一个电影打开播放,此时电视也開始播放了…..

    整个过程下来,不超过5分钟

    1.4.  360电视助手概览

    首先看一下360电视助手TV端的界面:

     

    以下是TV端首页截图:

     

    以下是手机端的截图:

     

    1.5.  360电视助手的创新点

    那这款360电视助手与其它的手机助手或者电视应用市场相比有什么特别之处呢?

    一般的电视电视版助手有两大功能:一是帮助用户下载和更新应用。二是做视频、软件、应用分发。360电视助手具有例如以下一些特点:

    1、  在同一个局域网环境下。能够通过手机端直接安装TV端到电视上,而不须要复制到SD卡或者U盘上。

    2、  TV端安装后会作为Server与手机端进行局域网通信,手机端能够控制TV端进行应用安装、视频播放、甚至玩游戏等。

    3、  TV端集成暂时root能力。在通过手机端操作安装到电视时,电视上会静默安装好该应用。

    4、  提供遥控器功能。能够通过手机遥控电视。

    2.   技术实现分析

    本文主要对360电视助手中的两个核心技术点进行分析研究:

    A.        怎样通过局域网(Wifi)环境。直接安装应用到电视端。

    B.        在电视上安装电视助手(TV端)后。手机端怎样与TV端进行局域网内通信。

    2.1.  局域网应用安装

    局域网内直接安装apkTV端是通过我们万能的adb实现的。

    关于adb的使用方法这里就不详细介绍了,不熟悉的读者能够自行查阅Android官方文档,或者在cmd环境中运行“adb”命令查看。这里仅仅介绍电视助手的原理。

    电视助手的实现原理例如以下:

    1.         首先确保电视端中设置 ->开发人员选项->开启开发人员选项处于开启状态,这个在非常多电视中默认是开启的。而且在没有开启的电视中,360会引导用户开启。

     

    2.         在手机端通过“ping”命令扫描探測局域网内可用的ip,以下是反编译之后的代码:

    关于“ping”命令的使用方法例如以下:

     

    3.         通过“cat /system/build.prop | grep "product"”命令获取TV端的产品名称,反编译代码例如以下:

     

    4.         在获得到TV端的名称后。会提示是否要连接到TV端。

    此时,通过“adb connect <host>[:<port>]”命令连接电视,以下是反编译后的代码:

     

    5.         在连接到TV端,通过下“cat/system/build.prop”命令获取TV端的相关信息,以下是反编译后的代码:

     

    6.         在连接到TV端后,就能够通过“adb install –r ”命令进行局域网内远程安装了,反编译代码例如以下:

     

    在运行“adb install”命令后,依据运行结果中是否包括“Success”推断是否成功安装,再不是“Success”的情况会返回详细的错误原因。能够进行解析。

     

    7.         在运行结束。断开连接时,能够运行“adb disconnect”命令,反编译代码例如以下:

     

    8.         TV端安装后,手机端能够通过”am start“命令唤起TV端,反编译代码例如以下:

     

    好了,到这里360电视助手client是怎样在wifi环境下,直接安装到电视端的就都明确了。

    2.2.  搭建局域网C/S通信

    在电视中安装了TV端以后,TV端会作为一个Server与手机端(Client)形成一个C/S结构,接下来的事情就是ClientServer直接的网络通信了。

    这里之所以採用C/S结构进行通信,个人认为原因有两点:

    A.        adb connect建立的连接不稳定。随时可能会断开,并且也无法感知连接是否可用等连接状态。

    B.        有些操作通过adb是完毕不了的,必须通过C/S的方式,将指令发生到Server端(电视),在Server端运行完毕后,再将结果返回到手机。举个简单的样例,比方说我想要获取电视上已安装应用列表等。

    360电视助手中,C/S接口。用的是12333port,也就是说TV端会以socket监听12333port。这从手机端反编译的代码也能够看出:

     

    在手机端将命令以http请求的方式发送到TV端。手机端与TV端的数据以jeson的形式进行传输,以下是反编译代码:

     

    好了,到这里360电视助手是怎样局域网下进行通信的,就清楚了。

    360电视助手中。除了上面介绍的局域网通信方式外,也有利用普通无线网络进行push的方式。先将手机端的操作指令发送的360的server,再从serverpush到目标端进行响应。这些不是本文想要分析的重点,不再分析。

  • 相关阅读:
    iOS开发时,在Xcode中添加多个Targets进行版本控制
    如何给苹果公司发邮件?
    快快快!27个提升效率的iOS开源库推荐
    史上最全的常用iOS的第三方框架
    Ajax提交与传统表单提交的区别说明
    js原生ajax请求get post笔记
    查看iOS Crash logs
    如何提高iOS开发能力
    iOS 常用的#define合集
    Xcode编译错误和警告汇总
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6836562.html
Copyright © 2020-2023  润新知