Android External USB Cameras

The Android platform supports the use of plug-and-play USB cameras (that is, webcams) using the standard Android Camera2 API and the camera HIDL interface. Webcams generally support USB video class (UVC) drivers and on Linux, the standard Video4Linux (V4L) driver is used to control UVC cameras.

Google 在 Android P 上提供了对 usb camera 设备的支持,官方叫法是 External USB Cameras ,提供了完整 HALv3 实现并接入到 CameraProviderManager;可以让任何三方相机应用轻松调用到外接 USB 摄像头功能,而且使用方法跟内置相机几无差别,都是透过 Android Camera API2 调用。

https://source.android.com/devices/camera/external-usb-cameras

实现

1.  首先确保手机系统支持 USB 主机模式 android.hardware.usb.host, 一个简单的办法是连接 usb 外设,然后安装运行USBEnumerator 这个 android demo app,看是否能列出连接的设备。

备注
USBEnumerator 获取方式:
Android Studio -> Import an Android code sample -> 搜索 USB -> 编译安装

 还必须启用对 UVC 设备的内核支持。您可以通过将以下内容添加到相应的内核 deconfig 文件来启用该支持。

+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_MEDIA_USB_SUPPORT=y
  • 将外接摄像头配置文件和外接摄像头库添加到 device.mk

    +PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-impl
    +PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-external-service
    
    +PRODUCT_COPY_FILES += \
    +device/manufacturerX/productY/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml
    
  • 将外接摄像头提供程序名称添加到设备 Treble HAL 清单。

    <hal format="hidl">
       <name>android.hardware.camera.provider</name>
       <transport arch="32+64">passthrough</transport>
       <impl level="generic"></impl>
       <version>2.4</version>
       <interface>
           <name>ICameraProvider</name>
           <instance>legacy/0</instance>
    +       <instance>external/0</instance>
       </interface>
    </hal>
    
  • (可选)如果设备在 Treble 直通模式下运行,请更新 sepolicy,以便 cameraserver 可以访问 UVC 摄像头。

    +# for external camera
    +allow cameraserver device:dir r_dir_perms;
    +allow cameraserver video_device:dir r_dir_perms;
    +allow cameraserver video_device:chr_file rw_file_perms;

使用外接 usb camera

Camera2Basic demo app

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值