先不说废话,资料先甩上来:
ATouch安卓APP源码:https://gitee.com/guanglunking/ATouch 【开发环境:AndroidStudio】
ATouch板子源码:https://gitee.com/guanglunking/ESP32_CH374U 【开发环境:Linux SDK:ESP-DIF3.2】
ATouch安卓后台程序源码: https://gitee.com/guanglunking/ATouchService 【开发环境:android-ndk-r13b】
APP下载地址: https://gitee.com/guanglunking/ATouch/blob/master/app/release/ATouchV1.0.apk
淘宝店铺:https://item.taobao.com/item.htm?id=595635571591
演示视频:https://www.bilibili.com/video/av53687214
说起这个项目的起源,可能大概也许是源于自己用手搓手机菜的抠脚吧,也或许是因为对开发的热情大过于玩的热情哈哈,反正这个东西反反复复得折腾了半年之久了,对这个东西的定位也渐渐从做一个人人都能玩的商品到单纯做一个有吃鸡功能的开发板。现在把他开源出来,也算是回报互联网上良多开源的资料教程吧!
从上面的资料可以看到有三份源码,其中两份(APP和板子源码)还可以理解,另外那个后台源码是啥东西?干啥的?这个还要从实现安卓模拟触屏的功能谈起,主要是因为手机APP无法实现触摸非己界面的功能,而我们有需要在游戏运行的时候触摸屏幕该怎么办呢?解决办法是使用android的ndk开发实现一段后台程序来对触屏文件/dev/input/event进行写操作来实现,所以相对要复杂一些,下面是整个交互的流程概括:
流程说明:
1.CH374U是一个支持8位并口或者SPI的3端USBHUB芯片,将他通过8位并口与ESP32连起来为ESP32实现了3个USB端口的操作。
2.ESP32通过CH374U模拟ADB协议与手机连接,手机需要打开开发者模式。连接成功后使用端口映射 adb forward tcp:local_port tcp:remote_port 来将安卓后台程序ATouchService与开发板ESP32_CH374U建立socket的通讯连接。
3.ESP32通过CH374U采集键盘鼠标数据(USB HID协议),如果已连接手机就将数据打包发送至手机后台程序ATouchService。
4.后台程序ATouchService将接收到的键鼠信息进行处理,如果此时APPATouch配置并开启了键鼠映射就将其键鼠对应的控制信息发送至手机的 /dev/input/event 文件模拟触摸操作。
其实东西早就做好开源出来了,后来感觉不发论坛的话没几个人看得到所以补发一下哈哈。。
更多详细的内容请看上面的博客地址和演示视频。
最近编辑记录 guanglun (2019-08-12 12:43:39)
离线
"使用android的ndk开发实现一段后台程序来对触屏文件/dev/input/event进行写操作来实现",
--- 为什么不直接借用 adb 实现?
原因是adb的touch命令执行速度太慢,无法实现快速的多点触控模拟
离线
三个 USB HOST 口?这是要控制三台手机吗?
键盘鼠标插上去占用两个,手机插上去占用一个
离线
新出来的 ESP32S2据说自带 usb otg,这样是不是更容易了
就工作量来说差不多,从思路上说就简单了
离线
scrcpy 好像是通过ADB的机制,不需要ROOT
不知道楼主的直接读写DEV的文件方式需要ROOT吗?
我这也是ADB操作的啊,无需ROOT
离线
可以通过 f1c100s 这种 usb otg 接口,安装 adb 操作安卓手机吗?
可以的
离线
这种投屏的的模拟触摸方式太慢,没有直接写event的方式速度快
离线
触摸事件和你的原理应该一样,延迟高的是图像,scrcpy不只是投屏
移植不难,这是移植到v3s上的效果:https://whycan.cn/t_2736.html
这个应该是只读了event吧?
离线
还可以远程控制的,反向控制手机
guanglun 说:checkout 说:触摸事件和你的原理应该一样,延迟高的是图像,scrcpy不只是投屏
移植不难,这是移植到v3s上的效果:https://whycan.cn/t_2736.html这个应该是只读了event吧?
那不错 如果能多点控制就更好了
离线