【Auto.js】给手机编一个模拟遥控器
目录
- 一、问题引发
- 二、初步尝试
- KeyCode(code)
- 三、再次尝试
- shell(cmd[, root])
- 四、调用 Java
- 五、附加
一、问题引发
本来想给自家的智能电视做个 APP,但家里人要看电视,我又没有电脑,全靠 AIDE 在手机上敲代码,运行测试也是。看来踏入 TV 开发的第一步都有困难。而电视与手机的最大区别在于电视用遥控器操作,不能触屏,而手机可以触屏。于是我想到了 Auto.js,可以用它写一个遥控器浮窗脚本,在手机上模拟遥控器操作,如此模拟电视环境运行 APP。
二、初步尝试
由于安卓虚拟机的 Android TV 和 Google 官方的电视棒的遥控器与国内的有极大不同,没有 0-9 数字键,只有开关、方向键、OK 键,所以我只要做一个方向键盘就行了。参考了 Auto.js 给出用例脚本和之前的一个脚本,我写出了初始代码:
var window = floaty.window(
<vertical><text id="text" text="ADJUST" textSize="16sp"/><relative layout_width="match_parent" layout_height="match_parent"><buttonid="ok"text="OK"layout_width="48dp"layout_centerInParent="true"/><button id="left"text="左"layout_toLeftOf="ok"layout_width="48dp"layout_centerVertical="true"/><button id="right"text="右"layout_toRightOf="ok"layout_width="48dp"layout_centerVertical="true"/><button id="up"text="上"layout_above="ok"layout_width="48dp"layout_centerHorizontal="true"/><button id="down"text="下"layout_below="ok"layout_width="48dp"layout_centerHorizontal="true"/></relative></vertical>
);window.exitOnClose();window.text.click(()=>{window.setAdjustEnabled(!window.isAdjustEnabled());
});window.ok.click(()=>{KeyCode(23);
});
window.left.click(()=>{KeyCode(21);
});window.right.click(()=>{KeyCode(22);
});window.up.click(()=>{KeyCode(19);
});window.down.click(()=>{KeyCode(20);
});
setInterval(()=>{}, 1000);
此处参阅 Auto.js 文档中 KeyCode 的用法:
KeyCode(code)
- code
<number>
| 要按下的按键的数字代码或名称。参见下表。 模拟物理按键。例如KeyCode(29)
和KeyCode("KEYCODE_A")
是按下A键。
查阅键表,找到需要的方向键及键值:
名称 | 代码 |
---|---|
KEYCODE_DPAD_UP | 19 |
KEYCODE_DPAD_DOWN | 20 |
KEYCODE_DPAD_LEFT | 21 |
KEYCODE_DPAD_RIGHT | 22 |
KEYCODE_DPAD_CENTER | 23 |
初步测试。。。失败
三、再次尝试
KeyCode(code)
是需要 root 权限的,我有 root,但不论怎么办,都运行失败。于是我想到了可以用 shell()
函数调用 input keyevent <code>
来模拟按键。当然这也需要 root。
而参考文档:
shell(cmd[, root])
- cmd
<string>
要执行的命令- root
<Boolean>
是否以root权限运行,默认为false。
将所有 KeyCode(code)
换成 shell("input keyevent <code>",true)
,再次测试。。。失败
四、调用 Java
我发现两次的日志很像,应该是同一个原因,可能 KeyCode(code)
就是对 shell("input keyevent <code>",true)
的一个封装吧。
毕竟 Auto.js 还可以调用 Java,所以改用 Java 的 java.lang.Runtime
来调用 Shell。
最后修改了一下,在原代码之前加了一些:
importClass("java.lang.Runtime");function key(c){try{Runtime.getRuntime().exec(["/system/xbin/su","-c","input keyevent "+c]);}catch(e){}
}
然后把所有 shell() 函数换成 key(),再次测试。。。成功
效果图:
果然,Java 才是王道。
五、附加
文件源码:遥控器.js
Auto.js 文档:https://pro.autojs.org/docs/
声明:未经作者允许禁止转载。
【Auto.js】给手机编一个模拟遥控器相关推荐
- 手机自动化测试工具Auto.js学习使用(附一个自动刷抖音类短视频的demo)
Auto.js学习使用 介绍 使用 1. 手机端安装auto.js 2.电脑下载vscode,安装插件 3.手机打开远程开发功能 4. vscode连接手机 5.进行开发(一个自动刷抖音类短视频的de ...
- auto.js自动化手机脚本初始配置
软件选择: auto.js 8.0pro版本(对比4.0版本有阉割,微信支付宝不能点)有两种模式: 客户端模式 服务器模式 auto.js 4.0版本有一种模式: 客户端模式 设备和电脑连接: 手机: ...
- Auto.js学习笔记4—按键模拟
Keys 按键模拟部分提供了一些模拟物理按键的全局函数,包括Home.音量键.照相键等,有的函数依赖于无障碍服务,有的函数依赖于root权限 一般来说,以大写字母开头的函数都依赖于root权限,执行此 ...
- auto.js去除手机顶部状态栏的绿色部分
人狠话不多,直接上代码, 'ui';/** 作者:美美*///去除状态栏顶部的绿色,此方法在安卓7-10有效果,安卓11无效activity.window.addFlags(android.view. ...
- js微信抢红包脚本代码_基于Auto.js的微信红包监测
前段时间接触了下Auto.js(https://github.com/hyb1996/Auto.js),很好上手而且挺有意思,于是写了个微信红包监测脚本 大概思路是,不断获取手机屏幕截图,发现新消息则 ...
- Auto.js Pro如何连接VS Code插件
由于Auto.js Pro的插件更新,原插件使用方式已经不适合新插件,现推出此教程. 准备Auto.js Pro 你首先需要一个Auto.js Pro.Pro是付费软件,如果你还没购买,请访问 htt ...
- Auto.js学习笔记1:开发需要准备什么工具和编程语言知识?
什么是Auto.js? 根据官方文档定义:Auto.js是一款无需root权限的JavaScript自动化软件. Auto.js是一款安卓手机的应用主要用webview,和微信一样,安装在手机上: A ...
- 一文秒懂Auto.js免Root自动化脚本开发
一文秒懂Auto.js免Root自动化脚本开发 一.手机端安装Auto.js app 放一个免费版本链接,功能足够使用 链接:https://pan.baidu.com/s/1AQT6tDGdl9FW ...
- 使用auto.js实现自动化每日打卡
使用auto.js实现自动化每日打卡 疫情原因,需要在家每天定时打卡,每天刚起床的时候避免不了出现注意力不集中或者是看不到app,点不到按钮什么的(我瞎说的). 所以,就想搞一个自动化操作的东西,省去 ...
最新文章
- 香帅的北大金融学课笔记16 -- 公司决策
- gradle 上传jar包_gradle 打包jar上传到nexus 同时上传源码jar
- linux在双系统中消失了,双系统重新安装windows后,ubuntu选项消失
- 关于gitgithub的操作
- 查看 linux 硬件信息:内存、分区、系统、环境变量、防火墙、路由、端口监听、进程、CPU...
- 美国人用什么android手机,美国过半消费者使用智能手机 Android占48.5%
- Atitit spirngboot 访问 html文件总结 自设计web服务器原理与实现 Url路由压力,读取url,获得项目更路径绝对路径,拼接为文件路径。读取文建内容输出即可 目录路径 u
- 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
- windows10关闭防火墙
- 让数据填报、收集效率提升80%!这个报表工具真的太强大了
- Altium Designer--如何隐藏连线
- 无人机的微分平坦性详细推导+Mini snap
- Css 弹性布局(Flex)详细介绍(Flex 属性详解、场景分析)
- Maxon将在Siggraph 2019公布下一代Cinema 4D RELEASE 21
- 交叉编译openssl到aarch64
- Vulnhub_Beelzebub
- 计算机学院学生会会徽,学生会会徽策划书
- CAN总线转光纤/CAN光端机在海湾消防报警主机联网中应用
- USDP使用笔记(三)大数据集群及组件启停
- arcgis-ps-cad联合出图控制