安卓调取USB摄像头

因公司最近的需求需要实现这样的一个功能,在网上翻阅了很多大佬的博客,最终找到了这篇https://blog.****.net/andrexpert/article/details/78324181

按照大佬博客里面的步骤一步一步的添加依赖最后编译时报错Unable to resolve dependency for ':[email protected]/compileClasspath': Could not resolve com.serenegiant:common:1.5.20.,这个问题困扰了我很久,百度查看好多的博客方式都测试了一遍还是无法下载,最后用了一个很呆板的方法

第一部:

https://github.com/saki4510t/libcommon这个库整体下载下来然后直接将库里面的common安卓调取USB摄像头导入到自己的项目中(注意里面的repository这个文件也要整体拷到自己项目中)。

第二步:

下载大佬的https://github.com/jiangdongguo/AndroidUSBCamera项目到本地,将项目中的安卓调取USB摄像头

这两个库导入到自己项目中,值得注意的是导入后还是会出来Unable to resolve dependency for ':[email protected]/compileClasspath': Could not resolve com.serenegiant:common:1.5.20.这个错误,此时需要将libusbcamera中的依赖替换掉安卓调取USB摄像头

同时要在项目中加入

安卓调取USB摄像头

此时项目应该是报错的,因为common这个库是更新过的新库有好多的方法都已经替换掉了,而且有些类也已经删除了但是问题不大,找到老版本把对应类拷进去就ok了,值得注意的是IAspectRatioView这个类替换成了IScaledView,代码中直接换掉就好了。

第三步:

修改项目下的build.gradle文件加入依赖安卓调取USB摄像头

和这些配置,其实说白了就是拷贝下载项目中配置而已。

到此为止我的项目是可以的,不过在运行时发现usb摄像头有时调的起来有时报错掉不起来,最终发现的原因是公司购买的大型平板有两个usb口是占用的,而在程序中我直接写死了mCameraHelper.requestPermission(0),调取第一个摄像头,运气好可能每次都能调到,运气不好可能每次都调取不到(我是真的蠢),最后打印了下设备根据pid和vid增加了下判断就好了。

common的库我已经上传了,但是在审核中,我设置的是0积分下载,后期看能不能审核通过吧,另外说一下UVCCameraTextureView这个类中的GLDrawer2D要引用es2包下的也就是com.serenegiant.glutils.es2.GLDrawer2D;这个路径

安卓调取USB摄像头

第一次写博客,分享下自己踩过的坑,可能不是很详细,望见谅。