package cl.kgames.capacitorbarcodescanner import android.app.Application import android.util.Log import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import java.util.concurrent.ExecutionException class CameraXViewModel(application: Application) : AndroidViewModel(application) { private var cameraProviderLiveData: MutableLiveData? = null val processCameraProvider: LiveData get() { if (cameraProviderLiveData == null) { cameraProviderLiveData = MutableLiveData() val cameraProviderFuture = ProcessCameraProvider.getInstance(getApplication()) cameraProviderFuture.addListener( Runnable { try { cameraProviderLiveData!!.setValue(cameraProviderFuture.get()) } catch (e: ExecutionException) { Log.e(TAG, "Unhandled exception", e) } catch (e: InterruptedException) { Log.e(TAG, "Unhandled exception", e) } }, ContextCompat.getMainExecutor(getApplication()) ) } return cameraProviderLiveData!! } companion object { private const val TAG = "CameraXViewModel" } }