微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法访问麦克风的权限

如何解决无法访问麦克风的权限

我正在尝试使用react-native-live-audio-stream库。但是,在麦克风的许可下,我出现了错误

我正在关注this exact link设置方法

这是我的录音机组件:

import React from 'react';
import {TouchableOpacity,View} from 'react-native';
import LiveAudioStream from 'react-native-live-audio-stream';

export default function Recorder() {
  const options = {
    sampleRate: 32000,// default is 44100 but 32000 is adequate for accurate voice recognition
    channels: 1,// 1 or 2,default 1
    bitsPerSample: 16,// 8 or 16,default 16
    audioSource: 6,// android only (see below)
  };
  LiveAudioStream.init(options);
  LiveAudioStream.on('data',(data) => {
    // base64-encoded audio data chunks
  });

  return (
    <View>
      <TouchableOpacity onClick={LiveAudioStream.start()}>
        <Text>Start recording!</Text>
      </TouchableOpacity>
    </View>
  );
}

我得到的错误是:

startRecording() called on an uninitialized AudioRecord.

所以我开始研究许可问题……这是我到目前为止所得到的:

<uses-permission android:name="android.permission.RECORD_AUdio" />
<uses-permission android:name="Manifest.permission.RECORD_AUdio"/>

在AndroidManifest.xml中

通过添加对麦克风的请求,如下所示:

const requestMicrophone = async () =>{
  if (ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.RECORD_AUdio) != PackageManager.PERMISSION_GRANTED) {

  ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.RECORD_AUdio},REQUEST_MICROPHONE);
}

我收到以下错误

[![ActivityCompat.requestPermissions(getActivity(),new String\[\]{Manifest.permission.RECORD_AUdio},

REQUEST_MICROPHONE] 2] 2

关于如何解决此问题的任何想法?

编辑: 我已修正错误!记录器中与音频有关的事物需要放入一个功能,该功能通过开始记录来调用

解决方法

尝试以下代码以在android中获得许可:

import {PermissionsAndroid,Platform} from 'react-native';
.....
const requestMicrophone = async () => { //replace your function with this code.
            if (Platform.OS === 'android') {
                try {
                  const granted = await PermissionsAndroid.request(
                    PermissionsAndroid.PERMISSIONS.RECORD_AUDIO,{
                      title: 'Permissions for record audio',message: 'Give permission to your device to record audio',buttonPositive: 'ok',},);
                  if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                    console.log('permission granted');
                  } else {
                    console.log('permission denied');
                    return;
                  }
                } catch (err) {
                  console.warn(err);
                  return;
                }
              }
        }
,

首先,您使用的是onClick event,它的react事件不是本机的反应,应该切换到onPress event,并且每次使用LiveAudioStream.start()来调用start()的每个渲染

<View>
    <TouchableOpacity onClick={LiveAudioStream.start()}>
      <Text>Start recording!</Text>
    </TouchableOpacity>
</View>

//edited
<View>
    <TouchableOpacity onPress={()=>LiveAudioStream.start}>
      <Text>Start recording!</Text>
    </TouchableOpacity>
</View>```

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。