我正在使用
expo-av
在我的应用程序中播放音频声音,但是当我调用 soundObject.setPositionAsync(pos)
时,它将音频位置设置回 0,而不是我提供给它的位置,可能是什么原因
就我而言,问题实际上源于我传递给 setPositionAsync 方法的数字。以下是如何使用 Expo Audio-AV 插件实现前进和后退功能:
const [isPlaying, setPlaying] = useState(false);
const [soundObject, setSoundObject] = useState(null);
const [position, setPosition] = useState(0);
const [duration, setDuration] = useState(0);
// Loading and playing the audio
const newSoundObject = new Audio.Sound();
await newSoundObject.loadAsync({ uri: music });
await newSoundObject.playAsync();
setPlaying(true);
setSoundObject(newSoundObject);
// Listening for playback status updates
newSoundObject.setOnPlaybackStatusUpdate((status) => {
if (status.isLoaded) {
setPosition(status.positionMillis);
setDuration(status.durationMillis);
if (status.didJustFinish) {
newSoundObject.replayAsync();
}
}
});
// Handling forward and backward actions
const onForward = async () => {
if (soundObject && isPlaying) {
const newPosition = position + 10000;
await soundObject.setPositionAsync(newPosition);
}
};
const onBackward = async () => {
if (soundObject && isPlaying) {
const newPosition = Math.max(0, position - 10000);
await soundObject.setPositionAsync(newPosition);
}
};