|
@@ -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());
|
|
|
}
|
|
|
|