Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package m.kampukter.travelexpenses.ui
- import android.app.Activity
- import android.content.Context
- import android.content.pm.PackageManager
- import android.os.Bundle
- import android.util.Log
- import android.view.LayoutInflater
- import android.view.View
- import android.view.ViewGroup
- import androidx.camera.core.CameraSelector
- import androidx.camera.core.Preview
- import androidx.camera.lifecycle.ProcessCameraProvider
- import androidx.core.app.ActivityCompat
- import androidx.core.content.ContextCompat
- import androidx.fragment.app.Fragment
- import kotlinx.android.synthetic.main.camerax_fragment.*
- import m.kampukter.travelexpenses.R
- import java.util.concurrent.ExecutorService
- import java.util.concurrent.Executors
- class CameraXFragment: Fragment() {
- private lateinit var cameraExecutor: ExecutorService
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- cameraExecutor = Executors.newSingleThreadExecutor()
- return inflater.inflate(R.layout.camerax_fragment, container, false)
- }
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- val isLocationPermission = permissionsForCamera.all { permission ->
- ContextCompat.checkSelfPermission(
- view.context,
- permission
- ) == PackageManager.PERMISSION_GRANTED
- }
- if (isLocationPermission) {
- viewFinder.post {
- setUpCamera(view.context)
- }
- } else {
- Log.e("blabla", "Permission is don't granted")
- ActivityCompat.requestPermissions(
- activity as Activity,
- permissionsForCamera,
- PERMISSION_REQUEST_CAMERA
- )
- }
- }
- private fun setUpCamera(context: Context) {
- val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
- cameraProviderFuture.addListener({
- // Used to bind the lifecycle of cameras to the lifecycle owner
- val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
- // Preview
- val preview = Preview.Builder().build()
- // Select back camera as a default
- val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
- try {
- // Unbind use cases before rebinding
- cameraProvider.unbindAll()
- // Bind use cases to camera
- cameraProvider.bindToLifecycle(
- this, cameraSelector, preview
- )
- // Attach the viewfinder's surface provider to preview use case
- preview.setSurfaceProvider(viewFinder.surfaceProvider)
- } catch (exc: Exception) {
- Log.e("blabla", "Use case binding failed", exc)
- }
- }, ContextCompat.getMainExecutor(context))
- }
- override fun onDestroy() {
- super.onDestroy()
- cameraExecutor.shutdown()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement