当我运行
npx expo start
并在我的 IOS 设备上运行应用程序时,仅从耳机而不是扬声器播放音频,知道为什么会发生这种情况吗?
这是我的代码:
import { View, StyleSheet,Button } from 'react-native';
import React, { useState, useEffect } from 'react';
import { Audio } from 'expo-av';
export default function App() {
const [audioPermission, setAudioPermission] = useState(null);
useEffect(() => {
// Simply get recording permission upon first render
async function getPermission() {
await Audio.requestPermissionsAsync().then((permission) => {
console.log('Permission Granted: ' + permission.granted);
setAudioPermission(permission.granted)
}).catch(error => {
console.log(error);
});
}
// Call function to get permission
getPermission()
}, []);
async function playSound() {
try {
await Audio.setAudioModeAsync({
allowsRecordingIOS: true,
playsInSilentModeIOS: true
})
const {sound} = await Audio.Sound.createAsync(require('./assets/beep.mp3'));
await sound.playAsync();
} catch (error) {
console.error('Failed to play sound', error);
}
}
return (
<View style={styles.container}>
<Button
title="play sound"
onPress={playSound}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
button: {
alignItems: 'center',
justifyContent: 'center',
width: 128,
height: 128,
borderRadius: 64,
backgroundColor: 'red',
},
});
我还尝试将 Audio.setAudioModeAsync 内的属性(如 allowedRecordingIOS 和playsInSilentModeIOS)替换为 false,但这不起作用。
您必须将 allowedRecordingIOS 设置为 false。