qr scanner
This commit is contained in:
@@ -12,13 +12,12 @@ import androidx.compose.ui.unit.dp
|
|||||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||||
import com.google.accompanist.permissions.PermissionState
|
import com.google.accompanist.permissions.PermissionState
|
||||||
import com.google.accompanist.permissions.isGranted
|
import com.google.accompanist.permissions.isGranted
|
||||||
|
import com.google.accompanist.permissions.shouldShowRationale
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DefaultScreen(
|
fun DefaultScreen(
|
||||||
qrCodeValue: String?,
|
qrCodeValue: String?,
|
||||||
onScanClick: () -> Unit,
|
|
||||||
onRetryClick: () -> Unit
|
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -30,27 +29,8 @@ fun DefaultScreen(
|
|||||||
qrCodeValue?.let {
|
qrCodeValue?.let {
|
||||||
Text(text = "Scanned Value: $it", modifier = Modifier.padding(16.dp))
|
Text(text = "Scanned Value: $it", modifier = Modifier.padding(16.dp))
|
||||||
}
|
}
|
||||||
Button(onClick = if (qrCodeValue == null) onScanClick else onRetryClick) {
|
|
||||||
Text(if (qrCodeValue == null) "Scan" else "Retry")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalPermissionsApi::class)
|
|
||||||
@Composable
|
|
||||||
fun RequestPermissions(
|
|
||||||
cameraPermissionState: PermissionState,
|
|
||||||
locationPermissionState: PermissionState
|
|
||||||
) {
|
|
||||||
val context = LocalContext.current
|
|
||||||
LaunchedEffect(Unit) {
|
|
||||||
cameraPermissionState.launchPermissionRequest()
|
|
||||||
locationPermissionState.launchPermissionRequest()
|
|
||||||
}
|
|
||||||
if (!cameraPermissionState.status.isGranted) {
|
|
||||||
Toast.makeText(context, "Camera permission is required", Toast.LENGTH_LONG).show()
|
|
||||||
}
|
|
||||||
if (!locationPermissionState.status.isGranted) {
|
|
||||||
Toast.makeText(context, "Location permission is required", Toast.LENGTH_LONG).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ import androidx.camera.core.*
|
|||||||
import androidx.camera.lifecycle.ProcessCameraProvider
|
import androidx.camera.lifecycle.ProcessCameraProvider
|
||||||
import androidx.camera.view.PreviewView
|
import androidx.camera.view.PreviewView
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
|
import androidx.compose.material3.OutlinedCard
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
@@ -18,12 +20,14 @@ import com.google.mlkit.vision.barcode.BarcodeScanning
|
|||||||
import com.google.mlkit.vision.barcode.common.Barcode
|
import com.google.mlkit.vision.barcode.common.Barcode
|
||||||
import com.google.mlkit.vision.common.InputImage
|
import com.google.mlkit.vision.common.InputImage
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
|
||||||
@Composable
|
@Composable
|
||||||
fun QRCodeScannerScreen(
|
fun QRCodeScannerScreen(
|
||||||
onQRCodeScanned: (String) -> Unit,
|
onQRCodeScanned: (String) -> Unit,
|
||||||
lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
|
lifecycleOwner: LifecycleOwner = androidx.lifecycle.compose.LocalLifecycleOwner.current
|
||||||
) {
|
) {
|
||||||
|
OutlinedCard(
|
||||||
|
modifier = Modifier.padding(10.dp)
|
||||||
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val previewView = remember { PreviewView(context) }
|
val previewView = remember { PreviewView(context) }
|
||||||
|
|
||||||
@@ -71,6 +75,7 @@ fun QRCodeScannerScreen(
|
|||||||
.aspectRatio(1f),
|
.aspectRatio(1f),
|
||||||
factory = { previewView }
|
factory = { previewView }
|
||||||
)
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
|
|||||||
Reference in New Issue
Block a user