在android上读取原始鼠标数据

时间:2012-11-08 00:02:17

标签: android usb mouse mouseevent usb-otg

在我的Android应用中,我通过USB-OTG 从 3DConnexion SpaceNavigator中读取值来控制AR.Drone

现在我想用鼠标做同样的事情。但是,Android正在抓取鼠标并显示鼠标光标。当我使用鼠标的供应商和产品ID编写设备过滤器时,我不会像使用SpaceNavigator那样(strangely, both are HID -- I get no cursor with the SpaceNavigator).

有没有办法在没有光标的情况下获取原始鼠标数据?

与Android股票完美搭配。但我也会考虑改变ROM。

1 个答案:

答案 0 :(得分:3)

只要您的应用程序声明鼠标(作为主机时作为USB HID设备),Android应该隐藏光标并且您可以读取原始数据。这应该适用于库存机器人,但您的设备必须支持USB主机模式,并且需要USB OTG线缆才能连接鼠标。

基本程序:

  • 枚举设备
  • 要求获得访问USB设备的权限
  • 声明设备
  • 从HID端点
  • 读取数据包
  • 解析数据包中的X和Y位置,按钮单击和滚动轮旋转

适用于我的示例代码(Android 5.0):

while True:
    # Tell Master this process is ready
    comm.send(None, dest=0, tag=TAGS.READY)
    # Receive ``task`` ([number, gravPot, ndensStars])
    task = comm.recv(source=0, tag=MPI.ANY_TAG, status=stat)
    tag = stat.Get_tag()

    if tag == TAGS.START:
        pid = os.fork()
        if pid:
            # parent waits for child
            os.waitpid(pid)
        else:
            # child does work, sends results and exits
            _gwb = Large_Data_Structure(task)
            data = _gwb.do_heavy_lifting(task)
            comm.send(data, dest=0, tag=TAGS.DONE)
            os._exit()
    elif tag == TAGS.EXIT:
        break

    cycles += 1