无法在 Android 上的 expo-av 中设置 setPositionAsync

问题描述 投票:0回答:1

我正在使用

expo-av
在我的应用程序中播放音频声音,但是当我调用
soundObject.setPositionAsync(pos)
时,它将音频位置设置回 0,而不是我提供给它的位置,可能是什么原因

android expo-av
1个回答
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);
        }
    };
© www.soinside.com 2019 - 2024. All rights reserved.