拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Android USB OTG 外接 UVC 摄像头实战:3 步跑通 1080P 相机采集

Android USB OTG 外接 UVC 摄像头实战3 步跑通 1080P 相机采集【免费下载链接】Android-USB-OTG-Camera项目地址: https://gitcode.com/gh_mirrors/an/Android-USB-OTG-CameraAndroidUSBCamera 把 Android USB OTG 外接 UVC 摄像头的采集流程压缩成几个 API插 OTG 线即自动检测、连接、出画面。工业质检台、网课直播这类场景基本直接可用。兼容 Android 5.0 至 10.0摄像头需为 UVC 免驱设备。 OTG 相机能做什么5 个核心能力即插即用检测→ USBMonitor 后台监听热插拔接入回调里申请权限即接管不用手动枚举 UsbDeviceJPG 拍照→ capturePicture 传入保存路径回调直接返回文件位置质检取证、留档场景一步到位MP4 录像→ startPusher 配合 RecordParamsH.264 AAC 双通道可关声音、可按时长切割只要裸流时回调里按 type 分发 H.264 与 AAC 数据参数调节→ setModelValue 改亮度、对比度预览实时生效分辨率切换→ updateResolution 支持 480P / 720P / 1080P 及以上预览与录像共用一套参数 从依赖到预览3 步集成 OTG 相机前置检查项目要求硬件OTG 转接线且手机固件层面支持 OTG摄像头UVC 免驱摄像头即插即用的常见 USB 摄像头基本都符合开发环境Android StudiominSdk 21权限WRITE_EXTERNAL_STORAGE存图存视频、RECORD_AUDIO录设备麦克风添加依赖库走 JitPack 按需打包版本号即依赖坐标不需要拉源码自己编allprojects { repositories { maven { url https://jitpack.io } } } dependencies { implementation com.github.jiangdongguo:AndroidUSBCamera:2.3.4 }初始化与预览核心就 3 行注意 setDefaultPreviewSize 必须在 initUSBMonitor 之前调用顺序反了会抛 IllegalStateExceptionmCameraHelper UVCCameraHelper.getInstance(); mCameraHelper.setDefaultPreviewSize(1280, 720); // 默认预览 720P mCameraHelper.initUSBMonitor(this, mUVCCameraView, mDevConnectListener);这一步注册了 USB 事件监听并创建相机 Handler。还有个容易漏的边界预览视图必须实现 CameraViewInterface.Callback在 onSurfaceCreated 里调 startPreview、onSurfaceDestroy 里调 stopPreview否则切页面回来预览会挂掉。 按场景调用UVC 设备检测、亮度调节、分辨率切换UVC 设备检测与权限 API场景用户把摄像头插上手机系统弹权限框同意后自动出画面中途拔走再插回也不能崩。检测、连接、断开全走 OnMyDevConnectListener 回调Override public void onAttachDev(UsbDevice device) { mCameraHelper.requestPermission(0); // 设备接入主动申请 USB 权限 } Override public void onDettachDev(UsbDevice device) { mCameraHelper.closeCamera(); // 拔线即释放避免下次接入状态错乱 }技巧权限被拒后系统短时间内不会重复弹框所以 onAttachDev 里必须每次都主动调 requestPermission别指望系统的默认允许复选框替你兜底。亮度调节setModelValue 的边界场景产线灯光一上午变三次画面过曝欠曝需要实时补偿。一行 APImCameraHelper.setModelValue(UVCCameraHelper.MODE_BRIGHTNESS, 80);对比度把常量换成 MODE_CONTRAST 同理。注意亮度、对比度能不能调由摄像头硬件决定不是库的问题。先用 checkSupportFlag 确认设备支持再显示对应滑条getModelValue 返回 0 也别急着怀疑自己写错了——先查设备是否暴露了该参数避免给用户一个调了没反应的 UI。分辨率切换updateResolution 的代价场景日常预览用 1280×720 保流畅用户点录像时升到 1920×1080。一行 APImCameraHelper.updateResolution(1920, 1080);切换不是无缝的内部会 release 再重建 Handler画面黑一下再恢复所以别在录像过程中切分辨率。另外各设备支持的档位不一样硬编码 1080P 有翻车风险稳妥做法是先 getSupportedPreviewSizes() 枚举一遍把实际列表喂给 UI。 哪些团队真的在用它质检台替代工业相机。产线原来一台工业相机加配套采集卡报价不小换成百元级 USB 摄像头加安卓平板后AndroidUSBCamera 承担全部采集与编码录像直接走 startPusher 的 H.264/AAC 通道。关键配置是 RecordParams 打开 setSupportOverlay 打时间水印注意 overlay 只支持 armeabi-v7a 和 arm64-v8a。网课与直播固定机位。会议室装固定摄像头后1080P 免驱 UVC 摄像头接 OTG 线就能当移动监看机用。startPusher 录 MP4 时保留设备麦克风RECORD_AUDIO 权限别忘RecordParams.setVoiceClose(false) 即保留环境音不用额外接音频线。DIY 便携设备。OTG 线加一颗小 UVC 摄像头就是便携内窥镜、宠物监控这类小硬件的前端。minSdk 21 意味着存量安卓机绝大多数直接能跑不用为老设备单独做采集层适配。⚠️ 集成时容易踩的 3 个坑 源码入口连上了但预览黑屏 → 设备不支持 MJPEG →部分 UVC 摄像头只支持 YUYV在 initUSBMonitor 之前调 setDefaultFrameFormat(UVCCameraHelper.FRAME_FORMAT_YUYV) 换帧格式两种格式各试一轮基本能通。完全检测不到设备 → 多数是 OTG 线或手机不支持 OTG →先换线验证普通数据线不一定支持 OTG排除硬件后读外存根目录 UsbCamera/failed-device.txt 里的枚举日志再排查。Android 10 下预览时好时坏 → Android Q SDK 的 USB 权限 bug →把 targetSdk 压到 27 以下即可项目自带 demo 的配置就是 minSdk 21 target 27。想改行为时直接进源码两个入口封装层 UVCCameraHelper.java权限、开闭、调参、录像全在这一个类里API 边界一目了然底层 UVCCamera.java 与 encoder/UVC 协议交互和 H.264/AAC 编码实现帧格式问题大概率出在前者兼容性一句话带过Android 5.0API 21以上 UVC 免驱摄像头即可跑通overlay 时间水印仅限 arm 架构。跑下来最大的感受是USB 权限、设备枚举、MJPEG 帧解析这些最容易劝退的脏活都被压进了 UVCCameraHelper 的几个方法里你只需要关心业务层的调用时机。建议先在你自己的真机上把依赖加好插一根 OTG 线确认 logcat 里能看到 UVC 设备枚举、720P 预览稳定出帧。集成中遇到黑屏或枚举失败优先对照 failed-device.txt 和源码里的帧格式分支带上设备 VID/PID 直接提 Issue 会更快。【免费下载链接】Android-USB-OTG-Camera项目地址: https://gitcode.com/gh_mirrors/an/Android-USB-OTG-Camera创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门