如何使用ReactNative播放声音

8gsdolmq  于 2023-11-21  发布在  React
关注(0)|答案(2)|浏览(131)

我正在尝试从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",

xoshrz7s

xoshrz7s1#

好吧,解决方案是愚蠢的,但同时有点棘手。
原来我的iPhone处于静音模式,也就是说,左边的红色开关。
棘手的事情是,我总是有我的iPhone在静音模式,但无论如何,我能够在浏览器上听音频,YouTube,Whatsapp等.它看起来像这些应用程序绕过静音模式.但其他应用程序不,例如.博览会.
更奇怪的是,如果是通过蓝牙扬声器,我可以在静音模式下播放音频。所以我的蓝牙扬声器(或蓝牙系统)也绕过了静音模式。
我不会标记我的答案,我会把这个问题留着,等待有人能更好地解释这个问题。也许有人能解释一下静音模式实际上是如何工作的(特别是关于expo的,因为这是问题的主题)。

blpfk2vs

blpfk2vs2#

与其他答案类似,根据我的说法,它必须处理iOS的静音模式。Expo提供了一种覆盖此模式的方法,但在他们的文档中并不清楚它的必要性。这解决了这个问题。请确保您在添加此功能时打开手机或SIM卡上的音量

useEffect(() => {
  Audio.setAudioModeAsync({
    playsInSilentModeIOS: true,
  });
}, []);

字符串
这也是给你的Snack

相关问题