11package com.aria.danesh.faceverificationlib.view.compose
22
3- import android.util.Log
4- import androidx.camera.core.CameraSelector
5- import androidx.camera.core.ImageAnalysis
6- import androidx.camera.core.ImageProxy
7- import androidx.camera.core.Preview
8- import androidx.camera.lifecycle.ProcessCameraProvider
9- import androidx.camera.view.PreviewView
10- import androidx.compose.foundation.lazy.grid.LazyGridState
11- import androidx.compose.foundation.lazy.grid.rememberLazyGridState
12- import androidx.compose.foundation.shape.RoundedCornerShape
133import androidx.compose.runtime.Composable
14- import androidx.compose.runtime.MutableState
154import androidx.compose.runtime.remember
16- import androidx.compose.runtime.saveable.rememberSaveable
17- import androidx.compose.ui.Modifier
18- import androidx.compose.ui.draw.clip
19- import androidx.compose.ui.platform.LocalContext
20- import androidx.compose.ui.unit.dp
21- import androidx.compose.ui.viewinterop.AndroidView
22- import androidx.core.content.ContextCompat
23- import androidx.lifecycle.compose.LocalLifecycleOwner
245import com.aria.danesh.faceverificationlib.state.LivelinessState
256import com.aria.danesh.faceverificationlib.utils.LivelinessDetectorAnalyzer
267
278
28- @Composable
29- fun rememberLivelinessDetectorAnalyzer (result : (LivelinessState ) -> Unit ): LivelinessDetectorAnalyzer {
30- return remember {
31- LivelinessDetectorAnalyzer (onLivelinessResult = { result(it) })
32- }
33- }
9+ // @Composable
10+ // fun rememberLivelinessDetectorAnalyzer(result : (LivelinessState) -> Unit): LivelinessDetectorAnalyzer {
11+ // return remember {
12+ // LivelinessDetectorAnalyzer(onLivelinessResult = { result(it) })
13+ // }
14+ // }
3415
35- @Composable
36- internal fun CameraView (livelinessDetector : LivelinessDetectorAnalyzer = rememberLivelinessDetectorAnalyzer { }) {
37-
38- val context = LocalContext .current
39- val lifecycleOwner = LocalLifecycleOwner .current
40-
41- val cameraProviderFuture = remember { ProcessCameraProvider .getInstance(context) }
42- val executor = remember { ContextCompat .getMainExecutor(context) }
43- val imageAnalysis = remember {
44- ImageAnalysis .Builder ()
45- .setBackpressureStrategy(ImageAnalysis .STRATEGY_KEEP_ONLY_LATEST )
46- .build()
47- .also {
48- it.setAnalyzer(executor, livelinessDetector) // Set the LivenessDetectorAnalyzer
49- }
50- }
51-
52- val cameraView = remember {
53- PreviewView (context).apply {
54- implementationMode = PreviewView .ImplementationMode .PERFORMANCE
55- }
56- }
57-
58- // Use LaunchedEffect to handle camera setup
59- androidx.compose.runtime.LaunchedEffect (lifecycleOwner) { // Use lifecycleOwner
60- cameraProviderFuture.addListener({
61- val cameraProvider = cameraProviderFuture.get()
62- val preview = Preview .Builder ().build().also {
63- it.surfaceProvider = cameraView.surfaceProvider
64- }
65- try {
66- cameraProvider.unbindAll()
67- cameraProvider.bindToLifecycle(
68- lifecycleOwner,
69- CameraSelector .DEFAULT_BACK_CAMERA ,
70- preview,
71- imageAnalysis, // Bind the imageAnalysis
72- // faceVerificationViewModel().imageCapture
73- )
74- } catch (e: Exception ) {
75- Log .e(" CameraView" , " Camera binding failed" , e) // Log the error
76- // Handle the error appropriately, e.g., show a message to the user
77- }
78- }, executor)
79- }
80-
81- AndroidView (
82- factory = { cameraView },
83- modifier = Modifier .clip(RoundedCornerShape (16 .dp)),
84- )
85- }
16+ // @Composable
17+ // internal fun CameraView(livelinessDetector : LivelinessDetectorAnalyzer = rememberLivelinessDetectorAnalyzer { }) {
18+ //
19+ // val context = LocalContext.current
20+ // val lifecycleOwner = LocalLifecycleOwner.current
21+ //
22+ // val cameraProviderFuture = remember { ProcessCameraProvider.getInstance(context) }
23+ // val executor = remember { ContextCompat.getMainExecutor(context) }
24+ // val imageAnalysis = remember {
25+ // ImageAnalysis.Builder()
26+ // .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
27+ // .build()
28+ // .also {
29+ // it.setAnalyzer(executor, livelinessDetector) // Set the LivenessDetectorAnalyzer
30+ // }
31+ // }
32+ //
33+ // val cameraView = remember {
34+ // PreviewView(context).apply {
35+ // implementationMode = PreviewView.ImplementationMode.PERFORMANCE
36+ // }
37+ // }
38+ //
39+ // // Use LaunchedEffect to handle camera setup
40+ // androidx.compose.runtime.LaunchedEffect(lifecycleOwner) { // Use lifecycleOwner
41+ // cameraProviderFuture.addListener({
42+ // val cameraProvider = cameraProviderFuture.get()
43+ // val preview = Preview.Builder().build().also {
44+ // it.surfaceProvider = cameraView.surfaceProvider
45+ // }
46+ // try {
47+ // cameraProvider.unbindAll()
48+ // cameraProvider.bindToLifecycle(
49+ // lifecycleOwner,
50+ // CameraSelector.DEFAULT_BACK_CAMERA,
51+ // preview,
52+ // imageAnalysis, // Bind the imageAnalysis
53+ // // faceVerificationViewModel().imageCapture
54+ // )
55+ // } catch (e: Exception) {
56+ // Log.e("CameraView", "Camera binding failed", e) // Log the error
57+ // // Handle the error appropriately, e.g., show a message to the user
58+ // }
59+ // }, executor)
60+ // }
61+ //
62+ // AndroidView(
63+ // factory = { cameraView },
64+ // modifier = Modifier.clip(RoundedCornerShape(16.dp)),
65+ // )
66+ // }
0 commit comments