adb的那点小事——360电视助手实现研究
欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa
1. 前言
1.1. 行业背景简单介绍
当下,智能家居与智能穿戴设备无疑是继智能手机后两个最热门的方向。而智能家居在占领用户“客厅”的行动中。电视无疑占领着一个十分重要的位置。
近期两年,智能电视(包含盒子),发展的如火如荼,引发了一波电视换机潮。如今购买电视,不是智能电视,甚至都不好意思拿出来说。
然而,国内移动应用市场激战正酣的三巨头(百度、360、腾讯)在电视应用分发上都鲜有举动,市面上仅仅有一些小公司在做,当中做的还算不错的有:奇珀市场、爱家电视应用市场。
直到在今年(2014年)4月360推出了“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. 局域网应用安装
局域网内直接安装apk到TV端是通过我们万能的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结构,接下来的事情就是Client与Server直接的网络通信了。
这里之所以採用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到目标端进行响应。这些不是本文想要分析的重点,不再分析。
adb的那点小事——360电视助手实现研究的更多相关文章
- 360手机助手内部资料曝光,63张PPT纯干货
360手机助手内部资料曝光,63张PPT纯干货 日前,国内最大的安卓应用商店360手机助手发布了<2016年手机软件行业趋势绿皮书>,这份绿皮书对2015年以来移动互联网的趋势做了总结,展 ...
- 柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布
柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要 ...
- Android静默安装实现方案,仿360手机助手秒装和智能安装功能
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有非常多朋友都问过我.在Android系统中如何才干实现静默安装 ...
- 安卓app上传到应用宝、360手机助手、小米应用商店、百度手机助手/安卓市场/91助手
1.小米应用商店 小米开放平台网站:https://account.xiaomi.com 注册帐号教程地址:http://dev.xiaomi.com/doc/?p=90 应用提交流程:http:// ...
- 发布阶段 github和360移动助手及总结
经过一系列的冲刺和加工 最激动人心的无非在发布平台上公布上自己辛苦奋斗了一个周期的产品,这个时候的我们就像Iphone 6发布会上得CEO,为自己的产品完美画上了研发的句号. 接下来的日子就是准备ve ...
- 360手机助手: App上架(提交资料)注意事项
提交app资料尤其注意: .keystore和密码?由HBuilder提供公有证书: 签名证书KeyStore证书别名:hbuilder证书密码:123456keystore密码:123456 360 ...
- android 浮动窗体学习笔记及个人理解(仿360手机助手)
很感谢原文作者 http://blog.csdn.net/guolin_blog/article/details/8689140 经自己理解 程序执行界面例如以下图: 1.程序入口界面 2.小浮动窗体 ...
- adb这点小事——远程adb调试
欢迎转载.转载请注明:http://blog.csdn.net/zhgxhuaa 1. 前言 1.1. 写在前面的话 在之前的一篇文章<360电视助手实现研究>中介绍了在局域网内直接 ...
- Android手机、电视(盒子) 打开ADB调试 一览表
手机.电视(盒子) 打开ADB调试 一览表 一.手机打开ADB调试方法 序号 名称 描述 方式 1 华为手机 EMUI 1.设置 ->关于手机-> 版本号 点击(4~5次)2.返回设置 - ...
随机推荐
- [android开发篇]activity组件篇
https://developer.android.com/guide/components/activities.html Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打 ...
- [automator学习篇]android 接口-- bluetooth
http://www.android-doc.com/guide/topics/connectivity/bluetooth.html 本地下载的sdk 目录: D:\AndroidSdk\s ...
- 【JavaScript 8—基础知识点】:DOM
一.总体概述 1.1,什么是DOM DOM(Document Object Model):D(文档):整个web加载的网页文档:O(对象):类似于window对象之类的东西,可以调用属性和方法,在这里 ...
- shell的until循环
until 循环执行一系列命令直至条件为 true 时停止.until 循环与 while 循环在处理方式上刚好相反.一般while循环优于until循环,但在某些时候,也只是极少数情况下,until ...
- ios弹性头部
很久没写博客了,金天有点时间来写下,一直觉得弹性头部很炫,看起来高大上,写起来蛮简单的 层次分析 一共有3层,最底部是图像层,中间是scrollView或者它的子类,最上层是scrollView上面添 ...
- arc和mrc混用
arc项目中引用非arc代码 加上“-fno-objc-arc” 非arc项目中引用arc代码 加上“-fobjc-arc”
- BZOJ3532 [Sdoi2014]Lis 【网络流退流】
题目 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若 干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出将删去项的附加属性排序 ...
- 算法复习——迭代加深搜索(骑士精神bzoj1085)
题目: Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相 ...
- 【jquery创建元素添加元素】
使用jquery创建新元素的方法为:$(html标签),例如 $("<p></p>")创建了一个段落.注意此时只是创建了对象,尚未添加到文档节点中去:以下四 ...
- ADO:防止更新的数据含有单引号而出错
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] public void Update( string au_lname, string zip,string au ...