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)