希望将最近可用的 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/