Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.krnventures.abcvideos.ui.uploadVideo
- import android.content.pm.PackageManager
- import android.os.Bundle
- import android.view.LayoutInflater
- import android.view.TextureView
- import android.view.View
- import android.view.ViewGroup
- import android.widget.ImageButton
- import android.widget.TextView
- import android.widget.Toast
- import androidx.camera.core.CameraX
- import androidx.camera.core.Preview
- import androidx.camera.core.VideoCapture
- import androidx.camera.core.impl.PreviewConfig
- import androidx.core.app.ActivityCompat
- import androidx.core.content.ContextCompat
- import androidx.fragment.app.Fragment
- import androidx.lifecycle.LifecycleOwner
- import androidx.lifecycle.Observer
- import androidx.lifecycle.ViewModelProviders
- import com.krnventures.abcvideos.MainActivity
- import com.krnventures.abcvideos.R
- /*
- LifecycleOwner is an interface that is used by any class that has an Android lifecycle. Practically,
- it means that the class has a Lifecycle object that represents its lifecycle.
- */
- class UploadVideoFragment : Fragment(), LifecycleOwner {
- private lateinit var uploadVideoViewModel: UploadVideoViewModel
- private val REQUEST_CODE_PERMISSIONS = 1
- private val TAG = MainActivity::class.java.simpleName
- private val REQUIRED_PERMISSIONS =
- arrayOf(android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO)
- private lateinit var viewFinder: TextureView
- private lateinit var captureButton: ImageButton
- private lateinit var videoCapture: VideoCapture
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- uploadVideoViewModel =
- ViewModelProviders.of(this).get(UploadVideoViewModel::class.java)
- val root = inflater.inflate(R.layout.fragment_upload_video, container, false)
- val textView: TextView = root.findViewById(R.id.text_notifications)
- // Request camera permissions
- if (allPermissionsGranted()) {
- viewFinder.post { startCamera() }
- } else {
- activity?.let {
- ActivityCompat.requestPermissions(
- it, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS
- )
- }
- }
- uploadVideoViewModel.text.observe(viewLifecycleOwner, Observer {
- textView.text = it
- })
- return root
- }
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array<String>, grantResults: IntArray
- ) {
- if (requestCode == REQUEST_CODE_PERMISSIONS) {
- if (allPermissionsGranted()) {
- viewFinder.post { startCamera() }
- } else {
- Toast.makeText(
- activity,
- "Permissions not granted by the user.",
- Toast.LENGTH_SHORT
- ).show()
- //finish()
- }
- }
- }
- private fun allPermissionsGranted(): Boolean {
- for (permission in REQUIRED_PERMISSIONS) {
- if (activity?.let {
- ContextCompat.checkSelfPermission(
- it, permission
- )
- } != PackageManager.PERMISSION_GRANTED
- ) {
- return false
- }
- }
- return true
- }
- private fun startCamera() {
- // Create configuration object for the viewfinder use case
- val previewConfig = PreviewConfig.Builder().build()
- // Build the viewfinder use case
- val preview = Preview(previewConfig)
- preview.setOnPreviewOutputUpdateListener {
- viewFinder.surfaceTexture = it.surfaceTexture
- }
- // Bind use cases to lifecycle
- CameraX.bindToLifecycle(this, preview)
- }
- }
Add Comment
Please, Sign In to add comment