Estoy usando 50 archivos de sonido diferentes. funciona normalmente, pero en mi intento número 14 o 15 ya no reproduce los archivos de audio. (Estoy usando un dispositivo Android)
const animalSound = new Sound( selectedAnimals.soundUrl ||"snake.mp3", null, error => { if (error) console.log("Can't play sound. ", error); }) const handlePlaySound = () => { animalSound.setVolume(1); animalSound.play(() => { animalSound.release(); }); }; const handleStopSound = id => { animalSound.stop() }expo-av para el sonido, que también se puede usar en un proyecto nativo de reacción. ( https://github.com/expo/expo/tree/main/packages/expo-av )
Hice este gancho que te permite reproducir el sonido y también aclara los recursos para que no tengas que preocuparte por eso.
/* This hooks abstracts away all the logic of loading up and unloading songs. All the hook takes in is the require path of the audio */ import React,{useState,useEffect} from 'react' import { Audio } from 'expo-av'; const useSound = (path) => { /* Sound state */ const [sound, setSound] = useState(); /* Logic to unload sound when screen changes */ useEffect(() => { return sound ? () => { sound.unloadAsync(); } : undefined; }, [sound]); /* Memoize the function so that it does not get recomputed every time that the screen load */ const playSound = React.useCallback(async ()=>{ const { sound } = await Audio.Sound.createAsync(path); setSound(sound); await sound.playAsync(); },[sound]) /* Stop sound */ const stopSound = React.useCallback(async ()=>{ await sound.stopAsync(); },[sound]) return [playSound,stopSound] }Todo lo que tienes que hacer para usar el sonido es esto
/* The hooks returns a function to be called when to play a sound, and it abstracts away having to deal with unloading' the sound */ const [playSound,stopSound] = useSound(require("snake.mp3"));