Symbian S60 Camera

Symbian S60 Camera引擎
//在S60v2上验证,Nokia系列手机都没有问题

今天没什么事情,写篇S60的Camera的文章给大家参考一下,S60Camera主要是通过操作CCamera来获取Camera的信息并操作Camera来启动关 闭Camera,逻辑上还是有些麻烦的,所以我封装了一个CCamEngine简化了逻辑和调用,CCamEngine是封装了对camera的所有操 作,并提供了简单的易用的接口,方便应用的集成和操作,定义的Camera内部状态:ECamError, ECamOff, ECamInit, ECamReserve, ECamPowerOn, ECamActive, ECamStandby;

主要的接口如下: StopPreview() StartPreview() OpenCam() CloseCam() TakePicture(), CCamEngine继承MCameraObserver,里面代码不是很多,主要是对Camera逻辑上的控制,采用Observer模式,在 Camera变化时候通过Observer来驱动View完成预览、拍摄、缩放等工作;



Camera驱动示意:
//                        Active
//                PowerOn
//        Reserve
//   Off
开启Camera是从off -> Reserve -> PowerOn -> Active,关闭时候正好相反,Error/Init/Standby是属于Engine的状态,代码:
---------------------------------------------------


void CCamEngine::ImageReady(CFbsBitmap* aBitmap, HBufC8* /*aData*/,TInt aError)
{
   // 显示aBitmap图到屏幕上,通过Gc可以完成预览图的显示,aBitmap是属于系统的,不需要手工删除;
// 在设备播放一段时间后可能图像会出现跳动,一般是由于来不及处理,可以选择抛弃几个frame,使得ViewFinder看起来比较平滑;
//
}

一般S60的Camera还带了一些特殊的功能,如:
iCamera->SetDigitalZoomFactorL(aValue); //数字缩放
iCamera->SetFlashL(aValue); //闪光灯

iCamera->SetBrightnessL(aValue); //明亮度
iCamera->SetContrastL(aValue); //明亮度
iCamera->SetExposureL(aValue); //曝光
iCamera->SetWhiteBalanceL(aValue); //白平衡
iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor16M, aValue); //在capture前必须设置静态图大小和格式

这 些特性并非所有的camera驱动都支持的,在使用时候必须检查硬件信息,CameraInfo里面可以看到是否支持该特性,如做 DigitalZoom,就必须对不同的设备做不同的缩放等级,不同的机型一般都不相同的,如果需要兼容不同的设备还需要根据设备的id来做不同的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值