7
7
8
8
package im.vector.app.features.voice
9
9
10
+ import android.Manifest
10
11
import android.content.Context
11
12
import android.media.AudioFormat
12
13
import android.media.AudioRecord
@@ -15,13 +16,15 @@ import android.media.audiofx.AutomaticGainControl
15
16
import android.media.audiofx.NoiseSuppressor
16
17
import android.os.Build
17
18
import android.widget.Toast
19
+ import im.vector.app.core.utils.PermissionChecker
18
20
import io.element.android.opusencoder.OggOpusEncoder
19
21
import io.element.android.opusencoder.configuration.SampleRate
20
22
import kotlinx.coroutines.CoroutineScope
21
23
import kotlinx.coroutines.Job
22
24
import kotlinx.coroutines.isActive
23
25
import kotlinx.coroutines.launch
24
26
import org.matrix.android.sdk.api.extensions.tryOrNull
27
+ import timber.log.Timber
25
28
import kotlin.coroutines.CoroutineContext
26
29
27
30
/* *
@@ -31,6 +34,7 @@ class VoiceRecorderL(
31
34
private val context : Context ,
32
35
coroutineContext : CoroutineContext ,
33
36
private val codec : OggOpusEncoder ,
37
+ private val permissionChecker : PermissionChecker ,
34
38
) : AbstractVoiceRecorder(context) {
35
39
36
40
companion object {
@@ -127,7 +131,11 @@ class VoiceRecorderL(
127
131
bufferSizeInShorts = AudioRecord .getMinBufferSize(SAMPLE_RATE .value, channelConfig, format)
128
132
// Buffer is created as a ShortArray, but AudioRecord needs the size in bytes
129
133
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
+ }
131
139
}
132
140
133
141
private fun calculateMaxAmplitude (buffer : ShortArray ) {
0 commit comments