我正在使用 Expo-AV,我正在尝试找到一种简单的方法来连续播放 3 个音频文件。
我在网上找不到任何东西,有人有Expo-AV的经验吗?
非常感谢。
这就是我实现这一目标的方法。
const sounds = [];
for (const note of notes) {
const sound = new Audio.Sound();
await sound.loadAsync(soundFile);
sounds.push(sound);
}
for (const sound of sounds) {
await sound.setStatusAsync({ shouldPlay: true });
await new Promise((resolve, reject) => {
sound.setOnPlaybackStatusUpdate((status: AVPlaybackStatus) => {
if (status.positionMillis > status.durationMillis * 0.8) {
console.log('Done playing');
resolve(true);
}
});
});
}
请注意,在我的场景中,当播放完成 80% 时,我将播放标记为已完成。您可以调整值或也使用
positionMillis == durationMillis
。
status
中还有一些其他有用的值。这是在我的场景中最有效的方法。但看看 status
对象中的其他值。