Nougat Camera API 中的 USB 网络摄像头支持

Posted

技术标签:

【中文标题】Nougat Camera API 中的 USB 网络摄像头支持【英文标题】:USB webcam support in Nougat Camera API 【发布时间】:2019-02-18 01:36:02 【问题描述】:

我正在按照以下说明为 Raspberry Pi 3 构建 Nougat AOSP 映像:https://github.com/tab-pi/platform_manifest。我有一个 UVC-compatible USB 网络摄像头 (Logitech C525),我想通过 android Camera API 访问它。

到目前为止,网络摄像头在 UsbManager.getDeviceList() 中可见,但 Camera.getNumberOfCameras() 返回 0。

我已经定制了内核,以便在插入网络摄像头时出现具有适当权限的/dev/video0

$ adb shell ls -l /dev/video0
crw-rw---- 1 system camera 81,   0 2018-09-20 10:16 /dev/video0

我尝试针对我的 AOSP 树构建以下 HAL,但都失败了:

https://github.com/jollen/libv4l2-android:

fatal error: 'ui/CameraHardwareInterface.h' file not found

https://github.com/antmicro/android-camera-hal:

error: use of undeclared identifier 'kMaxStride'

no member named 'I422ToABGRRow_NEON' in namespace 'libyuv'

https://github.com/aosp-mirror/platform_hardware_libhardware/tree/master/modules/camera/3_4

ninja: error: 'out/target/product/rpi3/obj/STATIC_LIBRARIES/libgtest_prod_intermediates/export_includes', needed by 'out/target/product/rpi3/obj/SHARED_LIBRARIES/camera.v4l2_intermediates/import_includes', missing and no known rule to make it

简而言之,如何通过树莓派上的 Android Camera API 访问 USB 摄像头?

【问题讨论】:

这似乎取决于您使用的 Android 版本。对于带有 Tremble 的版本,官方文档中有一个指南:source.android.com/devices/camera/external-usb-cameras。对于 Tremble 之前的版本,您可以在此处找到基于 V4L2 的 HAL 实现:github.com/aosp-mirror/platform_hardware_libhardware/tree/… @manuel 由于Android版本是Nougat,我认为Treble不可用,对吧? 对。奥利奥是第一个与颤抖一起出现的。您是否尝试过第二个链接?这个应该适用于牛轧糖。 您是否启用了 V4L2?您是否看到 /dev/video0 并且权限是否足够? github.com/openxc/android-webcam#usb-webcam-support 【参考方案1】:

您可以尝试检查位于 /device/fsl/ 的 init.rc 文件。并设置 back_camera_name uvc 。在启动时,它会查找指定的默认摄像头,并且当提到的摄像头丢失时,它无法初始化摄像头驱动程序。我在 technexion imx6 板上遇到了同样的问题。您还可以找到一个特定于电路板的文件,在 technexion 的情况下是 init.i.MX6DL.rc,它指定了 back_camera 参数。

【讨论】:

【参考方案2】:

我公司的团队能够将 USB 摄像头支持从 Android 9 向后移植到 Android 8,但这并不容易,需要更改至少五个 git 存储库以及数千行代码在需要时移动和调整。将 USB 摄像头支持反向移植到 Android 7 听起来更加困难。

为什么不在您的 Raspberry Pi 上安装 Android 9?

或许可以试试:

https://github.com/brobwind/pie-device-brobwind-rpi3

https://konstakang.com/devices/rpi3/LineageOS16.0/

【讨论】:

以上是关于Nougat Camera API 中的 USB 网络摄像头支持的主要内容,如果未能解决你的问题,请参考以下文章

API 级别 24 中的前台服务 - Android 7.0 Nougat

每次“Camera camera = Camera.open();”时,Android都会抛出错误叫做

有人用arm开发板用UVC驱动的USB camera采集到640*480的视频过吗?

GoogleServices API 级别更改早于 Nougat(API 级别 24)

Android Nougat 设备在 Eclipse 中显示未知目标

Android API 25 (7.1.1) Nougat (Android.jar子包整理)