react-native - expo-av 裸错误 : Missing audio recording permissions

标签 react-native expo

希望将最近可用的 expo 包用于 react-native 中的分离或“裸”应用。

遇到以下错误:

错误:缺少录音权限。

但是我已经调用了 expo-permissions 库来确保获得 RecordAudio 权限。

参见 https://github.com/Glorifundel/bareaudio完整的示例项目

App.js

import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View, Button } from 'react-native';
import * as Permissions from 'expo-permissions';
import { Audio } from 'expo-av';

export default class App extends Component {
  render() {
    return (
      <View style={{ flex: 1 }}>
        <Text style={styles.welcome}>Welcome to React Native!</Text>
        <Button title="Get Permission" onPress={this.onPressPermission} />
        <Button title="Record" onPress={this.onPressRecord} />
      </View>
    );
  }
  onPressPermission = async () => {
    const { status, expires, permissions } = await Permissions.askAsync(
      Permissions.CAMERA_ROLL,
      Permissions.AUDIO_RECORDING
    );
    alert(`permission: ${status}`);
  };
  onPressRecord = async () => {
    const recording = new Audio.Recording();
    try {
      await recording.prepareToRecordAsync(
        Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY
      );
      await recording.startAsync();
      alert(`onPressRecord recording!`);
    } catch (error) {
      alert(`onPressRecord error: ${error}`);
    }
  };
}

按下“获取权限”按钮会报告“权限:已授予”警报,然后按下“记录”按钮会导致警报“onPressRecord 错误:错误:缺少录音权限。”

感谢任何见解,

环境详细信息:我在 Windows 10 上运行,在运行 android API 27 (8.1 Oreo) 的 android 模拟器上。是否安装了全新的 Node v10.15.3 以及全新的 react-native-cli expo-cli 安装并使用 expo init --template bare-minimum 生成了项目。跟进 yarn add expo-av 和 yarn add expo-permissions,按照这两个包的自述文件中的说明进行操作。

最佳答案

async function startRecording() {
try {
  console.log('Requesting permissions..');
  await Audio.requestPermissionsAsync().then(() => {
    console.log('Permission granted!');
  })
  .catch(error => {
    console.log(error);
  });
  await Audio.setAudioModeAsync({
    allowsRecordingIOS: true,
    playsInSilentModeIOS: true,
  }); 
  console.log('Starting recording..');
  const { recording } = await Audio.Recording.createAsync(
     Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY
  );
  setRecording(recording);
  console.log('Recording started');
} catch (err) {
  console.error('Failed to start recording', err);
}

关于react-native - expo-av 裸错误 : Missing audio recording permissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56172625/

相关文章:

react-native - 在 React-Native 中动态设置 RTL/LTR

node.js - 无法在 expo-react-native 应用程序上运行 'expo start',权限问题

react-native - 博览会日历 createEventAsync 不工作

ios - 出于回调 URL 的目的,在 Expo 中运行的 React Native 项目的 info.plist 在哪里?

react-native - 在 React Native 中的 Android 上打开键盘时,将组件隐藏在 ScrollView 下?

javascript - 在 snack.expo.io 上 react native 使用 Hook

javascript - 在不启动 Xcode 的情况下运行 React Native 应用程序?

node.js - 无法消除 yarn 不正确的对等依赖警告

android - 有没有办法改变 <Tabs> 中 <Tab> 标签的宽度?

javascript - Firebase Auth photoURL 始终返回 null