Sfoglia il codice sorgente

update: 调试相机预览接口完成

huwanxiao 11 mesi fa
parent
commit
f383aa84b9
1 ha cambiato i file con 11 aggiunte e 33 eliminazioni
  1. 11 33
      app/src/main/java/com/naz/sdkdemo/MainActivity.java

+ 11 - 33
app/src/main/java/com/naz/sdkdemo/MainActivity.java

@@ -13,7 +13,6 @@ import android.content.pm.PackageManager;
 import android.location.LocationManager;
 import android.os.Build;
 import android.os.Environment;
-import android.os.Handler;
 import android.provider.MediaStore;
 import android.text.TextUtils;
 import android.util.Log;
@@ -63,7 +62,6 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -399,34 +397,11 @@ public class MainActivity extends BaseActivity {
         }
 
         @JavascriptInterface
-        public void openCamera() {
+        public void openCamera(boolean isShowPreview) {
             Log.e(TAG, "openCamera");
             // 打开摄像头
-            toOpenCamera();
-            // 打开摄像头预览
-            // openCameraPreview();
+            toOpenCamera(isShowPreview);
         }
-
-        @JavascriptInterface
-        public void openCameraPreview() {
-            if (cameraProviderFuture != null) {
-                // 确保摄像头打开后再显示预览组件
-                previewView.setVisibility(View.VISIBLE);
-            } else {
-                XToast.showToast("打开摄像头预览失败");
-            }
-        }
-
-        @JavascriptInterface
-        public void closeCameraPreview() {
-            if (cameraProviderFuture != null) {
-                // 确保摄像头打开后再显示预览组件
-                previewView.setVisibility(View.GONE);
-            } else {
-                XToast.showToast("关闭摄像头预览失败");
-            }
-        }
-
         @JavascriptInterface
         public void closeCamera() {
             Log.e(TAG, "closeCamera");
@@ -496,14 +471,14 @@ public class MainActivity extends BaseActivity {
         }
     }
 
-    private void toOpenCamera() {
+    private void toOpenCamera(boolean isShowPreview) {
         // 请求 CameraProvider
         cameraProviderFuture = ProcessCameraProvider.getInstance(this);
         //检查 CameraProvider 可用性,验证它能否在视图创建后成功初始化
         cameraProviderFuture.addListener(() -> {
             try {
                 ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
-                bindPreview(cameraProvider);
+                bindPreview(cameraProvider, isShowPreview);
             } catch (Exception e) {
                 // No errors need to be handled for this Future.
                 // This should never be reached.
@@ -749,7 +724,7 @@ public class MainActivity extends BaseActivity {
     }
 
     //选择相机并绑定生命周期和用例
-    private void bindPreview(@NonNull ProcessCameraProvider cp) {
+    private void bindPreview(@NonNull ProcessCameraProvider cp, boolean isShowPreview) {
         this.cameraProvider=cp;
         Preview preview = new Preview.Builder()
                 .build();
@@ -758,17 +733,20 @@ public class MainActivity extends BaseActivity {
         CameraSelector cameraSelector = new CameraSelector.Builder()
                 .requireLensFacing(CameraSelector.LENS_FACING_BACK)//CameraSelector.LENS_FACING_EXTERNAL
                 .build();
-// 创建一个 ImageCapture 对象,用于拍摄照片。
+        // 创建一个 ImageCapture 对象,用于拍摄照片。
         // 设置拍照模式为最小化延迟模式,这意味着拍照时将尽可能快地捕获图像。
         imageCapture = new ImageCapture.Builder()
                 .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
                     // 设置JPEG的质量为85%
                 .setJpegQuality(85)
                 .build();
-        preview.setSurfaceProvider(previewView.getSurfaceProvider());
+        // 打开摄像头的同时是否显示预览界面
+        if(isShowPreview) {
+           preview.setSurfaceProvider(previewView.getSurfaceProvider());
+           previewView.setVisibility(View.VISIBLE);
+        }
         cameraProvider.unbindAll();//解绑组件
         cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, imageCapture);
-
 //        preview.setSurfaceProvider(previewView.getSurfaceProvider());
     }