diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e348435..ed32b5b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,9 @@ + diff --git a/app/src/main/java/com/example/greenwatch/MainActivity.java b/app/src/main/java/com/example/greenwatch/MainActivity.java index 683f40c..2eeff07 100644 --- a/app/src/main/java/com/example/greenwatch/MainActivity.java +++ b/app/src/main/java/com/example/greenwatch/MainActivity.java @@ -27,6 +27,7 @@ public class MainActivity extends AppCompatActivity { private Button audiodetectionAndAccelerometerButton; private Button videodetectionAndAccelerometerButton; private Button connectionButton; + private Button prewview_kamera; private MainActivityViewModel mMainActivityViewModel; @Override @@ -40,6 +41,7 @@ public class MainActivity extends AppCompatActivity { audiodetectionAndAccelerometerButton = (Button) findViewById(R.id.audiodetectionAndAccelerometerButton); videodetectionAndAccelerometerButton = (Button) findViewById(R.id.videodetectionAndAccelerometerButton); connectionButton = (Button) findViewById(R.id.connectionButton); + prewview_kamera = (Button) findViewById(R.id.preview_kamera); RecyclerView deviceListRecyclerView = findViewById(R.id.deviceListRecyclerView); deviceListRecyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -84,6 +86,17 @@ public class MainActivity extends AppCompatActivity { } }); + prewview_kamera.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mMainActivityViewModel.isCameraAccessAllowed(MainActivity.this)) { + openVideoPrewvoewActivity(); + } + else { + mMainActivityViewModel.accessRequestCamera(MainActivity.this); + } + } + }); audiodetectionButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -131,6 +144,10 @@ public class MainActivity extends AppCompatActivity { } }); } + public void openVideoPrewvoewActivity() { + Intent intent = new Intent(this, VideoPreviewActivity.class); + startActivity(intent); + } public void openAudiodetectionActivity(){ Intent intent = new Intent(this, AudiodetectionActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/example/greenwatch/VideoPreviewActivity.java b/app/src/main/java/com/example/greenwatch/VideoPreviewActivity.java new file mode 100644 index 0000000..cc110c4 --- /dev/null +++ b/app/src/main/java/com/example/greenwatch/VideoPreviewActivity.java @@ -0,0 +1,61 @@ +package com.example.greenwatch; + +import android.os.Bundle; +import android.util.Size; +import android.widget.Button; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.camera.core.CameraSelector; +import androidx.camera.core.ImageAnalysis; +import androidx.camera.core.ImageProxy; +import androidx.camera.core.Preview; +import androidx.camera.lifecycle.ProcessCameraProvider; +import androidx.camera.view.PreviewView; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.LifecycleOwner; + +import com.google.common.util.concurrent.ListenableFuture; + +import java.util.concurrent.ExecutionException; + +public class VideoPreviewActivity extends AppCompatActivity { + + private Button backToMainActivity; + private PreviewView previewView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_preview_kamera); + + backToMainActivity = (Button) findViewById(R.id.videodetectorBackToMainActivity); + previewView = findViewById(R.id.previewView); + + backToMainActivity.setOnClickListener(v -> finish()); + + + final ListenableFuture cameraProviderFuture = ProcessCameraProvider.getInstance(this); + cameraProviderFuture.addListener(() -> { + try { + bindImageAnalysis(cameraProviderFuture.get()); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + }, ContextCompat.getMainExecutor(this)); + } + + private void bindImageAnalysis(ProcessCameraProvider cameraProvider) { + ImageAnalysis.Builder builder = new ImageAnalysis.Builder(); + builder.setTargetResolution(new Size(640, 480)); + builder.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST); + ImageAnalysis imageAnalysis = builder.build(); + imageAnalysis.setAnalyzer( + ContextCompat.getMainExecutor(this), + ImageProxy::close); + + Preview preview = new Preview.Builder().build(); + CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build(); + preview.setSurfaceProvider(previewView.getSurfaceProvider()); + cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, imageAnalysis, preview); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ca28180..940f0f1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,6 +8,12 @@ android:padding="10dp" tools:context=".MainActivity"> + + + + + + + + + \ No newline at end of file