From 990e071c65bd394e8d7ccdd08197b9a364d16d40 Mon Sep 17 00:00:00 2001 From: Captain Arepa Date: Tue, 21 May 2024 16:01:49 -0400 Subject: [PATCH] camera2 implementation (WIP) --- .../cameraxtestappjava/MainActivity.java | 48 ++++--------------- ...{CustomCamera2.java => SegPassCamera.java} | 22 +++------ 2 files changed, 17 insertions(+), 53 deletions(-) rename app/src/main/java/com/example/cameraxtestappjava/camera/{CustomCamera2.java => SegPassCamera.java} (97%) diff --git a/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java b/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java index d86e305..a143298 100644 --- a/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java +++ b/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java @@ -1,30 +1,10 @@ package com.example.cameraxtestappjava; -import static com.example.cameraxtestappjava.camera.CustomCamera2.REQUEST_CAMERA_PERMISSION; +import static com.example.cameraxtestappjava.camera.SegPassCamera.REQUEST_CAMERA_PERMISSION; -import android.Manifest; -import android.content.Context; import android.content.pm.PackageManager; -import android.graphics.ImageFormat; -import android.graphics.SurfaceTexture; -import android.hardware.camera2.CameraAccessException; -import android.hardware.camera2.CameraCaptureSession; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CameraDevice; -import android.hardware.camera2.CameraManager; -import android.hardware.camera2.CameraMetadata; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.hardware.camera2.params.StreamConfigurationMap; -import android.media.Image; -import android.media.ImageReader; -import android.os.Build; import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import android.os.HandlerThread; import android.util.Log; -import android.util.Size; import android.util.SparseIntArray; import android.view.Surface; import android.view.TextureView; @@ -36,29 +16,15 @@ import androidx.activity.EdgeToEdge; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.app.ActivityCompat; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.example.cameraxtestappjava.camera.CustomCamera; -import com.example.cameraxtestappjava.camera.CustomCamera2; +import com.example.cameraxtestappjava.camera.SegPassCamera; import com.example.cameraxtestappjava.camera.CustomCameraCallback; import com.example.cameraxtestappjava.databinding.ActivityMainBinding; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.ByteBuffer; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - public class MainActivity extends AppCompatActivity { ActivityMainBinding binding; @@ -78,7 +44,7 @@ public class MainActivity extends AppCompatActivity { ORIENTATIONS.append(Surface.ROTATION_270, 180); } - CustomCamera2 mCustomCamera2; + SegPassCamera mCustomCamera2; @Override protected void onCreate(Bundle savedInstanceState) { @@ -113,9 +79,15 @@ public class MainActivity extends AppCompatActivity { // Camera 2 private void setUpCamera2() { + + // Initialize visual elements in host app mTextureView = binding.c2Camera.tvCameraTextureView; mTakePictureButton = binding.c2Camera.btnTakepicture; - mCustomCamera2 = new CustomCamera2(this, mTextureView); + + // Initialized CustomCamera2 in host app + mCustomCamera2 = new SegPassCamera(this, mTextureView); + mCustomCamera2.init(); // Do not skip this!!! + mTakePictureButton.setOnClickListener(v -> mCustomCamera2.takePicture(new CustomCameraCallback() { @Override public void onPictureTakenSuccess(String message) { diff --git a/app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java b/app/src/main/java/com/example/cameraxtestappjava/camera/SegPassCamera.java similarity index 97% rename from app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java rename to app/src/main/java/com/example/cameraxtestappjava/camera/SegPassCamera.java index 37b5f4f..28ca742 100644 --- a/app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java +++ b/app/src/main/java/com/example/cameraxtestappjava/camera/SegPassCamera.java @@ -31,7 +31,6 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -43,7 +42,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -public class CustomCamera2 { +public class SegPassCamera { private static final String TAG = "CustomCamera2"; Context mContext; @@ -84,31 +83,22 @@ public class CustomCamera2 { } } - public CustomCamera2(Context context, TextureView textureView) { + public SegPassCamera(Context context, TextureView textureView) { mContext = context; mTextureView = textureView; } - public CustomCamera2(AppCompatActivity activity, TextureView textureView) { + public SegPassCamera(AppCompatActivity activity, TextureView textureView) { mActivity = activity; mTextureView = textureView; } - private void setUpCamera2() { + public void init() { createFolder(); setUpListeners(); - /*tv = findViewById(R.id.tv); - - - mTakePictureButton = binding.c2Camera.btnTakepicture; - - mTakePictureButton.setOnClickListener(v -> { - takePicture(); - });*/ - } - public void setUpListeners() { + private void setUpListeners() { mTextureView.setSurfaceTextureListener(textureListener); } @@ -257,6 +247,8 @@ public class CustomCamera2 { mCameraManager.openCamera(mCameraId, mStateCallback, mBackgroundHandler); } catch (CameraAccessException e) { e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); } }