内核中驱动我想硬件商会提供一个实现了基础功能的代码包(纯 C),你可能需要做些移植或 debug 工作。但像 HTC 的连拍功能,很可能是 HTC 开发人员自己实现的,而不是高通(至今未在高通内核源 Codeaurora 中见到过连拍补丁的提交)。相机资源在 Android 内核中是在主板驱动(board-xxx.c)中定义的,比如一些属性,io 地址,内存映射段(这是内核预分配的一段连续地址,为了提高载入速度,比如高通的 PMEM_ADSP),指定驱动模块名等。这些定义会在相机驱动加载时用到。因为你比较熟悉 C 语言,如果有 Linux 内核调试经验的话,相信理解这部分内容并不太困难。
而 HAL 驱动库通常也都有蓝本可参考,需要实现的接口与细节在 Google Android 开发者文档中都有说明呢,基本上是将 frameworks 中关于相机头文件中定义的函数一一实现;这部分一般是 C++ 完成的。HAL 与内核相机模块通讯用得最多的是 ioctl 直接申请资源,所以你可能需要找份内核驱动开发文档学习下如何添加自己的 ioctl 函数。关于相机启动时 HAL 中函数的调用关系,网上可找到很多分析博文。
我所知道的大概就这些,细节没法说也没能力说清楚了。
java 并且必须掌握 JNI。
了解android应用编程。
会 C ++ ,看android 源码中 就是在 c C++ Java 三种语言中穿梭。
知道 android 系统的启动流程。
会HAL(硬件抽象层)。
会Linux系统知识,及Linux-kernel、Linux驱动开发。因为HAL还是调用Linux驱动的。
android是在Linux-kernel上再建立了一个类似文件系统的系统。
1.镜头:
镜头类似于人眼,是决定拍照质量的关键性因素。专业镜头对图像的锐度控制是否合理、色彩还原是否真实、畸变是否严重等等因素起着至关重要的作用。
对于手机拍照用户来说,对于镜头的选择不像单反相机那样可控可换,除了在购买手机前,稍作选择外,对于正在使用的手机,用户在拍照时可以不用考虑这个因素是否可以向单反那样更换,因为怎么做都只能是徒劳。
2.传感器种类、尺寸和像素高低:
相机传感器分为CCD和CMOS两大类。整体来说,CCD的成像质量较好,当然价格也比较贵;CMOS器件产生的图像质量相比CCD来说稍低一些,但其最大特点是非常省电,所以,在同时考虑价格的情况下,目前主流的手机都使用的是CMOS的传感器。
传感器尺寸和像素高低对照片质量产生很大影响。数码相机中,传感器尺寸越大、像素越高,其中记录的信息就越多,颗粒便越细腻,放大效果也越好;反之,传感器尺寸越小、像素越低,记录的信息也就越少,颗粒也越粗糙,放大效果也便越差。
对于手机的传感器,在极其有限的空间中,没有条件选择太大尺寸的传感器。对于像素这一很多用户最看重的因素,其实并非是决定成像质量的唯一因素,在同种、同尺寸传感器的情况下,像素数越高,手机的拍照质量越好才更有说服力,单一的注重像素并不十分理性。当然,对于这几个因素,用户也只能被动的任从厂商安排,不能再拍照时为了拍的更好,对其进行调节。
3.照片格式:
相比最常用的JPEG格式,RAW格式拍摄的照片可调节性更好,质量也更高,不过缺点是RAW的照片更占空间。目前已经有些手机支持RAW拍摄,不过,在空间不多的情况下,如果不是要求太高的话,还是选择JPEG比较合适。
4.光线:
拍照看光线,简单来说,在光线充足的情况下,手机拍出的照片质量要比光线不足的情况下好很多,但这也不尽然,有时候在光线过强的情况下,有些手机会产生比较严重的偏色现象,所以也是视情况而定。
另外,光线的方向也对手机拍出的照片质量有很大影响,在顺光情况下,质量要强于逆光拍摄的照片。所以,一般用户拍照前最好要先确认一下光线的方向,尽量在顺光的情况下拍摄照片。对于这点是很多用户用手机实际拍照时很容易忽略的。
拍照前后有那些技巧?
对于手机本身的硬件方面,手机用户不能随意做出更改决定,所以在拍照时可以不用考虑。但是对于其他方面,想要用手机拍出非常满意的照片,用户还是有很大的发挥空间的。手机拍照也需要技巧:
1.拍摄前:
光线是成像好坏的重要因素,手机摄像头和照相机一样,对光线的要求也很高,因此为了拍摄一张好的作品一定要选择良好的光线条件,尽量避免在逆光的情况下拍摄,除了通过外部条件来满足光源外,有的手机还可以通过手机内置的辅助功能来对调节:
a.调节亮度(或曝光度)。手机不能靠调节光圈快门来对拍后的图片亮度进行预设,但是目前很多手机都可以调节亮度(或曝光度),在光线稍暗的情况下可以选择此项。
b.开启闪光灯。对于配备LED闪光灯的手机,在暗光条件下,打开闪光灯能够起到不错的补光作用,但是其有效范围较短,更适合近距离使用。
c.开启夜间模式。大多数手机用户都知道在晚上拍照时打开夜间模式会比较合适,另外,在白天的光线不足时,开启夜间模式也能对提高亮度起到不错的效果。不过这里需要注意的是,其取景时间稍长,所以为了避免重影,尽量拿稳手机。
d.调节感光度。有些时候,光线弱到一定程度,而又禁止使用闪光灯,比如在展览馆中,这个时候,如果手机中有设置ISO感光度的选项(一般分为高、中、低3项),可以将其调高,能够在一定程度上提高亮度。不过在光线充足的情况下最好将其设置低一些,以免对照片质量造成过多影响。
2.拍照时:
无论是拍人还是拍景,选择合适的角度都会大大提升自己对照片的满意度。比如很多女孩喜欢自拍,需要提醒的是,自拍时要尽量将手机离自己远一些,以免由于手机的广角造成人会“发胖”,网上有很多拿手机拍摄镜子中的自己的全身还是比较明智的;另外,如果是拍摄上半身以头部为主的话,最好是将手机镜头放在与视线平行稍靠上的位置,这样一来可以显得眼睛稍大,而来可以神奇“瘦脸”。
构图。
由于手机属于定焦广角镜头,其拍摄有特殊性。基本的构图与一般相机是一样的,一般需要把事物放在黄金分割线(6:4)的位置。
但是由于其是广角的镜头,拍摄景物有其优势,其取景范围比较大。但是拍摄近景,尤其是花草和人物的时候,其镜头会变形,使事物扭曲。
因此,在拍摄人物的时候,需要离开一定的距离,必要时可以使用数码变焦。光影。
由于手机的感光元件、镜头、闪光灯和快门的原因,其色彩还原度在不同情况下不一样。手机在拍摄外景 光线比较充足的时候效果不错,好的手机可以接近一般的数码相机的水平。
当然受限于镜头,其细节还是要略输一筹。在拍摄室内的时候,由于感光元件小,光线不足,其图像一般会比较灰暗,还原度较差。
其快门为自动调节,因此不能进行长时间曝光。解决的方法是采用闪光灯。
但是手机闪光灯还是比较弱,其有效范围也就2-3米。因此在进行室内活动拍摄的时候(酒吧表演等)表现力不佳。
同样由于快门不能被设定,手机对运动物体很难捕捉。妥协的方法是镜头追着事物,使其在取景框中相对静止。
辅助软件(apps)。一般手机会自带一改善照片的功能。
以iphone为例,可以进行自动改善照片、裁切、去除红眼和HDR(把三张不同曝光度的照片叠在一起,使亮处和暗处的细节都可以展现出来)的功能。手机的辅助软件则五花八门。
具体可以分为以下几类:1.相框类:MashiMaro Photos (iphone),Frames & FX for Photos (iphone)。2.LOMO效果:模仿LOMO相机的漏光多镜头等效果 Leme Camera (iphone); VIDA (android)3.漫画效果: Paper Camera (android & iphone)4.拼贴画效果: ToonPaint (android & iphone)5.全景拍摄:可以在摄像模式扫一圈景物,然后软件自动拼接成全景图片(最多可以接近360度)例如:Video2Pano (android & iphone)自拍。
自拍是手机最大的一个类别。因此在这里重点阐述一下。
很多人喜欢采用斜45度自上而下的拍摄方式,优点是:1.灯光也是自上而下,重点突出脸部。2.与平着拍相比,斜45度可以很容易涵盖全身或者半身,而不需要把手机离自己很远。
3.可以显得下巴轮廓较小,有锥子脸的感觉。也有人喜欢在浴室对着镜子平着自拍。
好处是:1.可以方便取景。2.有私房照的暧昧感觉。
坏处是:浴室需要收拾干净。5手机拍摄附件。
在手机外接一个镜头或者脚架,增强其功能。Kogeto Dot for iphone 全景摄像功能,可通过软件还原出全景的视频。
80刀OlloClip换超广角或鱼眼或微距镜头for iphone6X光学镜头。这种镜头国内有很多便宜的选择。
并有适合多种手机的适配器。
在你打开camera的时候,你会传入一个cameraId:
public static Camera open (int cameraId)
当你设置了cameraId,打开camera之后,可以通过下面的代码获取camera信息:
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
//前置摄像头
} else { // 后置摄像头
}
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.290秒