2 weixin 32811953 weixin_32811953 于 2016.02.24 05:34 提问

Android通过otg外接摄像头

最近在研究Android怎么样通过otg外接摄像头实现点击手机相机直接调用外部摄像头,请问如何实现?需要掌握哪些方面的知识和技能?

3个回答

ouchao0727
ouchao0727   2016.02.24 09:15
已采纳

Android本身没有提供USB摄像头的接口,但底层Linux是可以识别UVC摄像头的,不过需要在内核编译的时候打开这这个支持,你可以使用一个USB摄像头插上然后用ADB调试查看/dev目录下有没有video0或video1随着USB摄像头的插拔而出现消失,如果有的话那么你需要写一个JNI的接口给上层调用,如果没有的话那么就比较麻烦了,你得从驱动层到JNI然后写到上层,其中驱动层中的是V4L2框架你得懂,底层驱动会写,还要会用C/C++写JNI接口,都是比较有难度的

ouchao0727
ouchao0727 我不了解你那边具体的情况,我能保证的是驱动层会在/dev下创建一个设备节点/dev/videoX(X代表一个数字),而JNI中有一个系统调用fd = open("/dev/videoX", O_RDWR)必须有这个权限才能打开这个设备节点
一年多之前 回复
qq254612999
qq254612999 回复xiao哦草: 这个驱动层不必获得root权限对不对?因为我下载的UsbWebCamera并不需要root就可以打开。然而我自己找的程序全部是通过root-chmod666的方式才可以打开的。
一年多之前 回复
ouchao0727
ouchao0727 呵呵 我不是大神呢 这个东西会很难的 你要从Linux驱动开始学起的话 你还是先搞清楚你现在所拥有的硬件是否支持USB摄像头吧 如果支持的话会简单很多
接近 2 年之前 回复
weixin_32811953
weixin_32811953 请问如何学会写这些东西呢,有没有好的网站或者书可以参考来提高?谢谢大神
接近 2 年之前 回复
vnking
vnking   2016.11.27 13:52

我目前也在做类似的题目,我的小米机器在插拔usb摄像头时,会出现/dev/video4的设备,权限是rw--rw---之类,我在JNI层用open打开它会出错报权限问题。如果我用JAVA在UsbManager去查找这个USB设备,是能找到它,通过给USB授权后,能open,但是bulkTranslate会返回-1

kylukuan123
kylukuan123   2016.11.30 20:07

我也碰到了 同样的问题,USB授权之后,你JNI能open?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!