主要实现的任务是对于不同的平板 也就是有的是安装双摄像头(A机型) 有的是安装单摄像头(B机型) 在我们生产的时候,为了简化工作量,使用同一个kernel和系统同时支持A B 两款机型。
在这个任务下我使用到了android的prop的技术。
首先是在Z:\vimcro_newsdk_10-18\out\target\product\vortex\root 目录的下面的init.rc文件里面 添加setprop au.ui.dualcamera 1 这么一句话。
然后全局编译 mm -j 2
下载到平板电脑里面 可以在开发终端是用# getprop 的指令您会发现添加在init.rc里面的setprop的所有状态哦。
比如会答打印出:我的系统里面有很多打印这里只是写出一点,让大家有个了解
[ro.EMPTY_APP_MEM]: [8192]
[au.ui.dualcamera]: [1] :嘿嘿是不是我们的配置在这里面看见了吧
[ril-impl.support]: [0]
我们配置好以后 就可以在camera的Hal的库里面使用 该环境变量在android的系统启动camera加载的时候 读出au.ui.dualcamera 的状态的值就可以知道加载的camera是双的还是单的了哦,于是就可以在HAL里面向framework里面的cameraserver.cpp里面传送是单camera的界面配置还是双camera的配置了。
下面吧我的代码贴出来和大家分享一下。
static CameraInfo sCameraInfo[] = {
{
CAMERA_FACING_FRONT, //camera 1
0,
},
{
CAMERA_FACING_BACK, //camera 0
0, // orientation
}
};
static const char DRIVER_PROP_NAME[] = "au.ui.dualcamera"; // Baiduman 嘿嘿是init.rc文件里面添加的
extern "C" int HAL_getNumberOfCameras()
{
int mSif = open(SIF_DEV, O_RDWR | O_SYNC);
#if 1//wang
char driver_status[20];
//LOGD("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy%s :", __func__);
if (!property_get(DRIVER_PROP_NAME, driver_status, NULL) || strcmp(driver_status, "1") != 0)// 获取init.rc里面的au.ui.dualcamera的状态
{
//LOGE("%s :11111111111111********** %s", __func__,driver_status);
ioctl(mSif, V8CIF_single_camera, 0);
return sizeof(sCameraInfoo) / sizeof(sCameraInfoo[0]); //向framerawork里面上传camera的配置 单camera的配置
}
else
{
//LOGE("%s :2222222222222********* %s", __func__,driver_status);//driver_status = 1 double
ioctl(mSif, V8CIF_double_camera, 0);
return sizeof(sCameraInfo) / sizeof(sCameraInfo[0]); //向framerawork里面上传camera的配置 双camera的配置
}
#else
return sizeof(sCameraInfo) / sizeof(sCameraInfo[0]); //yuanlai
#endif
个人感觉像prop这种技术在android系统里面使用的是很频繁的。。。。。希望能够帮助到各位同仁。。。