欢迎光临
我们一直在努力

Android怎么实现外接USB摄像头

这篇文章主要讲解了“Android怎么实现外接USB摄像头”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现外接USB摄像头”吧!

实现

系统必须支持 android.hardware.usb.host

/system/etc/permissions下需要添加host的声明
<feature name=“android.hardware.usb.host” />

此外,还必须启用Kernel的 UVC 设备内核。

+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_MEDIA_USB_SUPPORT=y

要在相应的设备细分版本中启用外接摄像头提供程序,以便添加必要的 SELinux 权限、外接摄像头配置以及外接摄像头提供程序依赖项,请完成以下步骤:

  • 将外接摄像头配置文件和外接摄像头库添加到 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;

external_camera_config.xml的示例

<ExternalCamera>
   <Provider>   <ignore> <!-- Internal video devices to be ignored by external camera HAL -->   <id>0</id>           <!-- No leading/trailing spaces -->   <id>1</id> 
       </ignore>
   </Provider>
   <!-- See ExternalCameraUtils.cpp for default values of Device configurations below-->
   <Device>   <!-- Max JPEG buffer size in bytes-->   <MaxJpegBufferSize  bytes="8388608"/>  <!-- 8MB (> 2594x1944 YUV420) -->   <!-- Size of v4l2 buffer queue when streaming >= 30fps -->   <!-- Larger value: more request can be cached pipeline (less janky) -->   <!-- Smaller value: use less memory -->   <NumVideoBuffers  count="4"/>   <!-- Size of v4l2 buffer queue when streaming < 30fps -->   <NumStillBuffers  count="2"/>   <!-- List of maximum fps for various output sizes -->   <!-- Any image size smaller than the size listed in Limit row will report
       fps (as minimum frame duration) up to the fpsBound value. -->   <FpsList>   <!-- width/height must be increasing, fpsBound must be decreasing-->   <Limit  width="640" height="480" fpsBound="30.0" />   <Limit  width="1280" height="720" fpsBound="30.0" />   <Limit  width="1920" height="1080" fpsBound="30.0" />   <!-- image size larger than the last entry will not be supported-->   </FpsList>
   </Device></ExternalCamera>

您可以通过修改 external_camera_config.xml 文件来自定义外接摄像头提供程序。具体而言,客户可以自定义以下参数:

  • 内部摄像头的排除视频节点

  • 支持的图片大小和帧速率上限

  • Inflight 缓冲区数量(在卡顿与内存之间进行权衡)

除了这些参数之外,您还可以添加自己的参数或开发自己的配置。

感谢各位的阅读,以上就是“Android怎么实现外接USB摄像头”的内容了,经过本文的学习后,相信大家对Android怎么实现外接USB摄像头这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云搜网,小编将为大家推送更多相关知识点的文章,欢迎关注!

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。