多亏了stackoverflow看到的一篇帖子其中有幾句关键的话,然后顺藤摸瓜解决了问题
讨论的前提是你的USB摄像头是UVC兼容的(如今大部分摄像头兼容)
默认android打开uvc摄像头不提供访问外部攝像头的API,所以你要考虑写一个内核到android打开uvc摄像头应用层通信的中间件
当你给设备接入了USB摄像头,首先要检查一下几点:
3)如果/dev没有创建設备,
你需要写一个固件(UVC)跟硬件通信拔掉摄像头再执行,video0消失再连接,video0出现这说明mk802支持我的摄像头!
到此,已经明确下一步我需要寫一个android打开uvc摄像头应用层到内核通信的中间件,我对这个也不了解于是在google狂搜“android打开uvc摄像头 usb camera”
终于功夫不负有心,找到了一个android打开uvc摄像頭 usb摄像头的应用例子
从中找了一个SimpleWebCamra.apk下载了赶紧装上,发现不能运行logcat报一个错,提示没有权限访问video0设备
这是为什么?我的系统已经root了吖!难道我的apk也要获得root权限又在网上查资料,试了半天还是不行。
后来忽然灵机一动android打开uvc摄像头也是linux呀,我能不能把video0设备设置成没權限问了问朋友,执行了一个命令:
再次运行apk终于跑起来了!(后来经测试设置成 chmod 0666 /dev/vidoe0 也可以,但是我也不懂0666的含义。)
但是问题又来叻程序进去以后,报错
于是想必须要活的SimpleWebCamea的源码了!经过苦苦搜索,很幸运的找到一个simplewebcam的源码:
下载一看里边包含ndk的c源码和android打开uvc摄潒头源码,于是按照ndk教程安装了cygwin
苦于c代码看不太懂,错误提示VIDIOC_DQBUF 调用参数错误却无从下手。
于是看了n篇教程偶然发现说打开摄像头设備的open方法的一些参数,然后试着把c代码中的一些参数去掉:
再次build运行,天啊终于出来了高兴死了!