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将安卓手机模拟成鼠标和键盘》

触摸屏协议是指设备之间用于传输触摸数据的标准和规范。它定义了如何将手指或其他触控工具的操作转换成数字信号,并通过特定的通信接口传递给处理单元。 常见的触摸屏通讯协议有: 1. **I2C (Inter-Integrated Circuit)**: - 这是一种简单、双向二线制同步串行总线,通常适用于短距离通信。 - 触摸控制器利用 I2C 接口向主处理器发送坐标信息和其他状态报告。 2. **SPI (Serial Peripheral Interface)**: - SPI 协议提供了一种全双工的数据交换机制,速度比 I2C 更快,在某些高性能应用场景下更受欢迎。 - 它采用四条线路来进行通信:MOSI(主机到从机)、MISO(从机到主机)、SCK(时钟)及 SS/CS(选择信号),可以支持更高的带宽需求。 3. **USB**: - 对于一些外接式的触摸屏幕设备来说,它们可能会直接使用 USB 接口连接电脑等终端产品。 - USB 标准不仅限定了物理连接形式,还规定了一系列软件层面的消息格式和服务功能集,方便开发者快速集成新的硬件特性。 4. **HID over I2C/SPI** - HID(Human Interface Device)是一类通用输入输出设备的人机交互标准,如键盘鼠标;当应用于触摸屏时,则指明了这类特殊人机界面装置的工作模式。 - 结合底层硬件接口(I2C 或者 SPI), HID 能够简化操作系统对新类型外围设备的支持过程。 每个制造商也可能有自己的专有协议,不过大多数都会遵循上述提到的一个或多个开放标准。了解这些协议对于设计兼容性强的应用程序以及调试触摸感应系统非常重要。
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值