Soy nuevo en reaccionar nativo y me he enfrentado a un problema. Estoy tratando de hacer una duración del control deslizante de tiempo de un audio con setInterval(). y cuando el sonido se está reproduciendo, forzará la detención después de 1 minuto de reproducir el sonido sin ningún motivo. Luego trato de depurar con console.log(), cuando la fuerza de audio se detiene, en console.log() se ve así:
current time: 01:11 94 current time: 01:14
hay un punto azul y sigue funcionando cuando la fuerza de audio se detuvo
alguna idea para solucionar mi problema?
esta es mi función de reproducción de sonido:
const playSound = () => { try { if (isPlaying === false) { sound.play(); setButton(Pause); setIsPlaying(true); soundDuration(); } else if (isPlaying === true) { sound.pause(); setButton(Play) setIsPlaying(false) } } catch (e) { console.log('err', e) } }
esta es mi función de obtener duración:
const soundDuration = () => { setDuration(sound.getDuration()) }
y uso esta función para manejar el control deslizante de tiempo:
useEffect(() => { var timerID = setInterval(() => loadCurrentTime(), 1000); return () => clearInterval(timerID); }); const loadCurrentTime = useCallback(() => { if (isPlaying) { sound.getCurrentTime((seconds) => { console.log('current time: ', convertTime(seconds)); setTimeSlider(seconds); }); } }, [sound, isPlaying]);
y este es el control deslizante:
<Slider style={{flex: 1, height: 40}} minimumValue={0} maximumValue={duration} minimumTrackTintColor="#FFFFFF" maximumTrackTintColor="#000000" thumbTintColor='#f6e3b0' value={timeSlider} step={1} // onValueChange={values => { // // sound.setCurrentTime(values); // setTimeSlider(values); // }} />