diff --git a/app/android/AndroidManifest.xml b/app/android/AndroidManifest.xml
index f0cf4c9..9f5869f 100644
--- a/app/android/AndroidManifest.xml
+++ b/app/android/AndroidManifest.xml
@@ -27,6 +27,7 @@
+
-
+
+
+
+
+
{
+ ViewGroup rootView = (ViewGroup) getWindow().getDecorView().getRootView();
+ makeViewTransparent(rootView);
+ });
+ }
+
+ private void makeViewTransparent(ViewGroup viewGroup) {
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ View child = viewGroup.getChildAt(i);
+ if (child instanceof ViewGroup) {
+ makeViewTransparent((ViewGroup) child);
+ } else {
+ // 找到可能是 Vulkan 渲染层的视图并设置为透明
+ if (child.getBackground() != null) {
+ child.setBackgroundColor(Color.TRANSPARENT);
}
}
- });
+ }
+ }
+
+ private boolean hasCameraPermission() {
+ return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private void requestCameraPermission() {
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.CAMERA},
+ REQUEST_CAMERA_PERMISSION);
+ }
+
+ private static final int REQUEST_CAMERA_PERMISSION = 1001;
+
+ private void startCamera() {
+ ListenableFuture cameraProviderFuture =
+ ProcessCameraProvider.getInstance(this);
+
+ cameraProviderFuture.addListener(() -> {
+ try {
+ cameraProvider = cameraProviderFuture.get();
+
+ // 创建预览用例
+ Preview preview = new Preview.Builder().build();
+
+ // 选择后置摄像头
+ CameraSelector cameraSelector = new CameraSelector.Builder()
+ .requireLensFacing(CameraSelector.LENS_FACING_BACK)
+ .build();
+
+ // 将预览绑定到 PreviewView
+ preview.setSurfaceProvider(previewView.getSurfaceProvider());
+
+ // 绑定到生命周期
+ camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview);
+
+ } catch (ExecutionException | InterruptedException e) {
+ Log.e("MainActivity", "Error starting camera: " + e.getMessage());
+ }
+ }, ContextCompat.getMainExecutor(this));
+ }
+
+ private static final int REQUEST_CODE_PERMISSIONS = 1001;
+ private static final String[] REQUIRED_PERMISSIONS = new String[]{Manifest.permission.CAMERA};
+ private static final String TAG = "MainActivity";
+
+ private boolean allPermissionsGranted() {
+ for (String permission : REQUIRED_PERMISSIONS) {
+ if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == REQUEST_CODE_PERMISSIONS) {
+ if (allPermissionsGranted()) {
+ startCamera();
+ } else {
+ Log.e(TAG, "Permissions not granted by the user.");
+ finish(); // Close the activity if permission is denied
+ }
+ }
}
private void addButtonToLayout() {