新增 AspectRatioCameraConfig 和 ResolutionCameraConfig

This commit is contained in:
Jenly
2021-08-03 18:49:04 +08:00
parent 685cf35d46
commit 85a3cba5ce
7 changed files with 141 additions and 24 deletions

View File

@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.DisplayMetrics;
import android.util.Size;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
@@ -16,6 +15,7 @@ import com.google.zxing.ResultPoint;
import com.google.zxing.common.detector.MathUtils;
import com.king.zxing.analyze.Analyzer;
import com.king.zxing.analyze.MultiFormatAnalyzer;
import com.king.zxing.config.CameraConfig;
import com.king.zxing.manager.AmbientLightManager;
import com.king.zxing.manager.BeepManager;
import com.king.zxing.util.LogUtils;
@@ -98,7 +98,6 @@ public class DefaultCameraScan extends CameraScan {
private boolean isClickTap;
private float mDownX;
private float mDownY;
private Size mTargetSize;
public DefaultCameraScan(@NonNull FragmentActivity activity,@NonNull PreviewView previewView){
this.mFragmentActivity = activity;
@@ -155,23 +154,6 @@ public class DefaultCameraScan extends CameraScan {
mScreenHeight = displayMetrics.heightPixels;
LogUtils.d(String.format("displayMetrics:%dx%d",mScreenWidth,mScreenHeight));
//因为为了保持流畅性和性能限制在1080p在此前提下尽可能的找到屏幕接近的分辨率
if(mScreenWidth < mScreenHeight){
float ratio = mScreenWidth / (float)mScreenHeight;
if(ratio > 0.7){//一般应用于平板
mTargetSize = new Size(mScreenWidth,mScreenWidth / 3 * 4);
}else{
mTargetSize = new Size(mScreenWidth,mScreenWidth / 9 * 16);
}
}else{
float ratio = mScreenHeight / (float)mScreenWidth;
if(ratio > 0.7){//一般应用于平板
mTargetSize = new Size(mScreenHeight / 3 * 4, mScreenHeight);
}else{
mTargetSize = new Size(mScreenHeight / 9 * 16, mScreenHeight);
}
}
LogUtils.d("targetSize:" + mTargetSize);
mBeepManager = new BeepManager(mContext);
mAmbientLightManager = new AmbientLightManager(mContext);
@@ -250,8 +232,7 @@ public class DefaultCameraScan extends CameraScan {
mCameraProviderFuture.addListener(() -> {
try{
Preview preview = mCameraConfig.options(new Preview.Builder()
.setTargetResolution(mTargetSize));
Preview preview = mCameraConfig.options(new Preview.Builder());
//相机选择器
CameraSelector cameraSelector = mCameraConfig.options(new CameraSelector.Builder());
@@ -260,7 +241,6 @@ public class DefaultCameraScan extends CameraScan {
//图像分析
ImageAnalysis imageAnalysis = mCameraConfig.options(new ImageAnalysis.Builder()
.setTargetResolution(mTargetSize)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST));
imageAnalysis.setAnalyzer(Executors.newSingleThreadExecutor(), image -> {
if(isAnalyze && !isAnalyzeResult && mAnalyzer != null){