android2.2平台上支持多camera,Android2.2平台上支持多camera(四)

三、Camera HAL层支持多Camera

1、CameraHardwareInterface.h文件

Frameworks/base/include/camera/CameraHardwareInterface.h是Camera HAL层对上的接口文件。由于它的存在,上层可以不关心下层的实现,直接调用相应接口去做自己的事情。这对硬件的移植非常有利。

在这个文件中,我添加了下面三个接口:

/**

* The functions need to be provided by the camera HAL.

*

* If getNumberOfCameras() returns N, the valid cameraId for getCameraInfo()

* and openCameraHardware() is 0 to N-1.

*/

extern "C" int HAL_getNumberOfCameras();

extern "C" void HAL_getCameraInfo(int cameraId, struct CameraInfo* cameraInfo);

extern "C" int HAL_setCameraId(int cameraId);

对这三个接口的实现,就是硬件平台移植工作者需要做的事情了,这里只做简单的介绍。

2、XXCameraHardwareInterface.cpp文件

XXCameraHardwareInterface.cpp是硬件移植工作者根据所用硬件平台对CameraHardwareInterface.h的实现。就上述三个接口,我们可以做如下的实现。

首先定义CameraInfo类型的结构体数组,用来存储硬件平台所支持的Camera的信息。这里只表示支持两个Camera,前面后面各一个。其具体定义如下:

static CameraInfo sCameraInfo[] = {

{

CAMERA_FACING_BACK,

90,/* orientation */

},

{

CAMERA_FACING_FRONT,

90,/* orientation */

}

};

接下来实现那三个接口函数,具体实现如下:

extern "C" int HAL_getNumberOfCameras()

{

return sizeof(sCameraInfo) / sizeof(sCameraInfo[0]);

}

extern "C" void HAL_getCameraInfo(int cameraId, struct CameraInfo* cameraInfo)

{

memcpy(cameraInfo, &sCameraInfo[cameraId], sizeof(CameraInfo));

}

extern "C" int HAL_setCameraId(int cameraId)

{

//设置该Camera为当前所用Camera

return NO_ERROR;

}

四、总结

上述文字,就Android2.2下如何支持多Camera问题,从最上层application层到最下层Camera HAL,从流程上做了一个简单的描述。希望对刚接触Android平台下Camera的朋友能有所帮助。如果有其他问题,可以联系我。

Revision History

修订历史记录

Version

版本

Date

日期

Author

作者

Brief Description

变更简要

0.0.1

2011-03-05

Wangxiaozhe

QQ:1226062415

Init draft.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值