1
0
mirror of https://github.com/vector-im/riotX-android synced 2025-10-05 15:52:47 +02:00

Fix lint warning: check permission before recording audio

This commit is contained in:
Benoit Marty
2025-07-11 18:12:57 +02:00
parent fd67cacd25
commit e5622084ce
2 changed files with 12 additions and 2 deletions

View File

@@ -7,6 +7,7 @@
package im.vector.app.features.voice
import android.Manifest
import android.content.Context
import android.media.AudioFormat
import android.media.AudioRecord
@@ -15,6 +16,7 @@ import android.media.audiofx.AutomaticGainControl
import android.media.audiofx.NoiseSuppressor
import android.os.Build
import android.widget.Toast
import im.vector.app.core.utils.PermissionChecker
import io.element.android.opusencoder.OggOpusEncoder
import io.element.android.opusencoder.configuration.SampleRate
import kotlinx.coroutines.CoroutineScope
@@ -22,6 +24,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.extensions.tryOrNull
import timber.log.Timber
import kotlin.coroutines.CoroutineContext
/**
@@ -31,6 +34,7 @@ class VoiceRecorderL(
private val context: Context,
coroutineContext: CoroutineContext,
private val codec: OggOpusEncoder,
private val permissionChecker: PermissionChecker,
) : AbstractVoiceRecorder(context) {
companion object {
@@ -127,7 +131,11 @@ class VoiceRecorderL(
bufferSizeInShorts = AudioRecord.getMinBufferSize(SAMPLE_RATE.value, channelConfig, format)
// Buffer is created as a ShortArray, but AudioRecord needs the size in bytes
val bufferSizeInBytes = bufferSizeInShorts * 2
audioRecorder = AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE.value, channelConfig, format, bufferSizeInBytes)
if (permissionChecker.checkPermission(Manifest.permission.RECORD_AUDIO)) {
audioRecorder = AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE.value, channelConfig, format, bufferSizeInBytes)
} else {
Timber.w("Not allowed to record audio.")
}
}
private fun calculateMaxAmplitude(buffer: ShortArray) {

View File

@@ -13,6 +13,7 @@ import android.media.MediaFormat
import android.os.Build
import androidx.annotation.ChecksSdkIntAtLeast
import androidx.annotation.VisibleForTesting
import im.vector.app.core.utils.PermissionChecker
import im.vector.app.features.VectorFeatures
import io.element.android.opusencoder.OggOpusEncoder
import kotlinx.coroutines.Dispatchers
@@ -23,12 +24,13 @@ class VoiceRecorderProvider @Inject constructor(
private val context: Context,
private val vectorFeatures: VectorFeatures,
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
private val permissionChecker: PermissionChecker,
) {
fun provideVoiceRecorder(): VoiceRecorder {
return if (useNativeRecorder()) {
VoiceRecorderQ(context)
} else {
VoiceRecorderL(context, Dispatchers.IO, OggOpusEncoder.create())
VoiceRecorderL(context, Dispatchers.IO, OggOpusEncoder.create(), permissionChecker)
}
}