Skip to content

Commit

Permalink
capture preview add.
Browse files Browse the repository at this point in the history
  • Loading branch information
ozcanalasalvar committed Jun 2, 2023
1 parent 353f738 commit 732d89a
Show file tree
Hide file tree
Showing 8 changed files with 172 additions and 165 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class CameraFragment : Fragment() {
MotionEvent.ACTION_DOWN -> {
binding.pnlFlashOptions.visibility = View.GONE
binding.pnlRatioOptions.visibility = View.GONE
binding.zoomSeekWrapper.visibility = View.VISIBLE
binding.zoomSeekWrapper.visibility = View.VISIBLE
startTouchTimer()
return@setOnTouchListener true
}
Expand Down Expand Up @@ -105,11 +105,10 @@ class CameraFragment : Fragment() {
binding.tvRatio169.setOnClickListener(ratioChangeListener)
binding.tvRatio43.setOnClickListener(ratioChangeListener)

binding.zoomSeekBar.setOnSeekBarChangeListener(zoomSeekListener)
binding.zoomSeekBar.setOnSeekBarChangeListener(zoomSeekListener)
scaleGestureDetector = ScaleGestureDetector(requireContext(), zoomListener)



binding.swCameraOption.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
findNavController().navigate(R.id.action_cameraFragment_to_videoFragment)
Expand Down Expand Up @@ -188,8 +187,8 @@ class CameraFragment : Fragment() {

val preview =
Preview.Builder().setTargetAspectRatio(viewModel.screenAspectRatio).build().also {
it.setSurfaceProvider(binding.viewFinder.surfaceProvider)
}
it.setSurfaceProvider(binding.viewFinder.surfaceProvider)
}

imageCapture = ImageCapture.Builder()
.setFlashMode(imageCapture?.flashMode ?: ImageCapture.FLASH_MODE_AUTO)
Expand Down Expand Up @@ -307,7 +306,7 @@ class CameraFragment : Fragment() {
binding.zoomSeekBar.setOnSeekBarChangeListener(zoomSeekListener)
}

binding.zoomSeekWrapper.visibility = View.VISIBLE
binding.zoomSeekWrapper.visibility = View.VISIBLE
startTouchTimer()

return true
Expand Down Expand Up @@ -368,21 +367,9 @@ class CameraFragment : Fragment() {
}


private fun showPreview(uri: Uri) {/* binding.imageView.setImageURI(uri)
binding.previewWindow.visibility = View.VISIBLE
binding.tvApprove.setOnClickListener {
val returnIntent = Intent()
returnIntent.putExtra("result", uri.toString())
requireActivity().setResult(AppCompatActivity.RESULT_OK, returnIntent)
requireActivity().finish()
}
binding.tvTryAgain.setOnClickListener {
binding.previewWindow.visibility = View.GONE
viewModel.savedUri.value = null
FileManager.deleteFile(requireContext(), uri)
}*/
private fun showPreview(uri: Uri) {
binding.previewImage.setImageURI(uri)
binding.pnlPreview.visibility = View.VISIBLE
}


Expand All @@ -394,7 +381,7 @@ class CameraFragment : Fragment() {
override fun onTick(millisUntilFinished: Long) {}

override fun onFinish() {
binding.zoomSeekWrapper.visibility = View.INVISIBLE
binding.zoomSeekWrapper.visibility = View.INVISIBLE
}
}.start()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,24 @@ package com.ozcanalasalvar.camerax.fragments

import android.annotation.SuppressLint
import android.content.ContentValues
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.res.Configuration
import android.media.ThumbnailUtils
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.CancellationSignal
import android.os.CountDownTimer
import android.provider.MediaStore
import android.util.DisplayMetrics
import android.util.Log
import androidx.fragment.app.Fragment
import android.util.Size
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.ScaleGestureDetector
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.MediaController
import android.widget.SeekBar
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.AspectRatio
import androidx.camera.core.Camera
import androidx.camera.core.CameraSelector
Expand All @@ -40,6 +38,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.util.Consumer
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
Expand All @@ -63,7 +62,6 @@ class VideoFragment : Fragment() {
private val viewModel: CameraVM by viewModels()
private lateinit var binding: FragmentVideoBinding


private lateinit var videoCapture: VideoCapture<Recorder>
private var currentRecording: Recording? = null
private lateinit var recordingState: VideoRecordEvent
Expand Down Expand Up @@ -202,11 +200,6 @@ class VideoFragment : Fragment() {
aspectRatio.getDimensionRatioString((orientation == Configuration.ORIENTATION_PORTRAIT))
}

/* binding.videoViewer.updateLayoutParams<ConstraintLayout.LayoutParams> {
val orientation = resources.configuration.orientation
dimensionRatio = aspectRatio.getAspectRationString((orientation == Configuration.ORIENTATION_PORTRAIT))
}*/

val localCameraProvider =
cameraProvider ?: throw IllegalStateException("Camera initialization failed.")

Expand Down Expand Up @@ -416,7 +409,7 @@ class VideoFragment : Fragment() {


private fun showPreview(uri: Uri) {
// binding.previewWindow.visibility = View.VISIBLE
binding.pnlPreview.visibility = View.VISIBLE


val fileSize = FileManager.getFileSizeFromUri(requireContext(), uri)
Expand All @@ -430,50 +423,23 @@ class VideoFragment : Fragment() {
Log.i("VideoViewerFragment", fileInfo)


val mc = MediaController(requireContext())
val params: FrameLayout.LayoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT
)
params.bottomMargin = 200
mc.layoutParams = params

val mSize = Size(96, 96)
val ca = CancellationSignal()
val bitmapThumbnail = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
requireActivity().contentResolver.loadThumbnail(uri, mSize, ca)
} else {
ThumbnailUtils.createVideoThumbnail(
filePath, MediaStore.Video.Thumbnails.MICRO_KIND
)
}

binding.previewImage.setImageBitmap(bitmapThumbnail);

requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
// mc.setAnchorView(binding.controllerView)


/* binding.videoViewer.apply {
setVideoURI(uri)
setMediaController(mc)
requestFocus()
}
.start()*/


/* binding.tvApprove.setOnClickListener {
val returnIntent = Intent()
returnIntent.putExtra("result", uri.toString())
requireActivity().setResult(AppCompatActivity.RESULT_OK, returnIntent)
requireActivity().finish()
clearPreview()
}
binding.tvTryAgain.setOnClickListener {
binding.previewWindow.visibility = View.GONE
viewModel.savedUri.value = null
clearPreview()
requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
FileManager.deleteFile(requireContext(), uri)
}*/
}

private fun clearPreview() {/* binding.previewWindow.visibility = View.GONE
binding.videoViewer.visibility = View.GONE
binding.videoViewer.visibility = View.VISIBLE
binding.controllerView.removeAllViews()*/
}


private fun aspectRatio(width: Int, height: Int): Int {
val previewRatio = max(width, height).toDouble() / min(width, height)
if (abs(previewRatio - CameraConstant.RATIO_4_3_VALUE) <= abs(previewRatio - CameraConstant.RATIO_16_9_VALUE)) {
Expand Down
24 changes: 24 additions & 0 deletions app/src/main/res/layout-land/fragment_camera.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,30 @@
</LinearLayout>


<androidx.cardview.widget.CardView
android:id="@+id/pnlPreview"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:elevation="12dp"
android:visibility="gone"
app:cardCornerRadius="25dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/photoButton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">

<ImageView
android:id="@+id/previewImage"
android:layout_width="match_parent"
android:layout_height="50dp"
android:contentDescription="preview"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
</androidx.cardview.widget.CardView>


<FrameLayout
android:id="@+id/photoButton"
android:layout_width="90dp"
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/res/layout-land/fragment_video.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,29 @@
android:src="@drawable/ic_sync_white" />
</LinearLayout>

<androidx.cardview.widget.CardView
android:id="@+id/pnlPreview"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:elevation="12dp"
android:visibility="gone"
app:cardCornerRadius="25dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/pnlStartRecording"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">

<ImageView
android:id="@+id/previewImage"
android:layout_width="match_parent"
android:layout_height="50dp"
android:contentDescription="preview"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
</androidx.cardview.widget.CardView>


<FrameLayout
android:id="@+id/pnlStartRecording"
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/res/layout-sw600dp/fragment_camera.xml
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,29 @@
</androidx.constraintlayout.widget.ConstraintLayout>


<androidx.cardview.widget.CardView
android:id="@+id/pnlPreview"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"
android:layout_gravity="center|bottom"
android:layout_marginBottom="200dp"
android:elevation="12dp"
android:gravity="center"
android:visibility="gone"
app:cardCornerRadius="45dp"
tools:visibility="visible">

<ImageView
android:id="@+id/previewImage"
android:layout_width="match_parent"
android:layout_height="80dp"
android:contentDescription="preview"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
</androidx.cardview.widget.CardView>


<com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBarWrapper
android:id="@+id/zoomSeekWrapper"
android:layout_width="50dp"
Expand Down
Loading

0 comments on commit 732d89a

Please sign in to comment.