首页 收藏 QQ群
 网站导航
开启辅助访问

QQ登录

只需一步,快速开始

扫一扫,访问微社区

立即注册 找回密码
查看: 88502|回复: 179
[教程]

B860AV1.1-T 破解优化第四弹:两键切换 IPTV 与当贝桌面、双网

  [复制链接]
发表于 2018-8-27 20:42 | 显示全部楼层 |阅读模式
本帖最后由 hao501802766 于 2018-8-29 10:57 编辑

B860AV1.1-T 破解优化第四弹:两键切换 IPTV 与当贝桌面、双网

本系列最后一弹,感谢各位坛友捧场。这一弹才是重头戏,也许是当前全网体验最优、兼容最广双桌面、双网切换方案,您试试就知道了。只要盒子有双网卡,理论全部适用。

电信盒子本来只能看 ITV,我们获取 ADB 权限后,就能看第三方软件了。但 ITV 是内网与 Internet 分在不同 Vlan,可以认为分为两个局域网,不可互通。并且电信盒子开启 Wifi 就拿不到内网 IP,尝试了很多方案如设置路由、自动切换 WIFI 与有线等,都不甚满意。

最终,完成方案是通过两个按键,分别设置为 IPTV 桌面、当贝桌面。可以一键触达任一桌面,同时进入 IPTV 桌面,自动将网络切为 IPTV 内网;进入当贝桌面,网络为 Internet 网络。

感谢坛友 NadOo,与 Github 用户 Wyf841015 脚本启发。

ZTE B860A 有线(itv) + wifi(互联网) 双线自动切换脚本
exitiptv

自己重新写了一个脚本,本脚本优点:
1、绕过 ITV 广告,清爽启动(快到有时开机连进度条都看不到)
2、可自定义开机进入 ITV 还是当贝桌面(请关闭当贝软件里自启,避免干扰)
3、一键触达 ITV 或当贝桌面,就像添加了桌面 Home 键,再也不用不停按返回键了
4、切换网络完全可控,避免自动脚本不识别某些内置 APP 频繁切换问题
5、迅速,切桌面、切网进程无阻塞




一、确定要使用的按键、桌面

1.1 获取按键 ID

用电脑 ADB 连接到机顶盒,并进入 adb shell
  1. adb connect 192.168.50.83 # 连接 IP 为 192.168.50.83 的电视盒子
  2. adb shell # 进入盒子 bash 环境

  3. # 输入此命令,然后用遥控对准电视按想用的按键,bash 界面会出现此按键的 ID 识别码,记下来。选两个按键,一个用作 iptv,一个用作当贝桌面(或其他桌面)
  4. getevent -c 1 /dev/input/event0
复制代码
15353689875337.jpg

15353734928716.jpg

1.2 获取桌面名称

把电视遥控到你想开启的 IPTV 桌面界面,然后执行如下命令:
  1. # 输入命令,获取当前桌面程序
  2. dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
复制代码

可以参考下图,我当前运行的是电视猫,u0 之后那部分便是我们要用的名称
mCurrentFocus=Window{41b735d8 u0 com.moretv.android/com.moretv.module.lowmm.SingleActivity}
获取当贝桌面同理。

15353707755604.jpg

至此,拿到想用的两个桌面名称记下来。比如脚本中默认的,南京电信盒子默认桌面为 ihome,第三方为当贝桌面:

  1. com.ihome.android.launcher/com.ihome.android.launcher2.activity.MainActivity

  2. com.dangbei.tvlauncher/com.dangbei.tvlauncher.IndexActivity
复制代码

二、自定义脚本并上传

脚本我放在 gist 上(欢迎 Star),同时提供目前测试稳定版,供下载:

在线地址:https://gist.github.com/boboidream/5ae1ec328e6623774411f80580fdc134
下载地址:
游客,如果您要查看本帖隐藏内容请回复

  1. [更新日志]
  2. 2018.08.27 | [!] am start 添加 -n 参数,不再报 / 操作符错误
  3. 2018.08.27 | [+] 发布
复制代码


下载后,用文本编辑器打开,可以看到开头定义变量:

  1. boot='iptv' # iptv | dangbei
  2. code_iptv='0001 00fb 00000001'
  3. code_dangbei='0001 00ad 00000001'
  4. id_iptv='com.ihome.android.launcher/com.ihome.android.launcher2.activity.MainActivity'
  5. id_dangbei='com.dangbei.tvlauncher/com.dangbei.tvlauncher.IndexActivity'
复制代码

大家一看就明白了,把前文拿到的值填入即可:
boot 值决定开机进入哪个桌面。
code_iptv 值改为遥控器上想用作 iptv 桌面的键位值。
code_dangbei 值改为第三方桌面按键 ID 值
id_iptv 值为希望 code[/cur]iptv 这个按键要启动的界面
id_dangbei 值为第三方桌面程序名。

三、上传脚本

  1. # 挂载机顶盒
  2. adb remount

  3. # 上传文件(假设本地脚本位置在 ~/Desktop/B860AV1.1-T/script/)
  4. adb push ~/Desktop/B860AV1.1-T/script/dtchange.sh /system/bin/

  5. # 设定可运行权限
  6. adb shell chmod 0755 /system/bin/dtchange.sh
复制代码

一定要把 wifi 与有线开关都勾上。拿不到内网地址没关系。
15353714385310.jpg
  1. # 执行一次,测试是否成功。
  2. adb shell sh /system/bin/dtchange.sh

  3. # 查看脚本进程,如果在运行,就可以去电视上测试了
  4. adb shell busybox pgrep -fl dtchange.sh
复制代码


四、添加开机自启、后台白名单

第三部分测试没问题了,就把咱们的 dtchange.sh 加入到开机自启脚本就好了
  1. nohup /system/bin/dtchange.sh &> /cache/log/dtchange.log
复制代码

假设机顶盒开机文件脚本在 /system/bin/init.zte.post_boot.sh 执行以下命令即可
  1. echo "nohup /system/bin/dtchange.sh &> /cache/log/dtchange.log" >> /system/bin/init.zte.post_boot.sh
复制代码





无意间看到 /system/etc/BannedKillBackgroundProcessesWhiteList.ini 文件,看名字推测是系统后台白名单,就删掉没用的程序,把我们的两个桌面名称加进入了。

15353744474933.jpg

后台常住才切换快么,省下着内存空间就得用在刀刃上。

至此,一个干净、可控、双桌面系统的机顶盒完成了。来张桌面截图,完结此系列。

15353735966929.jpg

End

dtchange.sh.zip

1.55 KB, 下载次数: 81, 下载积分: 金币 -1

评分

参与人数 3威望 +14 金币 +25 Z币 +6 收起 理由
cl312 + 2 + 5 双网切换 是不是要单线复用 我的不能连WiFi.
eswgdeh + 6 + 10 + 3 ZNDS有你更精彩:)
hao501802766 + 6 + 10 + 3 ZNDS有你更精彩:)

查看全部评分


上一篇:B860AV1.1-T 破解优化第三弹:冻结无用软件,控制程序自启
下一篇:山东电信中兴B860AV1.1升级最新系统后狂吃内存如何解决??
 楼主| 发表于 2018-8-29 12:56 | 显示全部楼层
本帖最后由 一肩月光 于 2018-8-30 10:11 编辑
hao501802766 发表于 2018-8-29 10:57
打开 解析错误,还得翻墙?

这都被墙了?

  1. #!/system/bin/sh

  2. #----------------------------------------
  3. # Author: boboidream
  4. # Email: me@wenboz.com
  5. # Version: 0.0.2
  6. # Date: 2018.08.27
  7. #----------------------------------------

  8. boot='iptv' # iptv | dangbei
  9. code_iptv='0001 00fb 00000001'
  10. code_dangbei='0001 00ad 00000001'
  11. id_iptv='com.ihome.android.launcher/com.ihome.android.launcher2.activity.MainActivity'
  12. id_dangbei='com.dangbei.tvlauncher/com.dangbei.tvlauncher.IndexActivity'

  13. func_test() {
  14.     mount -o remount,rw /system
  15.    
  16.     local PN=`busybox basename $0`
  17.     local Pnum=`busybox pgrep -f $PN|busybox wc -l`
  18.    
  19.     if [ $Pnum -gt 1 ]; then
  20.         echo "dtchange.sh running"
  21.         exit 2
  22.     fi
  23. }

  24. func_init() {
  25.     if [ $boot = 'dangbei' ]; then
  26.         open_dangbei
  27.     else
  28.         local res1=`svc wifi disable`

  29.         while [ "$(getprop net.zte.eth.netstate)" != "CONNECTED" ]
  30.         do
  31.             sleep 0.5
  32.         done
  33.         
  34.         sleep 1 && am start -n $id_iptv
  35.     fi
  36. }

  37. open_iptv() {
  38.     local netstate=$(getprop net.zte.eth.netstate)
  39.    
  40.     am start -n $id_iptv &
  41.    
  42.     if [ "$netstate" != "CONNECTED" ]; then
  43.         local res1=`svc wifi disable`
  44.         #echo "$(date +%X) iptv_wifi_down: $res1"
  45.         local res2=`ifconfig eth0 up`
  46.         #echo "$(date +%X) iptv_eth0_up: $res2"
  47.     fi
  48. }

  49. open_dangbei() {
  50.     local netstate=$(getprop net.zte.wifi.netstate)
  51.    
  52.     am start -n $id_dangbei &
  53.    
  54.     if [ "$netstate" != "CONNECTED" ]; then
  55.         local res1=`ifconfig eth0 down`
  56.         #echo "$(date +%X) init_eth0_down: $res1"
  57.         local res2=`svc wifi enable`
  58.         #echo "$(date +%X) init_wifi_up: $res2"
  59.     fi
  60. }

  61. main() {
  62.     while [ 1 ]; do
  63.         local rm_code=$(getevent -c 1 /dev/input/event0)
  64.         
  65.         if [ "$rm_code" = "$code_iptv" ] ; then
  66.             open_iptv
  67.         fi
  68.         
  69.         if [ "$rm_code" = "$code_dangbei" ] ; then
  70.             open_dangbei
  71.         fi
  72.         
  73.         sleep 1
  74.     done
  75. }

  76. func_test
  77. func_init
  78. main

  79. # advice:  add com.dangbei.tvlauncher & com.ihome.android.launcher to
  80. # /system/etc/BannedKillBackgroundProcessesWhiteList.ini
  81. # keep desktop app run in background.
复制代码

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-8-28 21:29 | 显示全部楼层
一肩月光 发表于 2018-8-27 21:03
版主敬业啊,赞赞赞~~~~~~

强烈建议各位坛友到:https://gist.github.com/boboidream/5ae1ec328e6623774411f80580fdc134 来下载脚本。

因为使用过程中,会不断的改进,帖子每次修改提交都要审核,比较繁琐,帖子里脚本就不再更新了。

现在 0.0.2 版,直接进入 iptv 可能由于启动太快,有概率导致连开机验证都一起跳过。我在 Gist 做了 Sleep 1s 调整,还在测试,希望能修复这问题。

点评

打开 解析错误,还得翻墙?  详情 回复 发表于 2018-8-29 10:57
回复 支持 1 反对 0

使用道具 举报

发表于 2018-8-27 20:48 | 显示全部楼层
可以可以,顶一下!

点评

版主敬业啊,赞赞赞~~~~~~  详情 回复 发表于 2018-8-27 21:03
版主敬业啊,赞赞赞~~~~~~  详情 回复 发表于 2018-8-27 21:03
回复 支持 反对

使用道具 举报

发表于 2018-8-27 20:48 | 显示全部楼层
这个楼主不错

点评

感谢捧场~~~  详情 回复 发表于 2018-8-27 21:02
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-27 21:02 | 显示全部楼层

感谢捧场~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-27 21:03 | 显示全部楼层
自行车啊对 发表于 2018-8-27 20:48
可以可以,顶一下!

版主敬业啊,赞赞赞~~~~~~

点评

强烈建议各位坛友到:https://gist.github.com/boboidream/5ae1ec328e6623774411f80580fdc134 来下载脚本。 因为使用过程中,会不断的改进,帖子每次修改提交都要审核,比较繁琐,帖子里脚本就不再更新了。 现在 0  详情 回复 发表于 2018-8-28 21:29
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-27 21:03 | 显示全部楼层
自行车啊对 发表于 2018-8-27 20:48
可以可以,顶一下!

版主敬业啊,赞赞赞~~~~~~
回复 支持 反对

使用道具 举报

发表于 2018-8-27 21:19 | 显示全部楼层
很详细
回复 支持 反对

使用道具 举报

发表于 2018-8-27 23:12 | 显示全部楼层
看不懂。。
回复 支持 反对

使用道具 举报

发表于 2018-8-28 16:47 | 显示全部楼层
牛X,佩服佩服!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐应用 上一条 /6 下一条

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 浙ICP备14000780号 )

增值电信业务经营许可证:浙B2-20150411 丨 浙公网安备 33010802006145号

浙网文(2016)6491-366号 | GMT+8, 2018-11-18 13:42 , Processed in 0.172590 second(s), 47 queries .

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2018 ZNDS.Com

快速回复 返回顶部 返回列表