TouchScreen协议让你的安卓手机变成蓝牙HID触摸屏

相关文章:《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》

需要《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》、《蓝牙HID TouchScreen协议让你的安卓手机变成触摸屏》、《通过蓝牙将安卓手机模拟成游戏方向盘-支持旋转轮胎》源码的请发私信。

【2022.04.21】源码在Android 12中运行注意事项:由于Android 12对蓝牙权限做了调整,取消了位置信息,增加了扫描、广告、连接权限,并且都是运行时动态权限,具体请参考https://developer.android.google.cn/about/versions/12/features/bluetooth-permissions?hl=zh-cn

去年有个哥们找我给他做个手机游戏辅助的软件,要求很简单,自动向玩游戏的安卓手机发送触摸、滑动指令。接到这个任务,我还是挺有把握的,因为在研究HID鼠标协议的时候听说有绝对位置的鼠标这个么东西,心想只要实现绝对定位的鼠标不就行了,于是当时就答应了那哥们,说没问题。经过一段时间的折腾后,我搞出了符合绝对定位鼠标的协议的数据包,在开发机win10上测试很满意,到安卓系统上测试时怎么也不行,顿时就傻眼了。。。最后不得不接受这个事实:安卓系统不支持绝对定位的鼠标。

这里要说明一下,普通鼠标和绝对位置鼠标的区别。他们的按键和滚轮都是一样的功能,只是在坐标定位上不一样。普通鼠标是相对定位;绝对位置鼠标其实并没有这么个东西,非要说有的话就想象成扣在屏幕上的触摸屏,手指点到哪里光标就在哪里。

这件事也就不了了之了,后来过年的时候没事做又捡起来搞,经过几个月的瞎折腾还就搞成了。。。这次不是绝对位置的鼠标,而是TouchScreen。TouchScreen协议其实跟我们的手机屏幕、带触摸功能的笔记本屏幕使用的协议是一样的,只是使用的是Bluetooth HID TouchScreen。显著的特点是,触摸后在屏幕上没有像鼠标那样的光标,如果不是桌面上的图标在滑动,根本看不出来(从IOS13.4开始就不支持这个协议了)。下面看看实际效果:

BT HID TouchScreen协议让你的安卓手机变成其它设备的触摸屏


说明一下,视频中左边手机屏幕出现的白色光斑不是光标,是触摸轨迹,可以在开发者模式中打开“触摸提示”。

触摸定位准确度测试1:右侧为被控手机,屏幕分辨率1080 x 2340。绿色方框中为控制手机触摸区域的触摸点,也就是要发送给被控机的触摸点(这个点必须要经过映射后发送),右侧手机屏幕上的两个数字表示屏幕被触摸的xy坐标
触摸定位准确度测试1
触摸定位准确度测试2:右侧为被控手机,屏幕分辨率1536 x 2560。绿色方框中为控制手机触摸区域的触摸点,也就是要发送给被控机的触摸点(这个点必须要经过映射后发送),右侧手机屏幕上的两个数字表示屏幕被触摸的xy坐标。由于涉及小数点和取整运算,实际发现发送的坐标最多有不超过2个像素的误差。
触摸定位准确度测试2
上面的描述中提到,控制机的坐标要经过映射才能发送给被控机,之所以要这么做是因为操作系统的相关驱动都要根据TouchScreen的报告描述符中定义的触摸范围值和实际的屏幕尺寸进行映射。那么问题来了,难道不能一比一地映射吗,我发送(10,10)系统就定位到(10,10)?答案是不能。操作系统提供的驱动要能适配所有符合协议的不同厂家不同尺寸的触摸屏,不管触摸屏的分辨率多大,手指移动到TouchScreen的右下角那么驱动所映射的坐标也要到达桌面的右下角,要达到这样的要求系统必须要将TouchScreen的坐标均匀映射到液晶屏的坐标上。

展望:基于TouchScreen这个基础功能,开发支持手势录制,脚本控制的功能,用于游戏辅助,自动刷视频等场景

相关文章:《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值