From 2a70ca1ee2c4fb037d0bfbde70e2020e6929d41f Mon Sep 17 00:00:00 2001 From: Faraphel Date: Sat, 18 May 2024 01:32:10 +0200 Subject: [PATCH] [WIP] - test for the QR code card system --- app/build.gradle.kts | 2 ++ app/src/main/AndroidManifest.xml | 11 +++++-- .../faraphel/tasks_valider/MainActivity.kt | 20 ++++++++++++- .../tasks_valider/database/dao/SubjectDao.kt | 3 +- .../tasks_valider/ui/screen/scan/qr/screen.kt | 30 +++++++++++++++++++ 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/screen/scan/qr/screen.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2568df0..c904fdf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -66,6 +66,8 @@ dependencies { implementation("org.nanohttpd:nanohttpd:2.3.1") implementation("com.google.code.gson:gson:2.10.1") implementation("com.squareup.okhttp3:okhttp-android:5.0.0-alpha.14") + implementation("com.journeyapps:zxing-android-embedded:4.3.0") + implementation("com.google.zxing:core:3.5.3") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 051a946..e983a70 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ - + @@ -26,6 +26,10 @@ android:usesPermissionFlags="neverForLocation" tools:targetApi="s" /> + + + + @@ -47,9 +51,12 @@ android:theme="@style/Theme.Tasksvalider"> - + + + + diff --git a/app/src/main/java/com/faraphel/tasks_valider/MainActivity.kt b/app/src/main/java/com/faraphel/tasks_valider/MainActivity.kt index b35c547..69e4231 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/MainActivity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/MainActivity.kt @@ -6,9 +6,14 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.annotation.RequiresApi +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import com.faraphel.tasks_valider.connectivity.bwf.BwfManager import com.faraphel.tasks_valider.database.TaskDatabase -import com.faraphel.tasks_valider.ui.screen.communication.CommunicationScreen +import com.faraphel.tasks_valider.ui.screen.scan.qr.ScanBarcodeScreen +import com.journeyapps.barcodescanner.BarcodeResult class MainActivity : ComponentActivity() { @@ -22,9 +27,22 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + this.setContent { + @Composable + fun example() { + val barcode = remember { mutableStateOf(null) } + if (barcode.value == null) ScanBarcodeScreen(this, barcode) + else Text("code: ${barcode.value!!.text}") + } + + example() + } + + /* this.setContent { CommunicationScreen(this) } + */ } @SuppressLint("UnspecifiedRegisterReceiverFlag") diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt index 8dc676a..1b0616f 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt @@ -3,7 +3,6 @@ package com.faraphel.tasks_valider.database.dao import androidx.room.Dao import androidx.room.Query import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities.SessionEntity import com.faraphel.tasks_valider.database.entities.SubjectEntity import com.faraphel.tasks_valider.database.entities.TaskEntity @@ -23,5 +22,5 @@ interface SubjectDao : BaseDao { * @param id the id of the subject */ @Query("SELECT * FROM ${TaskEntity.TABLE_NAME} WHERE subject_id = :id") - fun getSessions(id: Long): List + fun getTasks(id: Long): List } diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/scan/qr/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/scan/qr/screen.kt new file mode 100644 index 0000000..362699e --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/scan/qr/screen.kt @@ -0,0 +1,30 @@ +package com.faraphel.tasks_valider.ui.screen.scan.qr + +import android.app.Activity +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.viewinterop.AndroidView +import com.google.zxing.BarcodeFormat +import com.journeyapps.barcodescanner.BarcodeResult +import com.journeyapps.barcodescanner.DecoratedBarcodeView +import com.journeyapps.barcodescanner.DefaultDecoderFactory + +/** + * Screen to scan a Barcode / QR Code + */ +@Composable +fun ScanBarcodeScreen(activity: Activity, barcode: MutableState) { + Box(modifier = Modifier.fillMaxSize()) { + // AndroidView is used because "DecoratedBarcodeView" only support the legacy view system + AndroidView(factory = { + DecoratedBarcodeView(activity).apply { + this.decoderFactory = DefaultDecoderFactory(listOf(BarcodeFormat.QR_CODE)) + this.initializeFromIntent(activity.intent) + this.decodeContinuous { result -> barcode.value = result } + this.resume() + } + }) + } +}