其他分享
首页 > 其他分享> > [Android8.0/9.0/10]Camera:外接 USB 摄像头

[Android8.0/9.0/10]Camera:外接 USB 摄像头

作者:互联网

概述

Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口。网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用标准的 Video4Linux (V4L) 驱动程序控制 UVC 摄像头。

USB 相机 HAL 进程是外接摄像头提供程序的一部分,该提供程序会监听 USB 设备可用性,并相应地枚举外接摄像头设备。该进程具有与内置相机 HAL 进程类似的权限和 SE 策略。直接与 USB 设备通信的第三方网络相机应用访问 UVC 设备时所需的相机权限与所有常规相机应用所需的权限相同。

实现

系统必须支持 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 权限、外接摄像头配置以及外接摄像头提供程序依赖项,请完成以下步骤:

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 文件来自定义外接摄像头提供程序。具体而言,客户可以自定义以下参数:

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

标签:10,外接,Android8.0,camera,Camera,external,UVC,摄像头,USB
来源: https://blog.csdn.net/weixin_39966398/article/details/110641601