mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-02-03 16:47:29 +01:00
fix: implemented a fix to allow video recording to user selected sdcard folder.
This commit is contained in:
parent
9a5dd6b4b1
commit
e466196135
@ -8,7 +8,7 @@ import java.util.*
|
||||
|
||||
val Context.config: Config get() = Config.newInstance(applicationContext)
|
||||
|
||||
fun Context.getOutputMediaFile(isPhoto: Boolean): String {
|
||||
fun Context.getOutputMediaFilePath(isPhoto: Boolean): String {
|
||||
val mediaStorageDir = File(config.savePhotosFolder)
|
||||
|
||||
if (!mediaStorageDir.exists()) {
|
||||
@ -24,6 +24,14 @@ fun Context.getOutputMediaFile(isPhoto: Boolean): String {
|
||||
"${mediaStorageDir.path}/$mediaName.mp4"
|
||||
}
|
||||
}
|
||||
fun Context.getOutputMediaFileName(isPhoto: Boolean): String {
|
||||
val mediaName = getRandomMediaName(isPhoto)
|
||||
return if (isPhoto) {
|
||||
"$mediaName.jpg"
|
||||
} else {
|
||||
"$mediaName.mp4"
|
||||
}
|
||||
}
|
||||
|
||||
fun getRandomMediaName(isPhoto: Boolean): String {
|
||||
val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
|
||||
|
@ -4,9 +4,11 @@ import android.content.ContentValues
|
||||
import android.net.Uri
|
||||
import android.os.Environment
|
||||
import android.os.ParcelFileDescriptor
|
||||
import android.provider.DocumentsContract
|
||||
import android.provider.MediaStore
|
||||
import com.simplemobiletools.camera.extensions.config
|
||||
import com.simplemobiletools.camera.extensions.getOutputMediaFile
|
||||
import com.simplemobiletools.camera.extensions.getOutputMediaFileName
|
||||
import com.simplemobiletools.camera.extensions.getOutputMediaFilePath
|
||||
import com.simplemobiletools.camera.extensions.getRandomMediaName
|
||||
import com.simplemobiletools.camera.models.MediaOutput
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
@ -20,7 +22,7 @@ class MediaOutputHelper(
|
||||
private val activity: BaseSimpleActivity,
|
||||
private val errorHandler: CameraErrorHandler,
|
||||
private val outputUri: Uri?,
|
||||
private val is3rdPartyIntent: Boolean,
|
||||
private val is3rdPartyIntent: Boolean
|
||||
) {
|
||||
|
||||
companion object {
|
||||
@ -121,7 +123,7 @@ class MediaOutputHelper(
|
||||
var mediaOutput: MediaOutput.OutputStreamMediaOutput? = null
|
||||
val canWrite = canWriteToFilePath(mediaStorageDir)
|
||||
if (canWrite) {
|
||||
val path = activity.getOutputMediaFile(true)
|
||||
val path = activity.getOutputMediaFilePath(true)
|
||||
val uri = getUriForFilePath(path)
|
||||
val outputStream = activity.getFileOutputStreamSync(path, path.getMimeType())
|
||||
if (uri != null && outputStream != null) {
|
||||
@ -144,14 +146,16 @@ class MediaOutputHelper(
|
||||
var mediaOutput: MediaOutput.FileDescriptorMediaOutput? = null
|
||||
val canWrite = canWriteToFilePath(mediaStorageDir)
|
||||
if (canWrite) {
|
||||
val path = activity.getOutputMediaFile(false)
|
||||
val uri = getUriForFilePath(path)
|
||||
if (uri != null) {
|
||||
val fileDescriptor = contentResolver.openFileDescriptor(uri, MODE)
|
||||
if (fileDescriptor != null) {
|
||||
mediaOutput = MediaOutput.FileDescriptorMediaOutput(fileDescriptor, uri)
|
||||
}
|
||||
}
|
||||
val parentUri = getUriForFilePath(mediaStorageDir) ?: return null
|
||||
val videoFileName = activity.getOutputMediaFileName(false)
|
||||
val documentUri = DocumentsContract.createDocument(
|
||||
contentResolver,
|
||||
parentUri,
|
||||
DocumentsContract.Document.COLUMN_MIME_TYPE,
|
||||
videoFileName
|
||||
) ?: return null
|
||||
val fileDescriptor = contentResolver.openFileDescriptor(documentUri, MODE) ?: return null
|
||||
mediaOutput = MediaOutput.FileDescriptorMediaOutput(fileDescriptor, documentUri)
|
||||
}
|
||||
return mediaOutput
|
||||
}
|
||||
@ -160,7 +164,7 @@ class MediaOutputHelper(
|
||||
var mediaOutput: MediaOutput.FileMediaOutput? = null
|
||||
val canWrite = canWriteToFilePath(mediaStorageDir)
|
||||
if (canWrite) {
|
||||
val path = activity.getOutputMediaFile(false)
|
||||
val path = activity.getOutputMediaFilePath(false)
|
||||
val uri = getUriForFilePath(path)
|
||||
if (uri != null) {
|
||||
mediaOutput = MediaOutput.FileMediaOutput(File(path), uri)
|
||||
|
@ -10,7 +10,7 @@ import androidx.exifinterface.media.ExifInterface
|
||||
import com.simplemobiletools.camera.R
|
||||
import com.simplemobiletools.camera.activities.MainActivity
|
||||
import com.simplemobiletools.camera.extensions.config
|
||||
import com.simplemobiletools.camera.extensions.getOutputMediaFile
|
||||
import com.simplemobiletools.camera.extensions.getOutputMediaFilePath
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
@ -30,7 +30,7 @@ class PhotoProcessor(
|
||||
path = if (saveUri != null) {
|
||||
saveUri.path!!
|
||||
} else {
|
||||
activity.getOutputMediaFile(true)
|
||||
activity.getOutputMediaFilePath(true)
|
||||
}
|
||||
|
||||
if (path.isEmpty()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user