9

我正在使用 Android 棒(http://www.geekbuying.com/item/Uhost-2-Dual-Core-TV-Box-Mini-PC-Android-4-0-4-RK3066-Cortex-A9-1 -6GHZ-1GB-RAM-4G-ROM-with-Bluetooth-WIFI-Skype-XBMC---Black-312467.html)用于构建应用程序。该应用程序使用附加的 USB 网络摄像头来实现其某些功能。此外,我将鼠标连接到此设备,用户可以使用它来浏览应用程序中的各个页面。鼠标的左/右移动导致导航到上一页/下一页。

虽然鼠标适用于 Android 设备,但我还需要在每次与用户交互后将鼠标的位置重置为中心。是否可以使用 Android 中的软件设置鼠标位置?我View.OnGenericMotionListener用来捕捉鼠标移动。

目前,我还需要执行一次鼠标主按钮单击以使鼠标在应用程序中成为焦点。我想通过在软件中生成主鼠标按钮单击来消除此要求,或者通过其他方式将应用程序带入软件中。

我一直无法找到任何 API 来使上述内容正常工作。对这些的任何帮助都会非常有用。

以防万一我需要编写某种驱动程序来让这个东西工作,这方面的任何帮助也会很有用。

解决此问题的任何解决方法,在仍然使用鼠标的同时,也可能很有用。

4

2 回答 2

3

鼠标事件由系统框架管理。您无法在 Java 端控制它。

在 adb shell 上,您可以打开 /dev/input/uevent 设备来编写鼠标事件,包括

  1. 相对运动
  2. 点击动作
  3. 绝对位置(你可能想要这个)

但是,您不能将其作为普通应用程序执行,除非您在有根设备上执行此操作,或者您可以使用 adb shell 在后台启动守护程序服务来为您的应用程序执行事件写入。

于 2013-12-14T06:06:02.517 回答
0

我还需要在每次与用户交互后将鼠标的位置重置为中心。

这现在可以通过Android 8.0+(2017 年 8 月发布)中的指针捕获 API实现。概括:

要请求捕获指针,请在视图上调用requestPointerCapture()方法。

一旦捕获指针的请求成功,Android 就会调用onPointerCaptureChange(true)并开始传递鼠标事件。

您的焦点视图可以通过执行以下任务之一来处理事件:

  1. 如果您使用的是自定义视图,请覆盖onCapturedPointerEvent(MotionEvent)

  2. 否则,注册一个OnCapturedPointerListener

应用中的视图可以通过调用releasePointerCapture()来释放指针捕获。

于 2020-11-17T21:12:02.557 回答