转转上买来的斐讯n1天天链,刷了webpad官改系统当电视盒子用,在手机上安装斐讯官方的遥控app后,可以替代实体遥控器,实现遥控电视盒子的功能,少掏30-40购买遥控器的钱。但是美中不足的是,盒子一旦关机就无法开机,必须重新插拔电源才能开机,很不方便。于是开始研究如何用软件遥控盒子开关机的办法。

n1没有红外功能,所以遥控器一般都是通过蓝牙或者wifi来连接的。本文介绍的是wifi遥控,蓝牙遥控见我的另一篇文章斐讯n1遥控器app——蓝牙篇。由于手上没有t1遥控器,不清楚使用实体遥控器能不能开机,如果能开机,开机的原理又是什么?盒子关机后蓝牙和wifi都断开了,如何唤醒?网上有资料说,可以通过蓝牙发送广播数据包或者通过以太网发送幻数据包的方式使盒子开机,前者由于需要对蓝牙协议比较熟悉,太过复杂,只好放弃,后者经测试无效。

后来想到官改系统已经具有了root权限,而且开放了telnet服务(端口号为2323),完全可以使用Linux命令实现关机。

休眠和唤醒的命令

基本思路就是用java编写telnet客户端,远程登录到电视盒子上,执行

echo mem > /sys/power/state

命令(具体介绍请百度“安卓电源管理”)关闭屏幕,注意这里只是休眠,wifi仍连接着,并不是关机,要是真的关机就没办法唤醒了!虽然这个办法也不是那么完美,但是毕竟省去了拔电源的苦恼,而且n1待机状态下耗电量很小,可以忽略。

想要亮屏的话执行下面的命令即可

echo "mem disk" > /sys/power/state

为了把休眠和唤醒的功能加到遥控器里,需要先分析一下官方原版遥控的实现原理

官方遥控app接口说明

通过使用charles抓包工具进行分析,可以发现官方遥控app其实就是向盒子上的服务端发送简单的http请求。下面是使用jadx反编译后看到的部分源码,正好对应了app里的部分功能。


public interface IRemoterService {b<byte[]> doScreenshot();//截屏b<Status> getStatus();//获取盒子的名称、mac等信息b<String> ping();//ping测试b<String> sendCommand(String str);//发送命令,比如打开设置界面b<String> sendKeyEvent(KeyEvent keyEvent);//发送按键
}public interface HttpAppInfosService {@GET("applist")b<ApplyInfosBean> getAppInfos();//获取已安装的应用列表@POST("application")@Headers({"Content-Type:application/json;charset=UTF-8"})b<ApplyInfosBean> openApplication(@Body z zVar);//打开应用
}

以下假设盒子内网地址为192.168.123.116

  • 发送按键

接口地址:http://192.168.123.116:8080/v1/keyevent

请求方法:POST

参数:{"keycode":4,"longclick":false}

public class KeyCode {public static int BACK = 4;public static int CENTER = 23;public static int CHANEL_DOWN = 167;public static int CHANEL_UP = 166;public static int DOWN = 20;public static int HOME = 3;public static int LEFT = 21;public static int MENU = 82;public static int MUTE = 164;public static int POWER = 26;public static int RIGHT = 22;public static int UP = 19;public static int VOL_DOWN = 25;public static int VOL_UP = 24;
}
  • 发送命令

接口地址:http://192.168.123.116:8080/v1/action

请求方法:POST

参数:{"action":"setting"}

public class Commands {public static String OPEN_CLEAR = "openclear";//打开电视管家一键清理public static String OPEN_LOCK = "openlock";//儿童锁public static String OPEN_SETTING = "setting";//设置
}
  • ping

接口地址:http://192.168.123.116:8080/v1/ping

请求方法:GET

  • 获取状态

接口地址:http://192.168.123.116:8080/v1/status

请求方法:GET

  • 获取应用列表

接口地址:http://192.168.123.116:8080/v1/applist

请求方法:GET

  • 打开应用

接口地址:http://192.168.123.116:8080/v1/application

请求方法:POST

参数:{"package":"com.android.tv.settings","activity":"com.android.tv.settings.MainSettings"}

包名和activity名参照上一个接口的返回结果

  • 截屏

接口地址:http://192.168.123.116:8080/v1/screenshot

请求方法:GET

定制自己的遥控器app

本想着自己重新开发一个app实现需求,但是发现github上已经有人做过了,于是就直接把源码拿来用了,把原来的项目里关机键的逻辑稍微改动一下就行了。java版的telnet客户端例子网上也有一大把,不过感觉对socket粘包、半包等问题的处理都不太优美,如果只关心发送命令而不关心命令执行结果的话,也可以直接拿来用。

附上别人做好的遥控器app(关机后不能唤醒):

斐讯/PHICOMM N1 盒子YYF电视盒子的遥控器(android版本):https://github.com/Jimmuy/N1_controler

补上自己做的可以蓝牙开机的版本(由于盒子不在身边,没有经过测试,所以可能会有问题):

https://github.com/DoraemonHC/N1Controller

apk下载地址:https://github.com/DoraemonHC/N1Controller/releases/download/1.0/app-debug.apk

微信小程序版本(依旧没有测试),微信搜索【TV遥控器】:

由于本人代码水平比较烂,修改后的代码就不放上来了,这里仅仅提供一个思路。下图是修改后的效果。

没有悟空遥控器烦人的广告,而且比官方遥控器启动更快,更加地简洁,自用已经足够了。

斐讯n1遥控器app(支持休眠和唤醒)——WiFi篇相关推荐

  1. 斐讯n1遥控器app——蓝牙篇

    上一篇文章介绍的是使用wifi遥控电视盒子,缺点是盒子并没有真正关机,只是关闭了屏幕.为了让处于休眠状态下的盒子能够接收遥控指令,必须使其一直连在路由器上面,无疑增加了耗电量.下面介绍另一种办法,使用 ...

  2. 斐讯N1刷Armbian后使用命令连接WiFi

    前言:斐讯N1,断开网线后开机自启连接wifi使用 PS:连接WiFi时要在有线连接的情况下进行,在wifi下设置连接wif会导致当前wifi断线导致无法继续配置. 方法一:进入设置修改 armbia ...

  3. 斐讯N1 – 完美刷机Armbian教程

    斐讯N1 – 完美刷机Armbian教程 原文 :鱼儿的博客 为什么买斐讯N1? 购买斐讯N1 降级关键分区 制作Armbian U盘 进入U盘armbian 刷armbian到emmc 坑爹问题-1 ...

  4. n1运行linux,斐讯 N1 运行 ArchLinuxARM

    酷酷之前教大家斐讯 N1 如何运行 Linux,当时用的发行版是 Armbian,由于它有镜像文件,操作起来也比较简单. 不过 Armbian 只有 Debian 和 Ubuntu 两个版本可以选择, ...

  5. 记一次从某多多上买的斐讯N1黑盒的电视盒子刷机经历

    在某多多以100多的价格买了一个带电源的N1黑盒,连上电源和HDMI线开机,显示的是一个不断刷新信息的不知道啥系统.于是,抱着玩机的心态,我从网上找了各种把这个盒子刷成电视盒子的文档,最终参考了博客园 ...

  6. 斐讯n1 linux升级内核,斐讯N1盒子OpenWRT固件升级全记录

    斐讯N1盒子OpenWRT固件升级全记录 2021-02-18 17:10:02 178点赞 1890收藏 208评论 前言 hello~大家好!时隔一周的时间,我又来分享我的折腾日记了.过年这段时间 ...

  7. linux树莓派和n1,树莓派 斐讯N1 搭建NFS

    什么是NFS? 1台Linux主机的磁盘可以通过网络挂载到其他Linux主机上,实现云盘效果. NFS是一套软件和协议,同时也是一种文件系统,可以直接把远程的磁盘挂载到本地使用. 我用NFS做什么? ...

  8. armbian n1 桌面_斐讯N1折腾记:运行 Linux 及优化 | 米V米

    最后更新时间:2019年03月25日 此教程同样适用于斐讯 P1 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了官改系统,可以当作一个电视盒子和下载机来使用. 有些小伙伴可能不想把它当作电视盒子,就 ...

  9. 斐讯n1安装centos7+docker openwrt

    斐讯n1安装centos7+docker openwrt 首先声明,我的n1是降级过的,系统默认usb启动优先级大于emmc,所以可以直接将镜像写入u盘,通过u盘启动系统,同时通过脚本将系统写入emm ...

最新文章

  1. 微信小程序(11)--购物车
  2. C语言成长学习题(十六)
  3. Documentum常见问题10-修改特定Type的显示图标
  4. STM32外设有哪些?外设在总线上是怎么挂载的?
  5. 现金流量表的编制方法及程序
  6. “死”在拥挤赛道上的快递员工
  7. 彻底清除计算机远程桌面连接的历史记录
  8. 前端性能优化:Add Expires headers
  9. c++基础学习(07)--(类)
  10. Android笔记 隐式意图demo
  11. linux下实现桥接联网
  12. MongoDB 学习-MongoDB 的基本操作(二)
  13. 微信小程序授权登录(获取微信头像并显示)
  14. Android仿人人客户端(v5.7.1)——新鲜事之状态
  15. 词法分析与词性标注学习之笔记(二)----词性标注
  16. 2021年保育员(中级)考试及保育员(中级)考试总结
  17. linux自动备份系统快照,我的 Linux 时光机——Snapper系统级自动备份工具
  18. Python趣味案例 - 抓扑克牌的手气
  19. 派森诺转录+代谢组联合分析
  20. js获取元素下的第一级子元素

热门文章

  1. 手机行业影像突破,谁能成为下一个“苹果”?
  2. 微信小程序摄像头监控_微信小程序读取摄像头 微信调用摄像头
  3. Converting circular structure to JSON
  4. IDEA 关于两个分支代码合并的操作
  5. python基础-异常处理try-except
  6. 【卷积神经网络】CNN详解以及猫狗识别实例
  7. 基于模板匹配的知识图谱问答系统
  8. C#导出pdf文件《一》
  9. HTTP协议和URLConnection使用
  10. 高光时刻 | 方正璞华联合开发的「人力资源法律服务共享平台」在创新创业大赛中获奖