2020import com .facebook .react .modules .core .PermissionListener ;
2121
2222import androidx .annotation .NonNull ;
23+ import androidx .core .app .ActivityCompat ;
24+ import androidx .core .content .ContextCompat ;
25+
2326import javax .annotation .Nullable ;
2427
2528public class TranscribeModule extends ReactContextBaseJavaModule {
@@ -32,6 +35,8 @@ public class TranscribeModule extends ReactContextBaseJavaModule {
3235 private AudioRecord audioRecord ;
3336 private boolean isRecording ;
3437
38+ private static final int PERMISSION_REQUEST_CODE = 1 ;
39+
3540 int audioSource = MediaRecorder .AudioSource .MIC ;
3641 int sampleRateInHz = 8000 ;
3742 int channelConfig = AudioFormat .CHANNEL_IN_MONO ;
@@ -52,11 +57,21 @@ public String getName() {
5257 private void init (){
5358 Log .d (TAG ,"init" );
5459
55- isRecording = false ;
56- audioRecord = new AudioRecord (audioSource , sampleRateInHz , channelConfig , audioFormat , bufferSize * 10 );
60+ if (ContextCompat .checkSelfPermission (this .getCurrentActivity (),Manifest .permission .RECORD_AUDIO ) == PackageManager .PERMISSION_DENIED ) {
61+ Log .d ("permission" , "permission denied to RECORD_AUDIO - requesting it" );
62+ String [] permissions = {Manifest .permission .RECORD_AUDIO };
63+
64+ ActivityCompat .requestPermissions (this .getCurrentActivity (), permissions , PERMISSION_REQUEST_CODE );
65+
66+ } else {
67+ // RECORD_AUDIO has been granted
5768
58- if (audioRecord .getState () != AudioRecord .STATE_INITIALIZED ) {
59- Log .d (TAG , "Unable to initialize AudioRecord" );
69+ isRecording = false ;
70+ audioRecord = new AudioRecord (audioSource , sampleRateInHz , channelConfig , audioFormat , bufferSize * 10 );
71+
72+ if (audioRecord .getState () != AudioRecord .STATE_INITIALIZED ) {
73+ Log .d (TAG , "Unable to initialize AudioRecord" );
74+ }
6075 }
6176 }
6277
0 commit comments