5

我正在寻找一种方法来让兼容 UVC 的 USB 摄像头在默认情况下没有这些 UVC 摄像头的内核驱动程序的其他 Android 设备上工作。

我不想根植这些设备,也不想更改它们的图像/内核,因为普通客户以后应该能够在每台平板电脑上使用相机并且没有特殊要求(应用程序除外)。

您是否认为有可能在 Android 3.1 及更高版本 (http://developer.android.com/guide/topics/usb/host.html) 中使用 Android 的 USB 类与未知设备建立原始连接,或者我只能将它与内核支持和识别的设备一起使用?

如果可能的话,我会对使用 Java/NDK 集成 UVC 驱动程序以从中获取视频流感兴趣。至少这是我粗略的想法。

你认为这可能吗?

4

3 回答 3

3

如果您在那个根深蒂固的部分上妥协,那绝对是可能的。我做了同样的项目并最终成功了。在 uvc 代码中,您将打开 /dev/video1 或 video0 节点,默认情况下,大多数设备上没有用户权限。

简单地说,

这取决于两件事:

1) 连接 USB 摄像头时,是否正在创建摄像头节点。它应该在主编号为 81 的 /dev 目录中(表示 V4l2 设备)

2)对于该设备节点,您是否拥有用户权限。

这是您将面临的两个障碍。

首先的解决方案不在我们手中,因为它取决于供应商。例如,Acer 选项卡是创建的,但在三星 Galaxy 中却没有。原因是内核中缺少对 V4L2 或 UVC 模块的支持。

第二个的解决方案是,如果您是 root 用户,您可以更改节点的权限。

这是一个相当大的项目,如果你从头开始,应该需要一些时间。祝你好运

于 2012-05-07T04:55:04.117 回答
1

是的,最新版本的 Android 用户空间中支持 USB 主机的目的是允许您与没有内核驱动程序的 USB 设备通信。从概念上讲,它听起来有点类似于 libusb 的想法,尽管它不是 libusb。

http://developer.android.com/guide/topics/usb/host.html

在我看来(纯粹的、未经证实的推测)可能存在这样的情况,即对设备的部分内核驱动程序支持可能会干扰尝试以这种方式直接从用户空间与其对话。

于 2012-05-07T05:20:55.647 回答
0

我正在寻找一种方法来让兼容 UVC 的 USB 摄像头在默认情况下没有这些 UVC 摄像头的内核驱动程序的其他 Android 设备上工作。

这取决于内核,并且编译的驱动程序也会考虑硬件是否支持它。

从它的声音来看 - 它类似于 USB On-The-Go 机制......现在,如果你说你不希望设备被植根,不幸的是,对于 USB OTG 机制,你确实需要 root 才能利用它以及 ramdisk 内 /etc 目录中的脚本机制来处理插件事件。

于 2012-05-06T17:08:54.277 回答