打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android usb camera设备添加
最近要在我们的某Android设备上添加USB Camera,之前没有神马经验。加上以前做过这个的同事很忙,也不好相处,问了十句话才给我回复一句话这样子的情况,我很郁闷,就把添加的过程全部写出来

本菜鸟也是刚接触Android的开发。所以写的尽量简单明了。、

其实Camera的开发各个书上或者博客上都有写,但是没有写具体如何做。笨鸟我也晃了几天没什么进展。
以下摘抄自我桌上的一本<Android多媒体应用实战开发实战详解> 王石磊等编著:
Android的Camera系统包括了Camera驱动程序层、Camera硬件抽象层、AudioService、Camera本地库、Camera的Java框架类和Java应用层对Camera系统的调用。
图我就不贴了,网上到处都是。

我当时要做的工作就是  需求:

在我们的Android平台上 插上一个USB Camera设备(UVC),系统能够使用(拍照)。

挺简单的功能,各个手机都支持拍照,可是我是菜鸟啊,我不会。

根据上面那本书的描述,我们就一步步的来:

1.硬件驱动

因为USB camera设备驱动都会在linux系统中集成,所以只需要重新配置linux kernel使其支持uvc设备
linux目录
make menuconfig->
Device Drivers  --->
<*> Multimedia support  --->
[*]   Video capture adapters  --->
[*]   V4L USB devices  --->
<M>   USB Video Class (UVC)   
[*]     UVC input events device support
选中最后两个模块就好了。
重新编译kernel。载入我们的设备

然后需要手动加载驱动:
insmod /system/lib/modules/current/kernel/drivers/media/video/uvc/uvcvideo.ko

就会出现/dev/video0 设备

ps:我遇到一个问题,在ll /dev/video0 时候,video0设备是0600属性。
在HAL层open这个设备时候permission deny。不知道为什么,而且在HAL层使用chmod函数也会出错。
但是通过串口可以改变设备权限 chmod 0666 /dev/video0,这样open没有问题

2.硬件抽象层

可以参考:
Android_src_code\development\tools\emulator\system\camera中的camera HAL实现

这个原始的东东编译出来会到/system/lib/hw/下生成一个camera.goldfish.so,我们修改后,生成自己设备的so.

camera.vendor.so,我当时是adb 到我们的设备把goldfish删掉了,这个push进去才生效的。


因为我们这边在IceCream上实现过了,在JellyBean下就直接用了我们的项目没有做任何修改,这方面我也没有多看。


3.AudioService、Camera本地库、Camera的Java框架类和Java应用层对Camera系统的调用

这部分Android都做好了,所以实际上我也没做什么。

直接把驱动和HAL层实现,就可以用android自带的camera apk拍照了。


完结:

很简单的功能,完成起来也算顺利,因为有一点前人的经验。也许真完全自己做起来也要一个月。

本菜鸟开始学习Android开发了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Android4.2 Camera子系统
ubuntu12.04+fuerte 下跑通lsd
Ubuntu下ADB调试Android找不到设备的解决方法
Ubuntu 开启 Android 的 USB 调试模式
android从应用到驱动之
Android 5.0 Camera系统源码分析:CameraService启动流程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服