Advertisement
AnatolyZadvernyak

Untitled

Oct 28th, 2020
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. package m.kampukter.travelexpenses.ui
  2.  
  3. import android.app.Activity
  4. import android.content.Context
  5. import android.content.pm.PackageManager
  6. import android.os.Bundle
  7. import android.util.Log
  8. import android.view.LayoutInflater
  9. import android.view.View
  10. import android.view.ViewGroup
  11. import androidx.camera.core.CameraSelector
  12. import androidx.camera.core.Preview
  13. import androidx.camera.lifecycle.ProcessCameraProvider
  14. import androidx.core.app.ActivityCompat
  15. import androidx.core.content.ContextCompat
  16. import androidx.fragment.app.Fragment
  17. import kotlinx.android.synthetic.main.camerax_fragment.*
  18. import m.kampukter.travelexpenses.R
  19. import java.util.concurrent.ExecutorService
  20. import java.util.concurrent.Executors
  21.  
  22. class CameraXFragment: Fragment() {
  23. private lateinit var cameraExecutor: ExecutorService
  24.  
  25. override fun onCreateView(
  26. inflater: LayoutInflater,
  27. container: ViewGroup?,
  28. savedInstanceState: Bundle?
  29. ): View? {
  30. cameraExecutor = Executors.newSingleThreadExecutor()
  31. return inflater.inflate(R.layout.camerax_fragment, container, false)
  32. }
  33.  
  34. override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  35. super.onViewCreated(view, savedInstanceState)
  36.  
  37. val isLocationPermission = permissionsForCamera.all { permission ->
  38. ContextCompat.checkSelfPermission(
  39. view.context,
  40. permission
  41. ) == PackageManager.PERMISSION_GRANTED
  42. }
  43. if (isLocationPermission) {
  44.  
  45. viewFinder.post {
  46. setUpCamera(view.context)
  47. }
  48. } else {
  49. Log.e("blabla", "Permission is don't granted")
  50. ActivityCompat.requestPermissions(
  51. activity as Activity,
  52. permissionsForCamera,
  53. PERMISSION_REQUEST_CAMERA
  54. )
  55. }
  56.  
  57. }
  58. private fun setUpCamera(context: Context) {
  59. val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
  60.  
  61. cameraProviderFuture.addListener({
  62. // Used to bind the lifecycle of cameras to the lifecycle owner
  63. val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
  64.  
  65. // Preview
  66. val preview = Preview.Builder().build()
  67.  
  68. // Select back camera as a default
  69. val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
  70.  
  71. try {
  72. // Unbind use cases before rebinding
  73. cameraProvider.unbindAll()
  74.  
  75. // Bind use cases to camera
  76. cameraProvider.bindToLifecycle(
  77. this, cameraSelector, preview
  78. )
  79.  
  80. // Attach the viewfinder's surface provider to preview use case
  81. preview.setSurfaceProvider(viewFinder.surfaceProvider)
  82.  
  83. } catch (exc: Exception) {
  84. Log.e("blabla", "Use case binding failed", exc)
  85. }
  86.  
  87. }, ContextCompat.getMainExecutor(context))
  88. }
  89.  
  90. override fun onDestroy() {
  91. super.onDestroy()
  92. cameraExecutor.shutdown()
  93. }
  94.  
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement