From ad183bbf6227e4a8d1bfd33c4e7e8a95daa05b6e Mon Sep 17 00:00:00 2001
From: cettareswara <13521133@std.stei.itb.ac.id>
Date: Fri, 5 Apr 2024 04:43:09 +0700
Subject: [PATCH] add: scanner raw

---
 app/build.gradle.kts                          |  17 +-
 app/src/main/AndroidManifest.xml              |  22 +-
 .../java/com/example/bondoman/MainActivity.kt |  10 +-
 .../com/example/bondoman/fragment_scanner.kt  | 199 ++++++++++++++++++
 app/src/main/res/drawable/ic_gallery.xml      |   8 +
 app/src/main/res/drawable/ic_gallery_raw.jpg  | Bin 0 -> 29338 bytes
 app/src/main/res/layout/fragment_scanner.xml  |  82 ++++++++
 app/src/main/res/values/strings.xml           |   3 +
 app/src/main/res/xml/file_path.xml            |   8 +
 build.gradle.kts                              |   2 +-
 10 files changed, 332 insertions(+), 19 deletions(-)
 create mode 100644 app/src/main/java/com/example/bondoman/fragment_scanner.kt
 create mode 100644 app/src/main/res/drawable/ic_gallery.xml
 create mode 100644 app/src/main/res/drawable/ic_gallery_raw.jpg
 create mode 100644 app/src/main/res/layout/fragment_scanner.xml
 create mode 100644 app/src/main/res/xml/file_path.xml

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f7742da..c920a39 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -50,11 +50,13 @@ android {
 }
 
 dependencies {
-
+    implementation("androidx.camera:camera-camera2:1.3.2")
+    implementation("androidx.camera:camera-lifecycle:1.3.2")
+    implementation("androidx.camera:camera-core:1.3.2")
     implementation("androidx.core:core-ktx:1.12.0")
     implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
     implementation("androidx.activity:activity-compose:1.8.2")
-    implementation(platform("androidx.compose:compose-bom:2023.08.00"))
+    implementation(platform("androidx.compose:compose-bom:2024.03.00"))
     implementation("androidx.compose.ui:ui")
     implementation("androidx.compose.ui:ui-graphics")
     implementation("androidx.compose.ui:ui-tooling-preview")
@@ -62,23 +64,24 @@ dependencies {
     implementation("androidx.constraintlayout:constraintlayout:2.1.4")
     implementation("com.google.android.material:material:1.11.0")
     implementation("androidx.mediarouter:mediarouter:1.7.0")
+    implementation("androidx.camera:camera-view:1.3.2")
     testImplementation("junit:junit:4.13.2")
     androidTestImplementation("androidx.test.ext:junit:1.1.5")
     androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
-    androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
+    androidTestImplementation(platform("androidx.compose:compose-bom:2024.03.00"))
     androidTestImplementation("androidx.compose.ui:ui-test-junit4")
     debugImplementation("androidx.compose.ui:ui-tooling")
     debugImplementation("androidx.compose.ui:ui-test-manifest")
 
     // Retrofit
-    implementation("com.google.code.gson:gson:2.9.0")
+    implementation("com.google.code.gson:gson:2.10.1")
     implementation("com.squareup.retrofit2:retrofit:2.9.0")
     implementation("com.squareup.retrofit2:converter-gson:2.9.0")
 
     // Room
-    implementation("androidx.room:room-runtime:2.5.0")
-    annotationProcessor("androidx.room:room-compiler:2.5.0")
-    implementation("androidx.room:room-ktx:2.5.0")
+    implementation("androidx.room:room-runtime:2.6.1")
+    annotationProcessor("androidx.room:room-compiler:2.6.1")
+    implementation("androidx.room:room-ktx:2.6.1")
 
     implementation ("net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:3.0.0-RC3")
 }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fc1529e..a9e24f1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.example.bondoman">
+
+    <uses-feature
+        android:name="android.hardware.camera"
+        android:required="false" />
+    <uses-permission android:name="android.permission.CAMERA"/>
 
     <application
         android:allowBackup="true"
@@ -17,7 +23,6 @@
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
@@ -30,6 +35,17 @@
             android:name=".TransaksiBaruActivity"
             android:exported="true">
         </activity>
+
+        <provider
+            android:authorities="com.example.bondoman.fileProvider"
+            android:name="androidx.core.content.FileProvider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_path"/>
+        </provider>
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt
index 81b69df..23ed318 100644
--- a/app/src/main/java/com/example/bondoman/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/MainActivity.kt
@@ -2,15 +2,9 @@ package com.example.bondoman
 
 import SettingsFragment
 import android.annotation.SuppressLint
-import android.content.Intent
 import android.os.Bundle
-import android.text.TextUtils
-import android.widget.Button
-import android.widget.EditText
-import android.widget.Toast
-import androidx.appcompat.app.AppCompatActivity
-import android.view.MenuItem
 import android.widget.TextView
+import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.Fragment
 import com.google.android.material.bottomnavigation.BottomNavigationView
 
@@ -36,7 +30,7 @@ class MainActivity : AppCompatActivity() {
 
                 R.id.scan -> {
                     item.setIcon(R.drawable.scanner_bold)
-                    // Perform actions for scanner fragment call
+                    replaceFragment(CameraFragment(), "Scanner")
                     true
                 }
 
diff --git a/app/src/main/java/com/example/bondoman/fragment_scanner.kt b/app/src/main/java/com/example/bondoman/fragment_scanner.kt
new file mode 100644
index 0000000..1394d52
--- /dev/null
+++ b/app/src/main/java/com/example/bondoman/fragment_scanner.kt
@@ -0,0 +1,199 @@
+package com.example.bondoman
+
+import android.Manifest
+import android.annotation.SuppressLint
+import android.app.Activity
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Bundle
+import android.provider.MediaStore
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.ImageView
+import android.widget.Toast
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
+import androidx.camera.lifecycle.ProcessCameraProvider
+import androidx.camera.view.PreviewView
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.Fragment
+import androidx.lifecycle.LifecycleOwner
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+import java.io.File
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+
+@Suppress("DEPRECATION")
+class CameraFragment : Fragment() {
+
+    private lateinit var cameraExecutor: ExecutorService
+    private lateinit var imageCapture: ImageCapture
+    private lateinit var viewFinder: PreviewView
+    private lateinit var capturedImageView: ImageView
+    private lateinit var retakeButton: Button
+    private lateinit var galleryButton : Button
+    private lateinit var saveButton: Button
+    private lateinit var currentPhotoPath: String
+
+    @SuppressLint("MissingInflatedId")
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        val view = inflater.inflate(R.layout.fragment_scanner, container, false)
+        viewFinder = view.findViewById(R.id.viewFinder)
+        capturedImageView = view.findViewById(R.id.capturedImageView)
+        retakeButton = view.findViewById(R.id.retakeButton)
+        saveButton = view.findViewById(R.id.saveButton)
+        galleryButton = view.findViewById(R.id.galleryButton)
+        return view
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        cameraExecutor = Executors.newSingleThreadExecutor()
+
+        galleryButton.setOnClickListener {
+            if (allPermissionsGranted()) {
+                openGallery()
+            } else {
+                ActivityCompat.requestPermissions(
+                    requireActivity(),
+                    REQUIRED_PERMISSIONS,
+                    REQUEST_CODE_PERMISSIONS
+                )
+            }
+        }
+
+        // Request camera permissions
+        if (allPermissionsGranted()) {
+            startCamera()
+        } else {
+            ActivityCompat.requestPermissions(
+                requireActivity(),
+                REQUIRED_PERMISSIONS,
+                REQUEST_CODE_PERMISSIONS
+            )
+        }
+
+        val roundButton: FloatingActionButton = view.findViewById(R.id.round_button)
+        roundButton.setOnClickListener {
+            takePhoto()
+        }
+
+        retakeButton.setOnClickListener {
+            capturedImageView.visibility = View.GONE
+            retakeButton.visibility = View.GONE
+            saveButton.visibility = View.GONE
+            viewFinder.visibility = View.VISIBLE
+            startCamera()
+        }
+
+        saveButton.setOnClickListener {
+            // Save the photo
+            // Implement your saving logic here
+            Toast.makeText(requireContext(), "Photo saved successfully!", Toast.LENGTH_SHORT).show()
+            // After saving, you can navigate to the next screen or perform any other action
+        }
+    }
+
+    private val REQUEST_CODE_GALLERY = 1001
+
+    private fun openGallery() {
+        val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
+        startActivityForResult(intent, REQUEST_CODE_GALLERY)
+        showCapturedImage()
+    }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (requestCode == REQUEST_CODE_GALLERY && resultCode == Activity.RESULT_OK) {
+            data?.data?.let { uri ->
+                capturedImageView.setImageURI(uri)
+                capturedImageView.visibility = View.VISIBLE
+            }
+        }
+    }
+
+    private fun allPermissionsGranted() =
+        REQUIRED_PERMISSIONS.all {
+            ContextCompat.checkSelfPermission(
+                requireContext(), it
+            ) == PackageManager.PERMISSION_GRANTED
+        }
+
+    private fun startCamera() {
+        val cameraProviderFuture = ProcessCameraProvider.getInstance(requireContext())
+        cameraProviderFuture.addListener({
+            val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
+
+            val preview = Preview.Builder().build().also {
+                it.setSurfaceProvider(viewFinder.surfaceProvider)
+            }
+
+            imageCapture = ImageCapture.Builder()
+                .build()
+
+            val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
+
+            try {
+                cameraProvider.unbindAll()
+
+                cameraProvider.bindToLifecycle(
+                    this as LifecycleOwner, cameraSelector, preview, imageCapture
+                )
+
+            } catch (exc: Exception) {
+                Toast.makeText(requireContext(), "Camera initialization failed", Toast.LENGTH_SHORT).show()
+            }
+
+        }, ContextCompat.getMainExecutor(requireContext()))
+    }
+
+    private fun takePhoto() {
+        val imageCapture = imageCapture
+
+        val photoFile = File(
+            requireContext().externalMediaDirs.firstOrNull(),
+            "${System.currentTimeMillis()}.jpg"
+        )
+
+        val outputOptions = ImageCapture.OutputFileOptions.Builder(photoFile).build()
+
+        imageCapture.takePicture(
+            outputOptions, ContextCompat.getMainExecutor(requireContext()), object : ImageCapture.OnImageSavedCallback {
+                override fun onError(exc: ImageCaptureException) {
+                    Toast.makeText(requireContext(), "Photo capture failed: ${exc.message}", Toast.LENGTH_SHORT).show()
+                }
+
+                override fun onImageSaved(output: ImageCapture.OutputFileResults) {
+                    currentPhotoPath = photoFile.absolutePath
+                    showCapturedImage()
+                }
+            })
+    }
+
+    private fun showCapturedImage() {
+        viewFinder.visibility = View.GONE
+        capturedImageView.visibility = View.VISIBLE
+        capturedImageView.setImageURI(Uri.fromFile(File(currentPhotoPath)))
+        retakeButton.visibility = View.VISIBLE
+        saveButton.visibility = View.VISIBLE
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        cameraExecutor.shutdown()
+    }
+
+    companion object {
+        private const val REQUEST_CODE_PERMISSIONS = 10
+        private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA)
+    }
+}
diff --git a/app/src/main/res/drawable/ic_gallery.xml b/app/src/main/res/drawable/ic_gallery.xml
new file mode 100644
index 0000000..961a5ea
--- /dev/null
+++ b/app/src/main/res/drawable/ic_gallery.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- custom_drawable.xml -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:drawable="@drawable/ic_gallery_raw"
+        android:gravity="center"
+        android:scaleType="fitXY" />
+</layer-list>
diff --git a/app/src/main/res/drawable/ic_gallery_raw.jpg b/app/src/main/res/drawable/ic_gallery_raw.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0074bcea251ec7d3acec8be2b4875b16b10473b7
GIT binary patch
literal 29338
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

literal 0
HcmV?d00001

diff --git a/app/src/main/res/layout/fragment_scanner.xml b/app/src/main/res/layout/fragment_scanner.xml
new file mode 100644
index 0000000..7f5bdf3
--- /dev/null
+++ b/app/src/main/res/layout/fragment_scanner.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <androidx.camera.view.PreviewView
+        android:id="@+id/viewFinder"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="H,9:16"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="1.0"
+        tools:layout_editor_absoluteX="16dp" />
+
+    <ImageView
+        android:id="@+id/capturedImageView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone"
+        android:scaleType="fitCenter" />
+
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
+        android:id="@+id/round_button"
+        android:layout_width="118dp"
+        android:layout_height="79dp"
+        android:layout_alignParentBottom="true"
+        android:layout_centerInParent="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="52dp"
+        android:backgroundTint="@color/design_default_color_error"
+        android:elevation="6dp"
+        android:tint="@android:color/white"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+    <Button
+        android:id="@+id/retakeButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentBottom="true"
+        android:layout_margin="16dp"
+        android:text="@string/retake"
+        android:visibility="gone"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:ignore="MissingConstraints" />
+
+    <Button
+        android:id="@+id/saveButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentBottom="true"
+        android:layout_margin="16dp"
+        android:text="@string/save"
+        android:visibility="gone"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:ignore="MissingConstraints" />
+
+    <Button
+        android:id="@+id/galleryButton"
+        android:layout_width="70dp"
+        android:layout_height="70dp"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginEnd="25dp"
+        android:layout_marginBottom="55dp"
+        android:text="@string/gallery"
+        android:textSize="10sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+    </Button>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c949ce0..56a505b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,4 +22,7 @@
     <!-- TODO: Remove or change this placeholder text -->
     <string name="hello_blank_fragment">Hello blank fragment</string>
     <string name="transaksi_baru">Transaksi Baru</string>
+    <string name="save">Save</string>
+    <string name="retake">Retake</string>
+    <string name="gallery">Gallery</string>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/xml/file_path.xml b/app/src/main/res/xml/file_path.xml
new file mode 100644
index 0000000..33cf2e5
--- /dev/null
+++ b/app/src/main/res/xml/file_path.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <files-path
+        name="camera_photos"
+        path="." />
+
+</paths>
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 0db614e..a40aa82 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,4 +2,4 @@
 plugins {
     id("com.android.application") version "8.3.0" apply false
     id("org.jetbrains.kotlin.android") version "1.9.0" apply false
-}
\ No newline at end of file
+}
-- 
GitLab