【问题标题】:Is it possible to write a driver for the input system in android是否可以在android中为输入系统编写驱动程序
【发布时间】:2011-06-12 22:34:10
【问题描述】:

只有公共 sdk 的应用程序是否可以将“驱动程序”写入输入设备,例如使用新的 3.1 USB API 的 USB 上使用一些模糊的、可能是外来协议的操纵杆?

例如,是否可以为带有 13 个操纵杆和 159 个按钮以及虚拟头部跟踪和汽水分配器的全新 O-Triangle 3.15 控制器实现驱动程序,或者这是否具有等待 android 更新为 O-Triangle 3.15 控制器的新低级驱动程序

【问题讨论】:

    标签: android usb android-3.0-honeycomb


    【解决方案1】:

    看起来您可以使用android.hardware.usb 包中的类来完成此操作:您可以实现一个服务来检测设备的插入/删除并生成适当的InputEvents。不过,不确定是否有任何想要使用该设备的应用程序必须在其 apk 中包含服务,或者您是否可以制作一个单独的包,将必要的事件提供给操作系统输入子系统。

    【讨论】:

    • 是的,我的问题是针对系统范围的实现,而不仅仅是单个应用程序,据我所知,只有键盘应用程序可以生成输入事件,这不太理想,因为您也希望能够输入普通文本。
    • 好吧,您当然可以将您的输入法绑定到 USB 硬件,不是吗?
    • 是的,我可以理解的部分,我想不通的是,如果您可以将这些事件发送到所有监听事件的应用程序而不替换用户选择的文本输入法,我觉得这是相当hackish 和不理想的方式。
    • 好的。 “你可以实现一个服务......”但是关于如何实现的任何线索?
    【解决方案2】:

    我们已经成功地使用以下代码在没有内核驱动程序的情况下写入 USB 设备: http://android.serverbox.ch/?p=370

    我们能够将通用批量数据包写入 USB 端点。我想你可以对其他类型的 USB 设备(HID 等)做同样的事情。请注意,三星 Galaxy Tab 10.1 似乎缺少正确发现 USB 设备所需的组件(截至 3.1 touchwiz 更新)。但是它适用于我们在 Acer A500 上。

    我不知道如何使它成为系统范围的,但我想它可能是。我建议看看 Wiimote 应用程序是如何做到的。我知道您可以下载应用程序,让您将 Wiimote 与手机配对,然后将其用作游戏等的通用控制器。

    另外,我真的很想要一个带有 13 个操纵杆和一个汽水分配器的控制器! ;)

    【讨论】:

    • 据我了解,Wii 控制器应用程序会伪装成键盘来发送合成事件,尽管我没有第一手经验可以说这种或那种方式。
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2012-01-29
    • 2019-10-02
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多