feat: Fetch duration on recording start

This commit is contained in:
Myzel394 2023-10-29 11:17:44 +01:00
parent fac6f54d75
commit 536271109b
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
2 changed files with 26 additions and 1 deletions

View File

@ -1,5 +1,6 @@
package app.myzel394.alibi.services package app.myzel394.alibi.services
import android.media.MediaMetadataRetriever
import android.media.MediaRecorder import android.media.MediaRecorder
import app.myzel394.alibi.dataStore import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AudioRecorderSettings import app.myzel394.alibi.db.AudioRecorderSettings
@ -68,11 +69,35 @@ abstract class IntervalRecorderService : ExtraRecorderInformationService() {
counter = files.size counter = files.size
} }
private fun fetchRecordingTime() {
var oldAmount = 0L
for (file in outputFolder.listFiles() ?: emptyArray()) {
if (file.nameWithoutExtension.toIntOrNull() == null) {
continue
}
// It's better to at least get an approximate value, than to crash
runCatching {
val amount = MediaMetadataRetriever().run {
setDataSource(file.absolutePath)
extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)?.toIntOrNull()
?: 0
}
oldAmount += amount
}
}
recordingTime = oldAmount
}
override fun start() { override fun start() {
super.start() super.start()
outputFolder.mkdirs() outputFolder.mkdirs()
fetchCounterValue() fetchCounterValue()
fetchRecordingTime()
scope.launch { scope.launch {
dataStore.data.collectLatest { preferenceSettings -> dataStore.data.collectLatest { preferenceSettings ->

View File

@ -34,7 +34,7 @@ abstract class RecorderService : Service() {
var onStateChange: ((RecorderState) -> Unit)? = null var onStateChange: ((RecorderState) -> Unit)? = null
var recordingTime = 0L var recordingTime = 0L
private set protected set
private lateinit var recordingTimeTimer: ScheduledExecutorService private lateinit var recordingTimeTimer: ScheduledExecutorService
var onRecordingTimeChange: ((Long) -> Unit)? = null var onRecordingTimeChange: ((Long) -> Unit)? = null
var notificationDetails: RecorderNotificationHelper.NotificationDetails? = null var notificationDetails: RecorderNotificationHelper.NotificationDetails? = null