高斯模糊场景:手机相机不同于工业相机以及车载相机,手机相机的模式切换往往会伴随着预览分辨率的改变,而分辨率的切换伴随手机App->Framework->HAL->Drivel一层层的下发上传,所造成的时间延迟已经带来了不可忽略的视觉冲击,为了缓解这种冲击,引入高斯模糊对手机切换分辨率场景进行处理,提高用户体验舒适度。
应用层处理高斯模糊:
1.处理时机:肯定是越早越好,放到CameraActivity的Resume阶段,保证了每一次切换都可以调到高斯模糊的showPreviewAnim(0)方法。
@Override
protected void onResumeTasks() {
super.onResumeTasks();
PictureQuality.enterCameraMode();
mCameraAppUI.showPreviewAnim(0);
mCameraAppUI.removeTopSurface();
CameraSysTrace.onEventSystrace("CameraActivity.onResumeTasks", false, true);
}
//高斯模糊的处理,getPreviewBlurDrawable拿到最后的预览Bitmap
public void showPreviewAnim(int duration) {
if (mSwitchAnim == null || mSwitchAnim.getVisibility() == View.VISIBLE) {
return;
}
if (!mPause) {
getPreviewBlurDrawable();
}
if (mLastBitmap == null) {
mLastBitmap = mDefaultBitmap;
}
//RectF rect = new RectF(0, 0, 720, 1280);
RectF rect = mPreviewManager.getPreviewArea();
if (!isCameraSwitch) {
mSwitchAnim.setVisibility(View.VISIBLE);