要实现动态播放本地音频,可以结合使用expo-file-system
和expo-av
库。下面是一个实现的示例:
- 首先,确保你的项目已经安装了
expo-file-system
和expo-av
。如果没有安装,你可以使用以下命令进行安装:
expo install expo-file-system expo-av
- 在你的代码中,导入所需的库:
import * as FileSystem from 'expo-file-system';
import { Audio } from 'expo-av';
- 创建一个状态变量来存储音频对象:
const [sound, setSound] = useState(null);
- 创建一个异步函数来加载和播放音频:
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);
}
};
- 调用
playSound
函数来播放特定的音频文件。你可以通过传递文件名来选择要播放的音频文件:
playSound('one.mp3'); // 播放名为"one.mp3"的音频文件
这样,你可以通过点击不同的按钮来播放不同的音频文件。每次调用playSound
函数时,它会加载指定的音频文件并播放它。
请注意,上述示例假设你已将音频文件保存在应用的本地文件系统中。你可以使用expo-file-system
库来将音频文件从其他位置(如网络或设备存储)复制到应用的本地文件系统中。然后,你可以使用上述示例来播放本地文件。
希望这个解决方案能够帮助到你!如果你有任何其他问题,请随时问我。
标签:音频,system,音频文件,expo,file,av,播放 From: https://blog.51cto.com/M82A1/8175027