android8.1 startPreview时显示预览画面慢问题解决

在相机开发过程中,开启HDR,然后按home键,再次进入相机,startPreview后,显示预览画面比没开hdr要慢些。一下是打印日志:

android8.1 startPreview时显示预览画面慢问题解决_第1张图片

android8.1 startPreview时显示预览画面慢问题解决_第2张图片

android8.1 startPreview时显示预览画面慢问题解决_第3张图片

android8.1 startPreview时显示预览画面慢问题解决_第4张图片

从日志分析,startpRreview后有三次setParameters然后会调用STREAM-ON。预览要完全绘制上去需要STREAM-ON调用完成才会绘制到Surface画布上:(startPreview流程分析(一)可知调用了setParameters才会不停的调STREAM-ON

android8.1 startPreview时显示预览画面慢问题解决_第5张图片

根据以上结论,只需要应用startPreview的时候减少setParameters的调用次数即可解决开启预览慢的问题。SnapdragonCamera中打开HDR后会setParameters,去掉此设置即可优化startPreview执行时间。之前有想过在hal层加接口,在判断STREAM-ON调完,smEvtProcRoutine cmd为1,stateMachine的m_state为2时判断预览界面已显示,即使这些条件都具备有时候还是没有显示预览画面(相差几十毫秒),所以通过这些条件判断camera数据绘制上去了会有一点点时间差。即使去掉部分setParameter,从打开应用到STREAM-ON调用完成也有600ms左右的时间,解决第一次进入相机快速拍照,黑屏状态也能拍问题只能优化startPreview和setParameter的执行时间(这个目前来说不现实,camera流程需要设置参数等),或者在onShutterButtonClick的位置加个快速点击判断。

你可能感兴趣的:(android)