当前位置: 首页 > 知识库问答 >
问题:

如何使用EXPO-AV在react native中播放背景音频?

韩智敏
2023-03-14

我正在使用Expo构建一个react原生应用程序。我用的是“EXPO-AV”。

我无法在后台播放我的音频文件。

我有以下的,但仍然不能使它工作,当我切换我的应用程序到另一个应用程序。我没有任何错误;音乐就停在我的应用程序里了。有什么建议可以让它工作吗?或者我的代码可能出了问题?

  async componentDidMount() {
    try {
      await Audio.setAudioModeAsync({
        allowsRecordingIOS: false,
        interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS,
        // interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DUCK_OTHERS,
        playsInSilentModeIOS: true,
        interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DUCK_OTHERS,
        shouldDuckAndroid: true,
        staysActiveInBackground: true,
        playThroughEarpieceAndroid: true
      })
      this.loadAudio();
    //   this.interval = setInterval(() => this.getStatus(), 1000);
    } catch (e) {
      console.log(e)
    }
  }

共有1个答案

东郭远航
2023-03-14

每件事都使用这样的参数:

Audio.setAudioModeAsync({
   allowsRecordingIOS: false,
   staysActiveInBackground: true,
   interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DUCK_OTHERS,
   playsInSilentModeIOS: true,
   shouldDuckAndroid: true,
   interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DUCK_OTHERS,
   playThroughEarpieceAndroid: false
});

在package.json“expo-av”:“^6.0.0”中,

在播放机中:

componentDidMount() {
        Audio.setAudioModeAsync({
            allowsRecordingIOS: false,
            staysActiveInBackground: true,
            interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DUCK_OTHERS,
            playsInSilentModeIOS: true,
            shouldDuckAndroid: true,
            interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DUCK_OTHERS,
            playThroughEarpieceAndroid: false
        });
        this._loadNewPlaybackInstance(true);
    }

async _loadNewPlaybackInstance(playing) {
        if (this.playbackInstance != null) {
            await this.playbackInstance.unloadAsync();
            this.playbackInstance = null;
        }
const source = { uri: 'http://music.ru/music.mp3' };

    const initialStatus = {
        shouldPlay: playing,
        rate: this.state.rate,
        shouldCorrectPitch: this.state.shouldCorrectPitch,
        volume: this.state.volume,
        isMuted: this.state.muted,
        isLooping: this.state.loopingType === LOOPING_TYPE_ONE
        // // UNCOMMENT THIS TO TEST THE OLD androidImplementation:
        // androidImplementation: 'MediaPlayer',
    };
    const {sound, status} = await Audio.Sound.createAsync(
        source,
        initialStatus,
        this._onPlaybackStatusUpdate
    );
    this.playbackInstance = sound;
 类似资料:
  • 我想实现一个基于 expo 开发的 RN 项目,里面有很多的音频文件,点击不同的按钮播放不同的音频,音频文件如果坚持使用本地文件,还有其他的可行方案吗? 感谢�� 前提条件: 动态播放 本地音频文件 目前我查到的解决方法有 2 种,但都不是很符合我的需求 方案 1 引入全部,然后以下标方式使用,因为我音频文件有点多,似乎这个不是很好的解决方法 参考:https://stackoverflow.co

  • 问题内容: 我只是在写一个小型的python游戏,很有趣,我有一个函数可以开始叙述。 我正在尝试让音频在后台播放,但是很遗憾,在该功能继续之前,首先播放的是mp3文件。 我如何使其在后台运行? 另外,有什么方法可以控制播放声音模块的音量? 我应该补充一点,我使用的是Mac,但我不喜欢使用playsound,它似乎是我可以使用的唯一模块。 问题答案: 在Windows中: 使用 winsound.S

  • 我正在尝试在Frame窗口的背景中播放音频文件,我发现它比添加图片要复杂得多。 我找到了一个“教程”,应该如何添加音乐,它似乎相当简单,至少在所需的代码量方面。但是,我无法播放音频文件,它在说两件事…… 我试图播放一个我复制到我的java项目中的音频文件,它告诉我它找不到那个文件或目录。 第二-我给了这个方法一个音频文件的路径,它告诉我… 请记住,我很新,这个教程没有给很多帮助,所以我不知道这个游

  • 在SetCompressor lzma后面加以下代码: ReserveFile "${NSISDIR}\Plugins\system.dll" ReserveFile "天鹅湖.mp3" 然后在 Section 区段后面加入 Function 区段: Function .onInit InitPluginsDir File "/oname=$PLUGINSDIR\bgm_天鹅湖.mp3"

  • 如何在外部媒体文件关闭后自动恢复音乐文件?

  • 问题内容: 我创建了一个应用程序,并试图允许用户在玩游戏时继续听他们的音乐,但是只要他们点击“播放”并且出现游戏中的声音,它将停止背景音乐。我正在使用Swift在iOS上进行开发。这是一段启动游戏内声音的代码。 问题答案: 您需要使用以下值之一设置类别:https : //developer.apple.com/library/ios/documentation/AVFoundation/Refe