removing some no longer needed stuff
This commit is contained in:
parent
8f80fcc83f
commit
a2828b69c4
|
@ -5,6 +5,7 @@ import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.hardware.SensorManager
|
import android.hardware.SensorManager
|
||||||
|
import android.hardware.camera2.CameraCharacteristics
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
@ -31,7 +32,6 @@ import com.simplemobiletools.camera.extensions.toFlashModeId
|
||||||
import com.simplemobiletools.camera.helpers.*
|
import com.simplemobiletools.camera.helpers.*
|
||||||
import com.simplemobiletools.camera.implementations.CameraXInitializer
|
import com.simplemobiletools.camera.implementations.CameraXInitializer
|
||||||
import com.simplemobiletools.camera.implementations.CameraXPreviewListener
|
import com.simplemobiletools.camera.implementations.CameraXPreviewListener
|
||||||
import com.simplemobiletools.camera.implementations.MyCameraImpl
|
|
||||||
import com.simplemobiletools.camera.interfaces.MyPreview
|
import com.simplemobiletools.camera.interfaces.MyPreview
|
||||||
import com.simplemobiletools.camera.models.ResolutionOption
|
import com.simplemobiletools.camera.models.ResolutionOption
|
||||||
import com.simplemobiletools.camera.views.FocusCircleView
|
import com.simplemobiletools.camera.views.FocusCircleView
|
||||||
|
@ -55,7 +55,6 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
|
||||||
private lateinit var flashModeScene: Scene
|
private lateinit var flashModeScene: Scene
|
||||||
private lateinit var mOrientationEventListener: OrientationEventListener
|
private lateinit var mOrientationEventListener: OrientationEventListener
|
||||||
private lateinit var mFocusCircleView: FocusCircleView
|
private lateinit var mFocusCircleView: FocusCircleView
|
||||||
private lateinit var mCameraImpl: MyCameraImpl
|
|
||||||
private var mPreview: MyPreview? = null
|
private var mPreview: MyPreview? = null
|
||||||
private var mediaSizeToggleGroup: MaterialButtonToggleGroup? = null
|
private var mediaSizeToggleGroup: MaterialButtonToggleGroup? = null
|
||||||
private var mPreviewUri: Uri? = null
|
private var mPreviewUri: Uri? = null
|
||||||
|
@ -181,8 +180,7 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
|
||||||
mIsHardwareShutterHandled = false
|
mIsHardwareShutterHandled = false
|
||||||
mCurrVideoRecTimer = 0
|
mCurrVideoRecTimer = 0
|
||||||
mLastHandledOrientation = 0
|
mLastHandledOrientation = 0
|
||||||
mCameraImpl = MyCameraImpl(applicationContext)
|
config.lastUsedCamera = CameraCharacteristics.LENS_FACING_BACK.toString()
|
||||||
config.lastUsedCamera = mCameraImpl.getBackCameraId().toString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
||||||
|
@ -330,8 +328,12 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
|
||||||
checkImageCaptureIntent()
|
checkImageCaptureIntent()
|
||||||
mPreview?.setIsImageCaptureIntent(isImageCaptureIntent())
|
mPreview?.setIsImageCaptureIntent(isImageCaptureIntent())
|
||||||
|
|
||||||
val imageDrawable =
|
val imageDrawable = if (config.lastUsedCamera == CameraCharacteristics.LENS_FACING_BACK.toString()) {
|
||||||
if (config.lastUsedCamera == mCameraImpl.getBackCameraId().toString()) R.drawable.ic_camera_front_vector else R.drawable.ic_camera_rear_vector
|
R.drawable.ic_camera_front_vector
|
||||||
|
} else {
|
||||||
|
R.drawable.ic_camera_rear_vector
|
||||||
|
}
|
||||||
|
|
||||||
toggle_camera.setImageResource(imageDrawable)
|
toggle_camera.setImageResource(imageDrawable)
|
||||||
|
|
||||||
mFocusCircleView = FocusCircleView(applicationContext)
|
mFocusCircleView = FocusCircleView(applicationContext)
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
package com.simplemobiletools.camera.dialogs
|
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
|
||||||
import com.simplemobiletools.camera.R
|
|
||||||
import com.simplemobiletools.camera.activities.SimpleActivity
|
|
||||||
import com.simplemobiletools.camera.extensions.config
|
|
||||||
import com.simplemobiletools.camera.models.MySize
|
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|
||||||
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
|
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_photo
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_photo_holder
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_video
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_video_holder
|
|
||||||
|
|
||||||
class ChangeResolutionDialog(
|
|
||||||
val activity: SimpleActivity, val isFrontCamera: Boolean, val photoResolutions: ArrayList<MySize>,
|
|
||||||
val videoResolutions: ArrayList<MySize>, val openVideoResolutions: Boolean, val callback: () -> Unit
|
|
||||||
) {
|
|
||||||
private var dialog: AlertDialog? = null
|
|
||||||
private val config = activity.config
|
|
||||||
|
|
||||||
init {
|
|
||||||
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_change_resolution, null).apply {
|
|
||||||
setupPhotoResolutionPicker(this)
|
|
||||||
setupVideoResolutionPicker(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
activity.getAlertDialogBuilder()
|
|
||||||
.setPositiveButton(R.string.ok, null)
|
|
||||||
.setOnDismissListener { callback() }
|
|
||||||
.apply {
|
|
||||||
val titleId = if (isFrontCamera) R.string.front_camera else R.string.back_camera
|
|
||||||
activity.setupDialogStuff(view, this, titleId) { alertDialog ->
|
|
||||||
dialog = alertDialog
|
|
||||||
if (openVideoResolutions) {
|
|
||||||
view.change_resolution_video_holder.performClick()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupPhotoResolutionPicker(view: View) {
|
|
||||||
val items = getFormattedResolutions(photoResolutions)
|
|
||||||
var selectionIndex = if (isFrontCamera) config.frontPhotoResIndex else config.backPhotoResIndex
|
|
||||||
selectionIndex = Math.max(selectionIndex, 0)
|
|
||||||
|
|
||||||
view.change_resolution_photo_holder.setOnClickListener {
|
|
||||||
RadioGroupDialog(activity, items, selectionIndex) {
|
|
||||||
selectionIndex = it as Int
|
|
||||||
view.change_resolution_photo.text = items[selectionIndex].title
|
|
||||||
if (isFrontCamera) {
|
|
||||||
config.frontPhotoResIndex = it
|
|
||||||
} else {
|
|
||||||
config.backPhotoResIndex = it
|
|
||||||
}
|
|
||||||
dialog?.dismiss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
view.change_resolution_photo.text = items.getOrNull(selectionIndex)?.title
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupVideoResolutionPicker(view: View) {
|
|
||||||
val items = getFormattedResolutions(videoResolutions)
|
|
||||||
var selectionIndex = if (isFrontCamera) config.frontVideoResIndex else config.backVideoResIndex
|
|
||||||
|
|
||||||
view.change_resolution_video_holder.setOnClickListener {
|
|
||||||
RadioGroupDialog(activity, items, selectionIndex) {
|
|
||||||
selectionIndex = it as Int
|
|
||||||
view.change_resolution_video.text = items[selectionIndex].title
|
|
||||||
if (isFrontCamera) {
|
|
||||||
config.frontVideoResIndex = it
|
|
||||||
} else {
|
|
||||||
config.backVideoResIndex = it
|
|
||||||
}
|
|
||||||
dialog?.dismiss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
view.change_resolution_video.text = items.getOrNull(selectionIndex)?.title
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getFormattedResolutions(resolutions: List<MySize>): ArrayList<RadioItem> {
|
|
||||||
val items = ArrayList<RadioItem>(resolutions.size)
|
|
||||||
val sorted = resolutions.sortedByDescending { it.width * it.height }
|
|
||||||
sorted.forEachIndexed { index, size ->
|
|
||||||
val megapixels = String.format("%.1f", (size.width * size.height.toFloat()) / 1000000)
|
|
||||||
val aspectRatio = size.getAspectRatio(activity)
|
|
||||||
items.add(RadioItem(index, "${size.width} x ${size.height} ($megapixels MP, $aspectRatio)"))
|
|
||||||
}
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,103 +0,0 @@
|
||||||
package com.simplemobiletools.camera.dialogs
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
|
||||||
import com.simplemobiletools.camera.R
|
|
||||||
import com.simplemobiletools.camera.extensions.config
|
|
||||||
import com.simplemobiletools.camera.models.MySize
|
|
||||||
import com.simplemobiletools.camera.models.VideoQuality
|
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|
||||||
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
|
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_photo
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_photo_holder
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_video
|
|
||||||
import kotlinx.android.synthetic.main.dialog_change_resolution.view.change_resolution_video_holder
|
|
||||||
|
|
||||||
class ChangeResolutionDialogX(
|
|
||||||
private val activity: Activity,
|
|
||||||
private val isFrontCamera: Boolean,
|
|
||||||
private val photoResolutions: List<MySize> = listOf(),
|
|
||||||
private val videoResolutions: List<VideoQuality>,
|
|
||||||
private val callback: () -> Unit,
|
|
||||||
) {
|
|
||||||
private var dialog: AlertDialog? = null
|
|
||||||
private val config = activity.config
|
|
||||||
|
|
||||||
init {
|
|
||||||
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_change_resolution, null).apply {
|
|
||||||
setupPhotoResolutionPicker(this)
|
|
||||||
setupVideoResolutionPicker(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
activity.getAlertDialogBuilder()
|
|
||||||
.setPositiveButton(R.string.ok, null)
|
|
||||||
.apply {
|
|
||||||
val titleId = if (isFrontCamera) R.string.front_camera else R.string.back_camera
|
|
||||||
activity.setupDialogStuff(view, this, titleId) { alertDialog ->
|
|
||||||
dialog = alertDialog
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupPhotoResolutionPicker(view: View) {
|
|
||||||
val items = photoResolutions.mapIndexed { index, resolution ->
|
|
||||||
val megapixels = resolution.megaPixels
|
|
||||||
val aspectRatio = resolution.getAspectRatio(activity)
|
|
||||||
if (resolution.isFullScreen) {
|
|
||||||
//TODO: Extract to string resource
|
|
||||||
RadioItem(index, "Full")
|
|
||||||
} else {
|
|
||||||
RadioItem(index, "${resolution.width} x ${resolution.height} ($megapixels MP, $aspectRatio)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var selectionIndex = if (isFrontCamera) config.frontPhotoResIndex else config.backPhotoResIndex
|
|
||||||
selectionIndex = selectionIndex.coerceAtLeast(0)
|
|
||||||
|
|
||||||
view.change_resolution_photo_holder.setOnClickListener {
|
|
||||||
RadioGroupDialog(activity, ArrayList(items), selectionIndex) {
|
|
||||||
selectionIndex = it as Int
|
|
||||||
view.change_resolution_photo.text = items[selectionIndex].title
|
|
||||||
if (isFrontCamera) {
|
|
||||||
config.frontPhotoResIndex = it
|
|
||||||
} else {
|
|
||||||
config.backPhotoResIndex = it
|
|
||||||
}
|
|
||||||
dialog?.dismiss()
|
|
||||||
callback.invoke()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
view.change_resolution_photo.text = items.getOrNull(selectionIndex)?.title
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupVideoResolutionPicker(view: View) {
|
|
||||||
val items = videoResolutions.mapIndexed { index, videoQuality ->
|
|
||||||
val megapixels = videoQuality.megaPixels
|
|
||||||
val aspectRatio = videoQuality.getAspectRatio(activity)
|
|
||||||
RadioItem(index, "${videoQuality.width} x ${videoQuality.height} ($megapixels MP, $aspectRatio)")
|
|
||||||
}
|
|
||||||
|
|
||||||
var selectionIndex = if (isFrontCamera) config.frontVideoResIndex else config.backVideoResIndex
|
|
||||||
selectionIndex = selectionIndex.coerceAtLeast(0)
|
|
||||||
|
|
||||||
view.change_resolution_video_holder.setOnClickListener {
|
|
||||||
RadioGroupDialog(activity, ArrayList(items), selectionIndex) {
|
|
||||||
selectionIndex = it as Int
|
|
||||||
val selectedItem = items[selectionIndex]
|
|
||||||
view.change_resolution_video.text = selectedItem.title
|
|
||||||
if (isFrontCamera) {
|
|
||||||
config.frontVideoResIndex = selectionIndex
|
|
||||||
} else {
|
|
||||||
config.backVideoResIndex = selectionIndex
|
|
||||||
}
|
|
||||||
dialog?.dismiss()
|
|
||||||
callback.invoke()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val selectedItem = items.getOrNull(selectionIndex)
|
|
||||||
view.change_resolution_video.text = selectedItem?.title
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -34,15 +34,6 @@ fun Int.toFlashModeId(): Int {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Int.idToAppFlashMode(): Int {
|
|
||||||
return when (this) {
|
|
||||||
R.id.flash_on -> FLASH_ON
|
|
||||||
R.id.flash_off -> FLASH_OFF
|
|
||||||
R.id.flash_auto -> FLASH_AUTO
|
|
||||||
else -> throw IllegalArgumentException("Unknown mode: $this")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Int.toCameraSelector(): CameraSelector {
|
fun Int.toCameraSelector(): CameraSelector {
|
||||||
return if (this == CameraSelector.LENS_FACING_FRONT) {
|
return if (this == CameraSelector.LENS_FACING_FRONT) {
|
||||||
CameraSelector.DEFAULT_FRONT_CAMERA
|
CameraSelector.DEFAULT_FRONT_CAMERA
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.simplemobiletools.camera.extensions
|
package com.simplemobiletools.camera.extensions
|
||||||
|
|
||||||
import androidx.camera.core.AspectRatio
|
|
||||||
import androidx.camera.video.Quality
|
import androidx.camera.video.Quality
|
||||||
import com.simplemobiletools.camera.models.VideoQuality
|
import com.simplemobiletools.camera.models.VideoQuality
|
||||||
|
|
||||||
|
@ -22,11 +21,3 @@ fun VideoQuality.toCameraXQuality(): Quality {
|
||||||
VideoQuality.SD -> Quality.SD
|
VideoQuality.SD -> Quality.SD
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Quality.getAspectRatio(): Int {
|
|
||||||
return when(this) {
|
|
||||||
Quality.UHD, Quality.FHD, Quality.HD -> AspectRatio.RATIO_16_9
|
|
||||||
Quality.SD -> AspectRatio.RATIO_4_3
|
|
||||||
else -> throw IllegalArgumentException("Unsupported quality: $this")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ const val BACK_PHOTO_RESOLUTION_INDEX = "back_photo_resolution_index_2"
|
||||||
const val BACK_VIDEO_RESOLUTION_INDEX = "back_video_resolution_index_2"
|
const val BACK_VIDEO_RESOLUTION_INDEX = "back_video_resolution_index_2"
|
||||||
const val FRONT_PHOTO_RESOLUTION_INDEX = "front_photo_resolution_index_2"
|
const val FRONT_PHOTO_RESOLUTION_INDEX = "front_photo_resolution_index_2"
|
||||||
const val FRONT_VIDEO_RESOLUTION_INDEX = "front_video_resolution_index_2"
|
const val FRONT_VIDEO_RESOLUTION_INDEX = "front_video_resolution_index_2"
|
||||||
const val KEEP_SETTINGS_VISIBLE = "keep_settings_visible"
|
|
||||||
const val SAVE_PHOTO_METADATA = "save_photo_metadata"
|
const val SAVE_PHOTO_METADATA = "save_photo_metadata"
|
||||||
const val PHOTO_QUALITY = "photo_quality"
|
const val PHOTO_QUALITY = "photo_quality"
|
||||||
|
|
||||||
|
@ -25,17 +24,6 @@ const val FLASH_OFF = 0
|
||||||
const val FLASH_ON = 1
|
const val FLASH_ON = 1
|
||||||
const val FLASH_AUTO = 2
|
const val FLASH_AUTO = 2
|
||||||
|
|
||||||
// camera states
|
|
||||||
const val STATE_INIT = 0
|
|
||||||
const val STATE_PREVIEW = 1
|
|
||||||
const val STATE_PICTURE_TAKEN = 2
|
|
||||||
const val STATE_WAITING_LOCK = 3
|
|
||||||
const val STATE_WAITING_PRECAPTURE = 4
|
|
||||||
const val STATE_WAITING_NON_PRECAPTURE = 5
|
|
||||||
const val STATE_STARTING_RECORDING = 6
|
|
||||||
const val STATE_STOPING_RECORDING = 7
|
|
||||||
const val STATE_RECORDING = 8
|
|
||||||
|
|
||||||
fun compensateDeviceRotation(orientation: Int) = when (orientation) {
|
fun compensateDeviceRotation(orientation: Int) = when (orientation) {
|
||||||
ORIENT_LANDSCAPE_LEFT -> 270
|
ORIENT_LANDSCAPE_LEFT -> 270
|
||||||
ORIENT_LANDSCAPE_RIGHT -> 90
|
ORIENT_LANDSCAPE_RIGHT -> 90
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package com.simplemobiletools.camera.helpers
|
package com.simplemobiletools.camera.helpers
|
||||||
|
|
||||||
class MediaSizeStore(
|
class MediaSizeStore(private val config: Config) {
|
||||||
private val config: Config,
|
|
||||||
) {
|
|
||||||
|
|
||||||
fun storeSize(isPhotoCapture: Boolean, isFrontCamera: Boolean, currentIndex: Int) {
|
fun storeSize(isPhotoCapture: Boolean, isFrontCamera: Boolean, currentIndex: Int) {
|
||||||
if (isPhotoCapture) {
|
if (isPhotoCapture) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.simplemobiletools.camera.helpers
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
|
|
||||||
interface TabSelectedListener : TabLayout.OnTabSelectedListener {
|
interface TabSelectedListener : TabLayout.OnTabSelectedListener {
|
||||||
override fun onTabReselected(tab: TabLayout.Tab?){}
|
override fun onTabReselected(tab: TabLayout.Tab?) {}
|
||||||
|
|
||||||
override fun onTabUnselected(tab: TabLayout.Tab?) {}
|
override fun onTabUnselected(tab: TabLayout.Tab?) {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ import com.simplemobiletools.commons.extensions.showErrorToast
|
||||||
class VideoQualityManager(
|
class VideoQualityManager(
|
||||||
private val activity: AppCompatActivity,
|
private val activity: AppCompatActivity,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val QUALITIES = listOf(Quality.UHD, Quality.FHD, Quality.HD, Quality.SD)
|
private val QUALITIES = listOf(Quality.UHD, Quality.FHD, Quality.HD, Quality.SD)
|
||||||
private val CAMERA_SELECTORS = arrayOf(CameraSelector.DEFAULT_BACK_CAMERA, CameraSelector.DEFAULT_FRONT_CAMERA)
|
private val CAMERA_SELECTORS = arrayOf(CameraSelector.DEFAULT_BACK_CAMERA, CameraSelector.DEFAULT_FRONT_CAMERA)
|
||||||
|
|
|
@ -23,7 +23,6 @@ import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.window.layout.WindowMetricsCalculator
|
import androidx.window.layout.WindowMetricsCalculator
|
||||||
import com.bumptech.glide.load.ImageHeaderParser.UNKNOWN_ORIENTATION
|
import com.bumptech.glide.load.ImageHeaderParser.UNKNOWN_ORIENTATION
|
||||||
import com.simplemobiletools.camera.R
|
import com.simplemobiletools.camera.R
|
||||||
import com.simplemobiletools.camera.dialogs.ChangeResolutionDialogX
|
|
||||||
import com.simplemobiletools.camera.extensions.*
|
import com.simplemobiletools.camera.extensions.*
|
||||||
import com.simplemobiletools.camera.helpers.*
|
import com.simplemobiletools.camera.helpers.*
|
||||||
import com.simplemobiletools.camera.interfaces.MyPreview
|
import com.simplemobiletools.camera.interfaces.MyPreview
|
||||||
|
@ -326,21 +325,6 @@ class CameraXPreview(
|
||||||
orientationEventListener.disable()
|
orientationEventListener.disable()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showChangeResolutionDialog() {
|
|
||||||
val oldQuality = videoQualityManager.getUserSelectedQuality(cameraSelector)
|
|
||||||
ChangeResolutionDialogX(
|
|
||||||
activity,
|
|
||||||
isFrontCameraInUse(),
|
|
||||||
imageQualityManager.getSupportedResolutions(cameraSelector),
|
|
||||||
videoQualityManager.getSupportedQualities(cameraSelector),
|
|
||||||
) {
|
|
||||||
if (oldQuality != videoQualityManager.getUserSelectedQuality(cameraSelector)) {
|
|
||||||
currentRecording?.stop()
|
|
||||||
}
|
|
||||||
startCamera()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun showChangeResolution() {
|
override fun showChangeResolution() {
|
||||||
val selectedResolution = if (isPhotoCapture) {
|
val selectedResolution = if (isPhotoCapture) {
|
||||||
imageQualityManager.getUserSelectedResolution(cameraSelector).toResolutionOption()
|
imageQualityManager.getUserSelectedResolution(cameraSelector).toResolutionOption()
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package com.simplemobiletools.camera.implementations
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.hardware.camera2.CameraCharacteristics
|
|
||||||
import android.hardware.camera2.CameraManager
|
|
||||||
|
|
||||||
class MyCameraImpl(val context: Context) {
|
|
||||||
fun getFrontCameraId() = CameraCharacteristics.LENS_FACING_FRONT
|
|
||||||
|
|
||||||
fun getBackCameraId() = CameraCharacteristics.LENS_FACING_BACK
|
|
||||||
|
|
||||||
fun getCountOfCameras(): Int? {
|
|
||||||
return try {
|
|
||||||
val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
|
||||||
manager.cameraIdList.size
|
|
||||||
} catch (e: Exception) {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,20 +4,12 @@ import android.net.Uri
|
||||||
|
|
||||||
interface MyPreview {
|
interface MyPreview {
|
||||||
|
|
||||||
fun onResumed() = Unit
|
|
||||||
|
|
||||||
fun onPaused() = Unit
|
|
||||||
|
|
||||||
fun setTargetUri(uri: Uri) = Unit
|
fun setTargetUri(uri: Uri) = Unit
|
||||||
|
|
||||||
fun setIsImageCaptureIntent(isImageCaptureIntent: Boolean) = Unit
|
fun setIsImageCaptureIntent(isImageCaptureIntent: Boolean) = Unit
|
||||||
|
|
||||||
fun setFlashlightState(state: Int) = Unit
|
fun setFlashlightState(state: Int) = Unit
|
||||||
|
|
||||||
fun getCameraState(): Int = 0
|
|
||||||
|
|
||||||
fun showChangeResolutionDialog()
|
|
||||||
|
|
||||||
fun toggleFrontBackCamera()
|
fun toggleFrontBackCamera()
|
||||||
|
|
||||||
fun toggleFlashlight() = Unit
|
fun toggleFlashlight() = Unit
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package com.simplemobiletools.camera.models
|
|
||||||
|
|
||||||
import android.graphics.Rect
|
|
||||||
|
|
||||||
data class FocusArea(val rect: Rect, val weight: Int)
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.simplemobiletools.camera.models
|
package com.simplemobiletools.camera.models
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Size
|
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.annotation.IdRes
|
import androidx.annotation.IdRes
|
||||||
import com.simplemobiletools.camera.R
|
import com.simplemobiletools.camera.R
|
||||||
|
@ -84,6 +83,4 @@ data class MySize(val width: Int, val height: Int, val isFullScreen: Boolean = f
|
||||||
fun toResolutionOption(): ResolutionOption {
|
fun toResolutionOption(): ResolutionOption {
|
||||||
return ResolutionOption(buttonViewId = getButtonId(), imageDrawableResId = getImageResId())
|
return ResolutionOption(buttonViewId = getButtonId(), imageDrawableResId = getImageResId())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun toSize() = Size(width, height)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
package com.simplemobiletools.camera.views
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.TextureView
|
|
||||||
|
|
||||||
// taken from the official Camera2 sample at https://github.com/googlesamples/android-Camera2Basic
|
|
||||||
class AutoFitTextureView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : TextureView(context, attrs, defStyle) {
|
|
||||||
|
|
||||||
private var mRatioWidth = 0
|
|
||||||
private var mRatioHeight = 0
|
|
||||||
|
|
||||||
fun setAspectRatio(width: Int, height: Int) {
|
|
||||||
if (width < 0 || height < 0) {
|
|
||||||
throw IllegalArgumentException("Size cannot be negative.")
|
|
||||||
}
|
|
||||||
|
|
||||||
mRatioWidth = width
|
|
||||||
mRatioHeight = height
|
|
||||||
requestLayout()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
|
||||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
|
|
||||||
val width = MeasureSpec.getSize(widthMeasureSpec)
|
|
||||||
val height = MeasureSpec.getSize(heightMeasureSpec)
|
|
||||||
|
|
||||||
if (mRatioWidth == 0 || mRatioHeight == 0) {
|
|
||||||
setMeasuredDimension(width, height)
|
|
||||||
} else {
|
|
||||||
if (width < height * mRatioWidth / mRatioHeight) {
|
|
||||||
setMeasuredDimension(width, width * mRatioHeight / mRatioWidth)
|
|
||||||
} else {
|
|
||||||
setMeasuredDimension(height * mRatioWidth / mRatioHeight, height)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,59 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/change_resolution_holder"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/change_resolution_photo_holder"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
|
||||||
android:padding="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
|
||||||
android:id="@+id/change_resolution_photo_label"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_toStartOf="@+id/change_resolution_photo"
|
|
||||||
android:text="@string/photo" />
|
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
|
||||||
android:id="@+id/change_resolution_photo"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:background="@null"
|
|
||||||
android:clickable="false" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/change_resolution_video_holder"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
|
||||||
android:padding="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
|
||||||
android:id="@+id/change_resolution_video_label"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_toStartOf="@+id/change_resolution_video"
|
|
||||||
android:text="@string/video" />
|
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
|
||||||
android:id="@+id/change_resolution_video"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:background="@null"
|
|
||||||
android:clickable="false" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
</LinearLayout>
|
|
Loading…
Reference in New Issue