Skip to content

Commit e562208

Browse files
committed
Fix lint warning: check permission before recording audio
1 parent fd67cac commit e562208

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

vector/src/main/java/im/vector/app/features/voice/VoiceRecorderL.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package im.vector.app.features.voice
99

10+
import android.Manifest
1011
import android.content.Context
1112
import android.media.AudioFormat
1213
import android.media.AudioRecord
@@ -15,13 +16,15 @@ import android.media.audiofx.AutomaticGainControl
1516
import android.media.audiofx.NoiseSuppressor
1617
import android.os.Build
1718
import android.widget.Toast
19+
import im.vector.app.core.utils.PermissionChecker
1820
import io.element.android.opusencoder.OggOpusEncoder
1921
import io.element.android.opusencoder.configuration.SampleRate
2022
import kotlinx.coroutines.CoroutineScope
2123
import kotlinx.coroutines.Job
2224
import kotlinx.coroutines.isActive
2325
import kotlinx.coroutines.launch
2426
import org.matrix.android.sdk.api.extensions.tryOrNull
27+
import timber.log.Timber
2528
import kotlin.coroutines.CoroutineContext
2629

2730
/**
@@ -31,6 +34,7 @@ class VoiceRecorderL(
3134
private val context: Context,
3235
coroutineContext: CoroutineContext,
3336
private val codec: OggOpusEncoder,
37+
private val permissionChecker: PermissionChecker,
3438
) : AbstractVoiceRecorder(context) {
3539

3640
companion object {
@@ -127,7 +131,11 @@ class VoiceRecorderL(
127131
bufferSizeInShorts = AudioRecord.getMinBufferSize(SAMPLE_RATE.value, channelConfig, format)
128132
// Buffer is created as a ShortArray, but AudioRecord needs the size in bytes
129133
val bufferSizeInBytes = bufferSizeInShorts * 2
130-
audioRecorder = AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE.value, channelConfig, format, bufferSizeInBytes)
134+
if (permissionChecker.checkPermission(Manifest.permission.RECORD_AUDIO)) {
135+
audioRecorder = AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE.value, channelConfig, format, bufferSizeInBytes)
136+
} else {
137+
Timber.w("Not allowed to record audio.")
138+
}
131139
}
132140

133141
private fun calculateMaxAmplitude(buffer: ShortArray) {

vector/src/main/java/im/vector/app/features/voice/VoiceRecorderProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import android.media.MediaFormat
1313
import android.os.Build
1414
import androidx.annotation.ChecksSdkIntAtLeast
1515
import androidx.annotation.VisibleForTesting
16+
import im.vector.app.core.utils.PermissionChecker
1617
import im.vector.app.features.VectorFeatures
1718
import io.element.android.opusencoder.OggOpusEncoder
1819
import kotlinx.coroutines.Dispatchers
@@ -23,12 +24,13 @@ class VoiceRecorderProvider @Inject constructor(
2324
private val context: Context,
2425
private val vectorFeatures: VectorFeatures,
2526
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
27+
private val permissionChecker: PermissionChecker,
2628
) {
2729
fun provideVoiceRecorder(): VoiceRecorder {
2830
return if (useNativeRecorder()) {
2931
VoiceRecorderQ(context)
3032
} else {
31-
VoiceRecorderL(context, Dispatchers.IO, OggOpusEncoder.create())
33+
VoiceRecorderL(context, Dispatchers.IO, OggOpusEncoder.create(), permissionChecker)
3234
}
3335
}
3436

0 commit comments

Comments
 (0)