UVC系列1-Android盒子控制云台摄像头系列
Android作为host端控制云台摄像头整个实现过程中涉及了Android kernel底层UVC部分,Android kernel代码的编译,USB协议,Android JNI方面的知识。
刚开始项目提出这个需求的时候,想到的是通过Android原生的USB API 去控制外接的USB PTZ摄像头,因为大多数的云台摄像头支持pelco-d或是pelco-p协议,而Android提供的接口可以传递byte[]类型的参数过去,设想通过这种方式实现控制。现在回想起来这个方法真是too young to naive。因为Android kernel层是通过UVC(usb video class)协议取控制摄像头PTZ,需要走这一套逻辑才能实现。
由此思路开始转到通过Android UVC来控制摄像头转动,但是google了大大小小的网站没有人做过这个东西,侧面也在一定程度上说明了需求足够操蛋。UVC在Android的kernel层,但是怎么去验证这个东西呢,就想到了有Ubuntu,而Ubuntu上面有一个工具uvcdyctrl 可以输入对应的参数控制摄像头,于是通过这个工具验证了在linux下控制云台转动的可能性。
紧接着要解决的是如何把这个可能性移植到Android上,从前期的实践看,是需要查看kernel层的实现,kernel层的参数是否实现了相对和绝对的控制;如果kernel层实现了,怎么把这个实现传递到app层面,让app可以输入参数控制转动。
现在思路很清晰了,就是打通从kernel到app的通道,实现控制,将app层的控制指令传递到kernel,由kernel将控制字节传递到硬件。
接下来的文章是:
1、探索Android UVC协议;
2、研究UVC控制协议;
3、定制Android kernel UVC部分支持相对和绝对参数;
4、编写Android jni代码实现控制PTZ。
更多相关文章
- Android中AsyncTask异步加载
- Android中AlarmManager的使用
- Android拦截并获取WebView内部POST请求参数
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上
- 如何使用jdb调试android的java程序
- Android(安卓)点击通知栏消息打开activity,并判断app是否运行
- Android(安卓)fragment 传值
- Android软件限制AP的最大连接数
- Android(安卓)ListView 如何 更改字体颜色,字体类型等参数