在本地模拟USB /蓝牙HID设备以注入事件?

Rol*_*olf 19 android hid touch-event

是否可以模拟连接到Android的USB或蓝牙设备?

我想创建一个能够在本地模拟HID设备的应用程序.我的意思是:该应用程序应该让Android相信USB /蓝牙HID设备已连接.我希望这可以让我的应用程序在全球范围内注入触摸事件.无论如何都要模拟(虚拟)设备?请注意,我并不关心设备,我只想使用内置的HID输入支持.

我知道很多人已经问过触摸事件注入,但这种方法似乎有点不同.我也没有想用这个测试的目的,因此InstrumentationTestCase之类也无济于事.

植入设备可能是一个选项,虽然我也可以设想让我的最终用户手动安装一个专门签名的应用程序(根据/sf/answers/1171595841//sf/answers/1603196591/这有效,但它将是特定于设备的).

我知道:

  1. 在android上模拟一个鼠标输入 - 这个人似乎是在他自己的应用程序中做到这一点,虽然他的问题没有得到解答;)

  2. http://www.pocketmagic.net/2013/01/programmatically-injecting-events-on-android-part-2/#.U58SqfldVHV -需要root.有没有人成功使用过这个?此外,该解决方案似乎再次特定于设备.

  3. 蓝牙+模拟鼠标 - 这不是我想要的.手机本身不应该是HID设备,而是使用(虚拟创建的)设备.同样如下:https: //stackoverflow.com/a/8174973/2923406

请注意,我希望把我的手机到任何种类的HID设备.

Sea*_*est 2

模拟是一个广义的术语。当我创建蓝牙应用程序时,我以两种方式“模拟”蓝牙连接。

方式一:使用串口UART转换器,连接蓝牙模块发射器。

然后您可以使用像CoolTerm这样的终端程序来发送您的数据。

就像这样。在本例中,我编写了一个字符串,以便在与设备成功连接时发送,但是您可以有效地进行无限循环以进行测试,而不需要将您的手机变成 HID 设备。

方法 2(不容易):在服务器/客户端关系模型中使用计算机蓝牙。

这是比较难做到的。您可以做的是将您的 PC/Mac 转换为服务器,将 Android 手机转换为客户端,反之亦然。为此,您需要编写外部代码,这些代码需要在 jvm(java 虚拟机)上单独编译。可以在此处找到执行此操作的过程。如果您使用的是 Linux 计算机,则必须单独下载 Bluez 模块。除了 Ubuntu 之外,我还没有在任何其他操作系统上尝试过这一点,而且要发挥作用是很痛苦的。

希望这有帮助。