公司动态

Android USB OTG 相机:3 步把 UVC 摄像头装进你的 App

📅 2026/8/22 16:43:14
Android USB OTG 相机:3 步把 UVC 摄像头装进你的 App
Android USB OTG 相机3 步把 UVC 摄像头装进你的 App【免费下载链接】Android-USB-OTG-Camera项目地址: https://gitcode.com/gh_mirrors/an/Android-USB-OTG-Camera想象这样一个场景质检工位上一台 USB 相机通过 OTG 线插在 Android 平板上打开 App 就能实时看料口画面还能随手拍一张、录一段视频留档。这就是Android USB OTG 相机AndroidUSBCamera这个开源库想帮你做的事——它基于 UVCCamera 深度封装把检测、连接、预览、拍照、录像这些繁琐的 USB 设备流程压缩成几个简单的 API让任何免驱 UVC 摄像头都能在 Android 5.010.0 设备上直接出画面。无论你是想做工业检测、户外记录还是只是想折腾一个外接摄像头的小工具这个库都能帮你省下大量对接 USB 底层协议的时间。USB OTG 相机 App 完整功能演示拍照、录像、设备识别图 1USB OTG 相机 App 的完整功能界面 快速开始3 步接入 USB OTG 相机第 1 步添加 Gradle 依赖AndroidUSBCamera 托管在 JitPack 上只需在根build.gradle的 repositories 中加入 JitPack 仓库再声明一行依赖即可maven { url https://jitpack.io } dependencies { implementation com.github.jiangdongguo:AndroidUSBCamera:2.3.4 }第 2 步初始化相机助手核心入口是单例助手 UVCCameraHelper.java初始化只有三行mCameraHelper UVCCameraHelper.getInstance(); mCameraHelper.setDefaultPreviewSize(1280, 720); mCameraHelper.initUSBMonitor(this, mUVCCameraView, mDevConnectListener);设置好默认预览尺寸并启动 USB 监听后设备一插进来系统就会自动弹出允许应用使用 USB 设备的授权框无需你手写任何设备枚举逻辑。USB OTG 相机自动检测并弹出权限请求图 2USB 设备接入后自动弹出权限请求第 3 步处理设备连接回调OnMyDevConnectListener有四个回调你真正必须处理的是两个Override public void onAttachDev(UsbDevice device) { mCameraHelper.requestPermission(0); // 接入时请求权限 } Override public void onDettachDev(UsbDevice device) { mCameraHelper.closeCamera(); // 拔出时关闭相机 }其余的onConnectDev/onDisConnectDev可以用来更新 UI 状态。完整可运行的写法直接参考示例工程 USBCameraActivity.java——它还演示了生命周期管理onStart里registerUSB()、onStop里unregisterUSB()、onDestroy里release()照抄即可避免内存泄漏。 能力清单接入后还能做什么拍照相机打开状态下一行调用即可抓拍 JPG 并落盘mCameraHelper.capturePicture(picPath, onCaptureListener);录像startPusher配合RecordParams支持录制 MP4还能选择关闭声音、叠加时间水印回调里可实时拿到 H.264 / AAC 编码流用于推流。录像相关的编码器都在 encoder 模块 下RecordParams params new RecordParams(); params.setRecordPath(videoPath); params.setSupportOverlay(true); // 时间水印仅 armv7 / arm64 mCameraHelper.startPusher(params, onEncodeResultListener);切换分辨率先用getSupportedPreviewSizes()拿到设备支持的全部尺寸再实时切换无需重启预览mCameraHelper.updateResolution(width, height);USB OTG 相机分辨率实时切换演示图 3在 480P、720P、1080P 之间一键切换调节画面参数亮度、对比度都可以实时读写接一个 SeekBar 就能做滑杆调节mCameraHelper.setModelValue(UVCCameraHelper.MODE_BRIGHTNESS, progress);USB OTG 相机亮度与对比度实时调节图 4拖动滑杆实时调节亮度与对比度⚠️ 实战建议3 个常见坑预览黑屏 / 有画面但异常多半是帧格式不匹配。部分 USB 摄像头只支持 YUYV初始化前加一行mCameraHelper.setDefaultFrameFormat(UVCCameraHelper.FRAME_FORMAT_YUYV);再initUSBMonitor。Android 10 上预览失败这是 Android Q SDK 的已知问题把targetSdkVersion降到 27 及以下即可规避。权限声明别漏Manifest 中需要WRITE_EXTERNAL_STORAGE保存照片视频和RECORD_AUDIO录制声音首次插入设备时系统会弹授权框拒绝后设备将无法打开。 写在最后记住三句话接入时请求权限、拔出时关相机、销毁时释放资源。剩下的打开 Android Studio接上你的第一台 USB 相机试试吧。【免费下载链接】Android-USB-OTG-Camera项目地址: https://gitcode.com/gh_mirrors/an/Android-USB-OTG-Camera创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考