如何使用React Native和Expo在iOS和Android上实现后台录音?

问题描述 投票:0回答:1

我正在使用 Expo 和 React Native 开发一个跨平台应用程序,针对 iOS 和 Android。我的目标是即使在应用程序处于后台或设备屏幕锁定时也能继续录音。我更喜欢找到一种避免弹出和处理本机代码自定义的解决方案。

目前,我使用 expo-av 来实现基本的录音功能,但没有任何后台服务实现:

import { Audio } from 'expo-av';

const startRecording = async () => {
  await Audio.setAudioModeAsync({
    allowsRecordingIOS: true,
    playsInSilentModeIOS: true,
    staysActiveInBackground: true,
    interruptionModeIOS: InterruptionModeIOS.DoNotMix,
    shouldDuckAndroid: true,
    interruptionModeAndroid: InterruptionModeAndroid.DoNotMix,
    playThroughEarpieceAndroid: false,
  });
  const { recording } = await Audio.Recording.createAsync(
    Audio.RecordingOptionsPresets.HIGH_QUALITY
  );
  await recording.startAsync();
};

const stopRecording = async (recording) => {
  await recording.stopAndUnloadAsync();
  return recording.getURI();
};

我了解基本要求,例如为 iOS 添加后台模式和为 Android 使用前台服务。但是,我正在寻找有关可在 Expo 环境中处理这些任务的维护包或包组合的指导。

我已经尝试了几个库来在 Expo 的托管工作流程中启用后台录音,但到目前为止还没有找到满足所有要求的解决方案。

  • expo-av:提供基本录制,但缺乏对后台/锁屏录制的支持。
  • react-native-background-audio-record:很有前途,但不能可靠地处理后台录制并且显得过时。
  • react-native-track-player:适合后台播放,但缺乏对录音的支持。

问题:

  • 如何配置在后台连续录音,包括锁屏期间?
  • 是否有针对这种情况的任何维护的库或包组合?
  • 如果不存在单一解决方案,我在世博会内还有哪些替代方案?

我希望找到一种解决方案,可以利用 Expo 中的现有工具和库,而无需求助于自定义本机实现。任何意见或建议将不胜感激。

提前谢谢您!

react-native expo background-process audio-recording expo-av
1个回答
0
投票

对于 Ios,您需要通过添加来更新您的 infoPlist

infoPlist: {
        NSMicrophoneUsageDescription:
          "The app records ...",
        UIBackgroundModes: ["audio"],
      }

到你的config.ios

© www.soinside.com 2019 - 2024. All rights reserved.