我正在尝试从https://docs.expo.dev/versions/latest/sdk/audio/#usage的例子(我只是取代了mp3文件的路径),但我的iPhone不播放音频。
基本上,我复制了这部分(并添加了必要的import
s):
const [sound, setSound] = useState();
async function playSound() {
console.log('Loading Sound');
const { sound } = await Audio.Sound.createAsync(
require('./path/to/my/file.mp3'));
setSound(sound);
console.log('Playing Sound');
await sound.playAsync();
}
useEffect(() => {
return sound
? () => {
console.log('Unloading Sound');
sound.unloadAsync();
}
: undefined;
}, [sound]);
字符串
它没有崩溃,我只看到这些日志,但没有听到声音:
LOG Loading Sound
LOG Playing Sound
型
有人知道如何正确使用吗?
我检查了这个类似的问题,但解决方案不起作用,版本较旧:Expo-AV Sound.playAsync() doesn't work with expo-av 9.2.3 and Expo 42.0.3
以下是可能相关的依赖关系:
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
"expo": "~48.0.18",
"expo-av": "~13.2.1",
"react": "18.2.0",
"react-native": "0.71.8",
型
2条答案
按热度按时间xoshrz7s1#
好吧,解决方案是愚蠢的,但同时有点棘手。
原来我的iPhone处于静音模式,也就是说,左边的红色开关。
棘手的事情是,我总是有我的iPhone在静音模式,但无论如何,我能够在浏览器上听音频,YouTube,Whatsapp等.它看起来像这些应用程序绕过静音模式.但其他应用程序不,例如.博览会.
更奇怪的是,如果是通过蓝牙扬声器,我可以在静音模式下播放音频。所以我的蓝牙扬声器(或蓝牙系统)也绕过了静音模式。
我不会标记我的答案,我会把这个问题留着,等待有人能更好地解释这个问题。也许有人能解释一下静音模式实际上是如何工作的(特别是关于expo的,因为这是问题的主题)。
blpfk2vs2#
与其他答案类似,根据我的说法,它必须处理iOS的静音模式。Expo提供了一种覆盖此模式的方法,但在他们的文档中并不清楚它的必要性。这解决了这个问题。请确保您在添加此功能时打开手机或SIM卡上的音量
字符串
这也是给你的Snack