mirror of
https://github.com/SimpleMobileTools/Simple-Voice-Recorder.git
synced 2025-06-05 21:59:31 +02:00
adding a helper function for getting audio file uris
This commit is contained in:
@ -1,6 +1,5 @@
|
|||||||
package com.simplemobiletools.voicerecorder.dialogs
|
package com.simplemobiletools.voicerecorder.dialogs
|
||||||
|
|
||||||
import android.content.ContentUris
|
|
||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@ -9,6 +8,7 @@ import com.simplemobiletools.commons.extensions.*
|
|||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.commons.helpers.isQPlus
|
import com.simplemobiletools.commons.helpers.isQPlus
|
||||||
import com.simplemobiletools.voicerecorder.R
|
import com.simplemobiletools.voicerecorder.R
|
||||||
|
import com.simplemobiletools.voicerecorder.helpers.getAudioFileContentUri
|
||||||
import com.simplemobiletools.voicerecorder.models.Recording
|
import com.simplemobiletools.voicerecorder.models.Recording
|
||||||
import kotlinx.android.synthetic.main.dialog_rename_recording.view.*
|
import kotlinx.android.synthetic.main.dialog_rename_recording.view.*
|
||||||
|
|
||||||
@ -52,8 +52,6 @@ class RenameRecordingDialog(val activity: BaseSimpleActivity, val recording: Rec
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateMediaStoreTitle(recording: Recording, newTitle: String) {
|
private fun updateMediaStoreTitle(recording: Recording, newTitle: String) {
|
||||||
val baseUri = MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
|
|
||||||
val uri = ContentUris.withAppendedId(baseUri, recording.id.toLong())
|
|
||||||
val oldExtension = recording.title.getFilenameExtension()
|
val oldExtension = recording.title.getFilenameExtension()
|
||||||
val newDisplayName = "${newTitle.removeSuffix(".$oldExtension")}.$oldExtension"
|
val newDisplayName = "${newTitle.removeSuffix(".$oldExtension")}.$oldExtension"
|
||||||
|
|
||||||
@ -62,6 +60,6 @@ class RenameRecordingDialog(val activity: BaseSimpleActivity, val recording: Rec
|
|||||||
put(MediaStore.Audio.Media.DISPLAY_NAME, newDisplayName)
|
put(MediaStore.Audio.Media.DISPLAY_NAME, newDisplayName)
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.contentResolver.update(uri, values, null, null)
|
activity.contentResolver.update(getAudioFileContentUri(recording.id.toLong()), values, null, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.simplemobiletools.voicerecorder.fragments
|
package com.simplemobiletools.voicerecorder.fragments
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.ContentUris
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
@ -18,6 +17,7 @@ import com.simplemobiletools.voicerecorder.R
|
|||||||
import com.simplemobiletools.voicerecorder.activities.SimpleActivity
|
import com.simplemobiletools.voicerecorder.activities.SimpleActivity
|
||||||
import com.simplemobiletools.voicerecorder.adapters.RecordingsAdapter
|
import com.simplemobiletools.voicerecorder.adapters.RecordingsAdapter
|
||||||
import com.simplemobiletools.voicerecorder.extensions.config
|
import com.simplemobiletools.voicerecorder.extensions.config
|
||||||
|
import com.simplemobiletools.voicerecorder.helpers.getAudioFileContentUri
|
||||||
import com.simplemobiletools.voicerecorder.interfaces.RefreshRecordingsListener
|
import com.simplemobiletools.voicerecorder.interfaces.RefreshRecordingsListener
|
||||||
import com.simplemobiletools.voicerecorder.models.Events
|
import com.simplemobiletools.voicerecorder.models.Events
|
||||||
import com.simplemobiletools.voicerecorder.models.Recording
|
import com.simplemobiletools.voicerecorder.models.Recording
|
||||||
@ -194,24 +194,15 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getDurationFromUri(id: Long): Long {
|
private fun getDurationFromUri(id: Long): Long {
|
||||||
val recordingUri = ContentUris.withAppendedId(
|
|
||||||
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
|
|
||||||
id
|
|
||||||
)
|
|
||||||
|
|
||||||
val retriever = MediaMetadataRetriever()
|
val retriever = MediaMetadataRetriever()
|
||||||
retriever.setDataSource(context, recordingUri)
|
retriever.setDataSource(context, getAudioFileContentUri(id))
|
||||||
val time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)
|
val time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)
|
||||||
return Math.round(time.toLong() / 1000.toDouble())
|
return Math.round(time.toLong() / 1000.toDouble())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSizeFromUri(id: Long): Int {
|
private fun getSizeFromUri(id: Long): Int {
|
||||||
val recordingUri = ContentUris.withAppendedId(
|
val recordingUri = getAudioFileContentUri(id)
|
||||||
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
|
return context.contentResolver.openInputStream(recordingUri)?.available() ?: 0
|
||||||
id
|
|
||||||
)
|
|
||||||
|
|
||||||
return context.contentResolver.openInputStream(recordingUri)?.available()?.toInt() ?: 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initMediaPlayer() {
|
private fun initMediaPlayer() {
|
||||||
@ -234,17 +225,12 @@ class PlayerFragment(context: Context, attributeSet: AttributeSet) : MyViewPager
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun playRecording(recording: Recording) {
|
override fun playRecording(recording: Recording) {
|
||||||
val recordingUri = ContentUris.withAppendedId(
|
|
||||||
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
|
|
||||||
recording.id.toLong()
|
|
||||||
)
|
|
||||||
|
|
||||||
resetProgress(recording)
|
resetProgress(recording)
|
||||||
(recordings_list.adapter as RecordingsAdapter).updateCurrentRecording(recording.id)
|
(recordings_list.adapter as RecordingsAdapter).updateCurrentRecording(recording.id)
|
||||||
|
|
||||||
player!!.apply {
|
player!!.apply {
|
||||||
reset()
|
reset()
|
||||||
setDataSource(context, recordingUri)
|
setDataSource(context, getAudioFileContentUri(recording.id.toLong()))
|
||||||
prepare()
|
prepare()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
package com.simplemobiletools.voicerecorder.helpers
|
package com.simplemobiletools.voicerecorder.helpers
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.ContentUris
|
||||||
|
import android.net.Uri
|
||||||
|
import android.provider.MediaStore
|
||||||
|
import com.simplemobiletools.commons.helpers.isQPlus
|
||||||
|
|
||||||
const val RECORDER_RUNNING_NOTIF_ID = 10000
|
const val RECORDER_RUNNING_NOTIF_ID = 10000
|
||||||
|
|
||||||
private const val PATH = "com.simplemobiletools.voicerecorder.action."
|
private const val PATH = "com.simplemobiletools.voicerecorder.action."
|
||||||
@ -9,3 +15,14 @@ const val STOP_AMPLITUDE_UPDATE = PATH + "STOP_AMPLITUDE_UPDATE"
|
|||||||
// shared preferences
|
// shared preferences
|
||||||
const val HIDE_NOTIFICATION = "hide_notification"
|
const val HIDE_NOTIFICATION = "hide_notification"
|
||||||
const val SAVE_RECORDINGS = "save_recordings"
|
const val SAVE_RECORDINGS = "save_recordings"
|
||||||
|
|
||||||
|
@SuppressLint("InlinedApi")
|
||||||
|
fun getAudioFileContentUri(id: Long): Uri {
|
||||||
|
val baseUri = if (isQPlus()) {
|
||||||
|
MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
|
||||||
|
} else {
|
||||||
|
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
|
||||||
|
}
|
||||||
|
|
||||||
|
return ContentUris.withAppendedId(baseUri, id)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user