要实现动态播放本地音频,可以结合使用expo-file-systemexpo-av库。下面是一个实现的示例:

  1. 首先,确保你的项目已经安装了expo-file-systemexpo-av。如果没有安装,你可以使用以下命令进行安装:
expo install expo-file-system expo-av
  1. 在你的代码中,导入所需的库:
import * as FileSystem from 'expo-file-system';
import { Audio } from 'expo-av';
  1. 创建一个状态变量来存储音频对象:
const [sound, setSound] = useState(null);
  1. 创建一个异步函数来加载和播放音频:
const playSound = async (filename) => {
  try {
    // 从本地文件系统中获取音频文件的URI
    const uri = `${FileSystem.documentDirectory}${filename}`;
    
    // 使用Expo AV库加载音频文件
    const { sound } = await Audio.Sound.createAsync({ uri });
    
    // 播放音频
    await sound.playAsync();
    
    // 保存音频对象到状态变量
    setSound(sound);
  } catch (error) {
    console.error(error);
  }
};
  1. 调用playSound函数来播放特定的音频文件。你可以通过传递文件名来选择要播放的音频文件:
playSound('one.mp3'); // 播放名为"one.mp3"的音频文件

这样,你可以通过点击不同的按钮来播放不同的音频文件。每次调用playSound函数时,它会加载指定的音频文件并播放它。

请注意,上述示例假设你已将音频文件保存在应用的本地文件系统中。你可以使用expo-file-system库来将音频文件从其他位置(如网络或设备存储)复制到应用的本地文件系统中。然后,你可以使用上述示例来播放本地文件。

希望这个解决方案能够帮助到你!如果你有任何其他问题,请随时问我。