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.PermissionState
|
||||
import com.google.accompanist.permissions.isGranted
|
||||
import com.google.accompanist.permissions.shouldShowRationale
|
||||
|
||||
|
||||
@Composable
|
||||
fun DefaultScreen(
|
||||
qrCodeValue: String?,
|
||||
onScanClick: () -> Unit,
|
||||
onRetryClick: () -> Unit
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
@@ -30,27 +29,8 @@ fun DefaultScreen(
|
||||
qrCodeValue?.let {
|
||||
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.view.PreviewView
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material3.OutlinedCard
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import androidx.core.content.ContextCompat
|
||||
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.common.InputImage
|
||||
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
@Composable
|
||||
fun QRCodeScannerScreen(
|
||||
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 previewView = remember { PreviewView(context) }
|
||||
|
||||
@@ -71,6 +75,7 @@ fun QRCodeScannerScreen(
|
||||
.aspectRatio(1f),
|
||||
factory = { previewView }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
|
||||
Reference in New Issue
Block a user