在软件中设置鼠标位置

时间:2013-12-10 18:52:20

标签: android android-hardware

我正在使用Android Stick(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来实现上述功能。任何有关这些的帮助都非常有用。

为了防止我需要编写某种驱动程序来使这个东西正常工作,这方面的任何帮助也会有用。

在使用鼠标的同时解决此问题的任何变通方法也可能有用。

2 个答案:

答案 0 :(得分:3)

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

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

  1. 相对运动
  2. 点击操作
  3. 绝对位置(你可能想要这个)
  4. 但是,除非您在root设备上执行此操作,否则不能将其作为普通应用程序执行,或者您可以使用adb shell在后台启动守护程序服务以执行应用程序的事件编写。

答案 1 :(得分:0)

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

现在可以通过Android 8.0+(2017年8月发布)中的pointer capture API来实现。摘要:

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

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

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

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

  2. 否则,注册一个OnCapturedPointerListener

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