我有一个不带内置控制器支持,基于触摸的控件的游戏。我想将它与游戏板一起使用,并获得一些Android编程经验的动手工具。
我想弄清楚我是否可以让我的应用监听控制器事件,并将其转发给我的游戏。
我学习了如何处理控制器事件。然后我发现由于安全原因我无法转发它们-现在出于充分的理由允许以编程方式发送触摸事件。
根据此博客(其SSL证书已过期),有三种注入触摸事件的方法:
我发现的其他方法包括构建自己的平台,因此您可以将应用程序设置为系统应用程序,并使用平台证书对其进行签名,以为其提供所需的权限。
或将另一个应用程序包装在您自己的应用程序中,但是使用Instrumentation发送触摸事件仍然需要root用户。
我还阅读了有关Accessibility API的信息,但看起来它被认为是对该API的滥用,并且将来可能无法实现。
我宁愿不让我的设备扎根,因为许多游戏如果检测到根,就会出现问题。
我本来打算放弃的,但后来发现了类似以下的应用程序:
尽管Android具有安全性,但无论如何,选项2似乎都能做到。怎么样了?
编辑:我下载了章鱼的APK,并看看里面。它包含一个名为libinject.so ...的文件,因此它在发挥作用。我现在有一个新的研究方向,但是如果有人链接到与此相关的资源,我将非常感激。
如何处理控制器操作 [还有 API 16+]
在系统级别,Android 将来自游戏控制器的输入事件代码报告为 Android 键代码和轴值。在您的游戏中,您可以接收这些代码和值并将其转换为特定的游戏内操作。
当玩家将游戏控制器物理连接或无线配对到 Android 设备时,系统会自动将控制器检测为输入设备并开始报告其输入事件。Activity您的游戏可以通过在活动或焦点中实现以下回调方法来接收这些输入事件(您应该为或View实现回调,但不能同时实现两者)。ActivityView
您可以在本文档中找到更多详细信息。
支持跨 Android 版本的控制器 [API 12+]
如果您的游戏支持游戏控制器,则您有责任确保您的游戏在运行不同 Android 版本的设备上对控制器的响应一致。这可以让您的游戏覆盖更广泛的受众,并且您的玩家即使在切换或升级 Android 设备时也可以通过控制器享受无缝的游戏体验。
您可以在本文档中找到更多详细信息。
单点触摸事件
对于您想要控制的单点触摸事件,您可以将AccessibilityService与dispatchGesture结合使用。但我认为这不是您真正想要的。您不想处理控制器Touch本身,而是处理控制器正在使用的参数。这就是为什么我添加了上面两段,以实现您想要的。
我添加此答案的原因
我知道现在有点晚了,但到目前为止,已经有了可以接受的答案。就达到更高的 API 级别而言,了解如何处理这些东西会很有用。干杯:)
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |