我不会说这是不可能做到的,但实际上不可能以一种可以推广到所有 - 甚至很多 - Android手机的方式来实现.如果你偏离了Android API定义的官方路径,那么你几乎就是自己的,这基本上就是一个嵌入式硬件开发项目.
让我们从基础开始:您需要相机子系统的原理图和图像管道中所有内容的数据表.对于您打算支持的每部手机.在某些情况下,您可能会发现一些手机具有或多或少相同的相机子系统(特别是当您谈到在美国销售的略有不同的运营商特定型号时),偶尔您可能会幸运地拥有大量相机您关心的手机和Nexus手机之间的相似性.
这不是一件小事.据我所知,甚至NEXUS手机都没有发布官方原理图.流行的手机(尤其是三星和HTC)通常会发布拆解,所以每个人都知道广泛的细节(相机模块,视频编码芯片组等),但是仍然有很多猜测涉及到如何将它们连接在一起.
别搞错了 - 这不是随便的黑客领域.如果像I2C,SPI,MMC和iDCT这样的术语对您没有任何意义,那么您可能不会走得太远.如果您从字面上理解CMOS图像传感器是如何串行读取的,以及如何使用Bayer阵列来生成RGB图像,那么您几乎肯定会在脑海中.
这并不意味着你应该放弃并放弃......但它意味着试图在商用Android手机上破解相机可能不是最佳起点.为了完成这样的项目,你需要很多背景知识,而且你真的需要从你控制的硬件平台上获取这些知识并拥有适当的文档.毫无疑问......在"硬"Android软件项目的层次结构中,这个排名非常接近列表的顶部.
我的建议(简化和浓缩了一点):购买Raspberry Pi,并学习如何从GPIO引脚点亮LED.然后学习如何通过74HC595移位寄存器有选择地点亮8个LED.然后在分线板上购买SPI寻址的闪存芯片,并学习如何写入它.在某些时候,从像Sparkfun.com这样的人那里购买带有"串行"(fyi,"serial"!="rs232")接口的视频图像传感器,并学习如何一次读取一帧,并转储原始RGB数据闪光.了解如何使用i2c读取和写入摄像机的控制寄存器.此时,您可能已准备好在Android手机中处理相机以获取单张照片.
如果您决定从Android手机开始,至少现在坚持使用"Nexus"设备,并且在获得原理图,数据表和源代码之前不要购买手机(如果您还没有手机)你拥有的.不要购买手机,以为您可以自己追踪原理图.你不会.至少,除非你是一名研究生,并且拥有一个研究生级别的电子实验室(具有X射线功能),你可以随意使用.这些芯片和模块中的大多数都是微型BGA.你不会用万用表跟踪它们,而我所知道的每个Android相机的大部分低级驱动程序逻辑都隐藏在可加载的内核模块中,而这些模块的源代码不可用.
也就是说,我非常希望看到有人把这样的项目拉下来.:-)
| 归档时间: |
|
| 查看次数: |
3070 次 |
| 最近记录: |