相关文章:《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》
【2022.04.21】源码在Android 12中运行注意事项:由于Android 12对蓝牙权限做了调整,取消了位置信息,增加了扫描、广告、连接权限,并且都是运行时动态权限,具体请参考https://developer.android.google.cn/about/versions/12/features/bluetooth-permissionsl=zh-cn
去年有个哥们找我给他做个手机游戏辅助的软件,要求很简单,自动向玩游戏的安卓手机发送触摸、滑动指令。接到这个任务,我还是挺有把握的,因为在研究HID鼠标协议的时候听说有绝对位置的鼠标这个么东西,心想只要实现绝对定位的鼠标不就行了,于是当时就答应了那哥们,说没问题。经过一段时间的折腾后,我搞出了符合绝对定位鼠标的协议的数据包,在开发机win10上测试很满意,到安卓系统上测试时怎么也不行,顿时就傻眼了。。。最后不得不接受这个事实:安卓系统不支持绝对定位的鼠标。
这里要说明一下,普通鼠标和绝对位置鼠标的区别。他们的按键和滚轮都是一样的功能,只是在坐标定位上不一样。普通鼠标是相对定位;绝对位置鼠标其实并没有这么个东西,非要说有的话就想象成扣在屏幕上的触摸屏,手指点到哪里光标就在哪里。
这件事也就不了了之了,后来过年的时候没事做又捡起来搞,经过几个月的瞎折腾还就搞成了。。。这次不是绝对位置的鼠标,而是TouchScreen。TouchScreen协议其实跟我们的手机屏幕、带触摸功能的笔记本屏幕使用的协议是一样的,只是使用的是Bluetooth HID TouchScreen。显著的特点是,触摸后在屏幕上没有像鼠标那样的光标,如果不是桌面上的图标在滑动,根本看不出来(从IOS13.4开始就不支持这个协议了)。下面看看实际效果:
BT HID TouchScreen协议让你的安卓手机变成其它设备的触摸屏
说明一下,视频中左边手机屏幕出现的白色光斑不是光标,是触摸轨迹,可以在开发者模式中打开“触摸提示”。
触摸定位准确度测试1:右侧为被控手机,屏幕分辨率1080 x 2340。绿色方框中为控制手机触摸区域的触摸点,也就是要发送给被控机的触摸点(这个点必须要经过映射后发送),右侧手机屏幕上的两个数字表示屏幕被触摸的xy坐标

映射的具体算法如下:
设LCD的x轴分辨率为R1,TouchScreen的x轴分辨率为R2,如果TouchScreen发送的触摸点为P1,那么驱动接收到P1后映射的坐标为P2,则P2.x=P1.x*R1/R2。
展望:基于TouchScreen这个基础功能,开发支持手势录制,脚本控制的功能,用于游戏辅助,自动刷视频等场景
相关文章:《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91459 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!