FAQ05047:在进入camera或者在camera中切换场景时,出现“很抱歉,相机已停止运行”

描述:进入camera或者切换场景时,出现"很抱歉,相机已停止运行",LOG中出现:

11-15 09:37:57.222: E/MtkCam/MCamHw(102): Error count of area!(parseCamAreas){#1952:mediatek/source/external/camera/mt6575/CamAdapter/mHal/mHalCamParameters.cpp}

11-15 09:37:57.222: E/MtkCam/MCamHw(102): [setParameters]ERROR: metering areas = (0,0,0,0,0) (setParameters){#1402:mediatek/source/external/camera/mt6575/CamAdapter/mHal/mHalCamParameters.cpp}

分析:YUV sensor在进入camera或者在camera中切换场景模式时,会从底层driver中query支持touch AE/AF区域的个数(1表示支持touch AE/AF,0表示不支持),若在sensor driver中没有返回该值的时候,则默认返回一个随机值,当该随机值为1时,认为支持touch AE/AF,当随机值不为1时,认为不支持touch AE/AF。而当连续两次query回来的值不一样时,就会报出上述错误,进而导致相机停止运行,因此该问题会概率性复现,且复现概率并不高。

解决:根据如上分析,只需在sensor driver里面固定返回是否支持touch AE/AF,该问题就得到解决。

具体方法:

在sensor driver的XXXXXFeatureControl 加入以下两个case:

case SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS:

XXXXXGetAFMaxNumFocusAreas(pFeatureReturnPara32);

*pFeatureParaLen=4;

break;

case SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS:

XXXXXGetAFMaxNumMeteringAreas(pFeatureReturnPara32);

*pFeatureParaLen=4;

break;

并实现这两个函数:

void XXXXXGetAFMaxNumFocusAreas(UINT32 *pFeatureReturnPara32)

{

*pFeatureReturnPara32=0; //若支持,则填1

}

Void XXXXXGetAFMaxNumMeteringAreas(UINT32 *pFeatureReturnPara32)

{

*pFeatureReturnPara32=0; //若支持,则填1

}

相关推荐
安卓理事人2 小时前
安卓图表MpAndroidChart使用
android
奋斗的小鹰4 小时前
在已有Android工程中添加Flutter模块
android·flutter
介一安全4 小时前
【Frida Android】实战篇13:企业常用非对称加密场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
lin62534225 小时前
Android右滑解锁UI,带背景流动渐变动画效果
android·ui
鹏多多7 小时前
Flutter输入框TextField的属性与实战用法全面解析+示例
android·前端·flutter
2501_916008898 小时前
iOS 开发者工具全景图,构建从编码、调试到性能诊断的多层级工程化工具体系
android·ios·小程序·https·uni-app·iphone·webview
Winter_Sun灬8 小时前
CentOS 7 编译安卓 arm64-v8a 版 OpenSSL 动态库(.so)
android·linux·centos
柯南二号8 小时前
【大前端】【Android】用 Python 脚本模拟点击 Android APP —— 全面技术指南
android·前端·python
龚礼鹏8 小时前
图像显示框架六——SurfaceFlinger的初始化以及任务调度(基于Android 15源码分析)
android
壮哥_icon8 小时前
Android 使用 PackageInstaller 实现静默安装,并通过 BroadcastReceiver 自动重启应用
android·gitee·android-studio·android系统