From 9b4cfe97b66d17be85f4f879feb5dfbb0b60423a Mon Sep 17 00:00:00 2001 From: Captain Arepa Date: Tue, 21 May 2024 13:28:03 -0400 Subject: [PATCH] camera2 implementation (WIP) --- .../cameraxtestappjava/MainActivity.java | 2 +- .../camera/CustomCamera2.java | 75 +++++++++++++++++++ .../main/res/layout/custom_camera2_view.xml | 2 +- 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java diff --git a/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java b/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java index f9f5bc0..a0010c2 100644 --- a/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java +++ b/app/src/main/java/com/example/cameraxtestappjava/MainActivity.java @@ -165,7 +165,7 @@ public class MainActivity extends AppCompatActivity { mMediaRecorder = new MediaRecorder(); tv = findViewById(R.id.tv); - textureView = binding.c2Camera.texture; + textureView = binding.c2Camera.tvCameraTextureView; textureView.setSurfaceTextureListener(textureListener); takePictureButton = binding.c2Camera.btnTakepicture; diff --git a/app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java b/app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java new file mode 100644 index 0000000..805bc5e --- /dev/null +++ b/app/src/main/java/com/example/cameraxtestappjava/camera/CustomCamera2.java @@ -0,0 +1,75 @@ +package com.example.cameraxtestappjava.camera; + +import android.hardware.camera2.CameraCaptureSession; +import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CameraDevice; +import android.hardware.camera2.CameraManager; +import android.hardware.camera2.CaptureRequest; +import android.media.ImageReader; +import android.media.MediaRecorder; +import android.os.Handler; +import android.os.HandlerThread; +import android.util.Range; +import android.util.Size; +import android.util.SparseIntArray; +import android.view.Surface; +import android.view.TextureView; +import android.widget.ImageButton; +import android.widget.TextView; + +import java.io.File; +import java.util.Comparator; + +public class CustomCamera2 { + private static final String TAG = "AndroidCameraApi"; + private ImageButton takePictureButton; + private TextureView textureView; + private TextView tv; + private static final SparseIntArray ORIENTATIONS = new SparseIntArray(); + + static { + ORIENTATIONS.append(Surface.ROTATION_0, 90); + ORIENTATIONS.append(Surface.ROTATION_90, 0); + ORIENTATIONS.append(Surface.ROTATION_180, 270); + ORIENTATIONS.append(Surface.ROTATION_270, 180); + } + + private static class CompareSizeByArea implements Comparator { + + @Override + public int compare(Size ths, Size rhs) { + return Long.signum((long) ths.getWidth() * ths.getHeight() / + (long) rhs.getWidth() * rhs.getHeight()); + } + } + + private String cameraId; + private String mCameraId; + private String defaultCameraId = "0"; + Range fps = new Range<>(110, 120); + private Range[] availableFpsRange; + private Size mPreviewSize; + private Size mVideoSize; + private int totalRotation; + protected CameraDevice cameraDevice; + + protected String[] cameraIds; + protected CameraManager cameraManager; + protected CameraCharacteristics cameraCharacteristics; + protected CameraCaptureSession cameraCaptureSessions; + protected CaptureRequest captureRequest; + protected CaptureRequest.Builder mCaptureRequestBuilder; + private Size imageDimension; + private ImageReader imageReader; + private boolean isRecording = false; + private File file; + private File fileFolder; + File videoFile; + private static final int REQUEST_CAMERA_PERMISSION = 200; + private boolean mFlashSupported; + private Handler mBackgroundHandler; + private HandlerThread mBackgroundThread; + private MediaRecorder mMediaRecorder; + private TextureView mTextureView; + private CaptureRequest.Builder captureRequestBuilder; +} diff --git a/app/src/main/res/layout/custom_camera2_view.xml b/app/src/main/res/layout/custom_camera2_view.xml index 4ee059b..b2ad009 100644 --- a/app/src/main/res/layout/custom_camera2_view.xml +++ b/app/src/main/res/layout/custom_camera2_view.xml @@ -8,7 +8,7 @@ tools:context=".MainActivity">