You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android CameraX中使用USB摄像头替代内置前后摄像头

CameraX接入USB摄像头操作方案

前置依赖确认

  • 首先确认你的Android设备系统原生支持UVC协议,绝大多数Android 10及以上的官方系统都默认支持,无需额外安装驱动
  • 确保项目引入的CameraX核心依赖版本不低于1.1.0,示例依赖配置如下:
dependencies {
    implementation "androidx.camera:camera-core:1.3.0"
    implementation "androidx.camera:camera-camera2:1.3.0"
    // 其他CameraX相关依赖保持原有配置即可
}

核心实现步骤

默认的CameraSelector.LENS_FACING_BACK/FRONT仅适配内置摄像头,你可以通过自定义CameraFilter筛选外接USB摄像头:

  1. 自定义筛选规则过滤出外接UVC摄像头
    Android 9及以上系统外接的UVC摄像头,其摄像头属性LENS_FACING会被标记为LENS_FACING_EXTERNAL,可以通过这个特征筛选:
val usbCameraFilter = CameraFilter { availableCameraInfos ->
    availableCameraInfos.filter { cameraInfo ->
        val camera2Info = cameraInfo as Camera2CameraInfo
        val lensFacing = camera2Info.getCameraCharacteristic(CameraCharacteristics.LENS_FACING)
        lensFacing == CameraCharacteristics.LENS_FACING_EXTERNAL
    }
}

如果你使用的定制ROM没有正确标记外接摄像头属性,可以额外通过摄像头设备名称包含UVC/usb等关键词做二次筛选

  1. 构建USB摄像头专用的CameraSelector
val usbCameraSelector = CameraSelector.Builder()
    .addCameraFilter(usbCameraFilter)
    .build()
  1. 绑定用例
    后续绑定Preview、ImageAnalysis等用例的逻辑完全不变,直接替换原来的前后置CameraSelector为上面构建的usbCameraSelector即可,原有ML-kit人脸检测逻辑不需要做任何修改。

注意事项

  • 除了常规的CAMERA权限外,部分设备需要额外动态申请USB设备访问权限,否则无法读取USB摄像头数据
  • 如果你的设备系统不支持原生UVC协议,可以引入第三方libuvc库读取USB摄像头帧数据,转换成ImageProxy后直接传入ImageAnalysis的分析管道即可。

内容的提问来源于stack exchange,提问作者Sejpalsinh Jadeja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:08