android - 如何在 Android 上为 USB 传感器使用 Linux C++ 驱动程序?

标签 android c usb linux-device-driver

我目前正在开发一个 Android 项目,我必须从一个名为 Temper 的 USB 温度计收集数据,该温度计将直接连接到平板电脑。

此设备有 Linux 驱动程序,用 C 编写,我想将它们用于我的 Android 应用程序。

你知道如何将这些驱动程序集成到我的 apk 或其他地方吗?

或者是否可以只使用 android.hardware.usb 包 (Android 3.0+),从而制作我自己的“驱动程序”?

提前致谢。

最佳答案

选项 a) 您只编译内核模块并使用特定的设备节点。这将需要为您的设备生根并为特定设备的特定内核编译特定的内核模块(丑陋!)

选项 b) 你使用 NDK 围绕 Linux 驱动程序编写一个包装器,让包装器成为 Android USB 主机接口(interface) (Java) 和 Linux 驱动程序 (C) 之间的中间人,协调所有事件并推送周围的数据。

我开始为 usb-dvb 设备驱动程序进行选项 b) 的工作,这是一项令人难以置信的工作量。我希望你的驱动程序没有那么复杂。

如果您的驱动程序很容易(只有几个文件,而不是 10k+ 行低级代码甚至汇编程序)转换为 Java,请继续使用 选项 c) 用 Ja​​va 重写 C 代码。因此,您不需要 C 中的包装器,您可以跳过 NDK 部分,这会为您省去很多麻烦和噩梦。

关于android - 如何在 Android 上为 USB 传感器使用 Linux C++ 驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414272/

相关文章:

java - Android:FloatingActionButton 单击事件不起作用

android - 如何将文本放在 CollapsingToolbarLayout 和 Toolbar 的中心?

c - struct中 "typedef"是什么意思

macos - 从 Docker 容器访问托管在 OS X 上的 USB 网络摄像头

c++ - 如何 "usb to tty"?

c - Linux设备描述符读取/64,错误18

java - 如何在 Android 中使用改造在单个 POST 方法中发布文本数据、单个图像和多个图像?

android - Upi 超链接没有被调用 url

c - 这段代码的循环行为是什么?

c - 如何将 posix_spawn 标准输出重定向到/dev/null