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): setParametersERROR: 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

}

相关推荐
jack186896 小时前
安卓手机忘记锁屏密码怎么办? 无需密码也可解锁
android·智能手机
应用市场9 小时前
不用一张图片的像素小游戏:小人是字符串,房间是矩形,平衡靠两千个假玩家
android·kotlin·游戏开发
stevenzqzq10 小时前
android 对渠道的理解
android
QEasycloud10 小时前
BOM接口抛转失败钉钉通知策略实战教程:MySQL异常日志到钉钉消息的端到端配置
android·mysql·钉钉
AIsoft_868910 小时前
医患交流内容如何做好记录?
android·iphone
蒸鱼Yuzheng10 小时前
Android Native 崩溃证据链:Tombstone、Build ID 与 Trace 如何联合归因
android·ndk·tombstone·调试符号·崩溃分析
事圆则缓11 小时前
Kotlin 变量与函数:把页面状态和行为写成清楚的契约
android·开发语言·kotlin
hunterandroid11 小时前
MVVM 迁移到 MVI:复杂页面状态如何收敛
android
妖星11 小时前
Android 开机动画定制:从 bootanimation.zip 到源码编译
android
临期冰淇淋12 小时前
MTK平台 安卓16 GMS报错修改
android·java·前端