【发布时间】:2021-06-22 23:21:07
【问题描述】:
当按下另一个声音时,我在尝试停止当前播放的声音时遇到了麻烦,而不必在 react Native Expo 中暂停当前的声音。注意:我可以完美地暂停和播放声音。所以基本上就像一个普通的音乐播放器,如果按下另一首歌曲时重叠。
const SampleTrack = {uri:'https://firebasestorage.googleapisro-b97ec.appspot.com/o/song%201.mp3?a9'}
const FirstP = () => {
const [Loaded, SetLoaded] = React.useState(false);
const [Loading, SetLoading] = React.useState(false);
const sound = React.useRef(new Audio.Sound());
React.useEffect(() => {
LoadAudio();
}, []);
const PlayAudio = async () => {
try {
const result = await sound.current.getStatusAsync();
if (result.isLoaded) {
if (result.isPlaying === false) {
sound.current.playAsync();
}
}
} catch (error) {}
};
const PauseAudio = async () => {
try {
const result = await sound.current.getStatusAsync();
if (result.isLoaded) {
if (result.isPlaying === true) {
sound.current.pauseAsync();
}
}
} catch (error) {}
};
const LoadAudio = async () => {
SetLoading(true);
const checkLoading = await sound.current.getStatusAsync();
if (checkLoading.isLoaded === false) {
try {
const result = await sound.current.loadAsync(SampleTrack, {}, true);
if (result.isLoaded === false) {
SetLoading(false);
console.log('Error in Loading Audio');
} else {
SetLoading(false);
SetLoaded(true);
}
} catch (error) {
console.log(error);
SetLoading(false);
}
} else {
SetLoading(false);
}
};
如果有人可以提供帮助,那就太好了。
【问题讨论】:
-
大概你有一个歌曲列表或类似的东西,但你没有包括它,所以很难做出好的推荐。我会将音频状态存储在所有单个列表项的父视图中,以便在按下新项时轻松播放/暂停。
-
感谢您的帮助!
标签: reactjs react-native expo