I think this will never garner enough support by anyone who wishes to delve themselves deeper into such mystery.
All of you probably knew by now, how unstable and how unreliable SoundPool class is. Some people manage to make it work, while others rage-quit themselves after tackling the problem many times.
One of methods in SoundPool grabbed my attention, and it’s this method:
load(String path, int priority)
Some sources in Stack Overflow suggests that method should not be used at all, and instead recommends other load() methods. There are no solutions to using the aforementioned code. This is a mystery. There is 1 source I found earlier (but can’t find it again) that suggests the path parameter may stands for the path directory to an audio file located on the SD card, or in the external storage in some Android phones. I don’t have the knowledge to prove it, so I can’t tell.
Here’s my research, and wished others may help find a better solution to this:
//These will not load. Gives error: /* error loading <[i]string goes here[/i]> */ /* sample 0 NOT ready */ sounds.play(sounds.load("assets/test", 1), 1f, 1f, 1, 0, 1f); sounds.play(sounds.load("/assets/test", 1), 1f, 1f, 1, 0, 1f); sounds.play(sounds.load("assets/test.wav", 1), 1f, 1f, 1, 0, 1f); sounds.play(sounds.load("/assets/test.wav", 1), 1f, 1f, 1, 0, 1f); /*sounds is a SoundPool variable initialized in the onResume(). All of these methods are placed in a setOnClickListener.onClick(View v) wrapped/set for a Button object in the R.layout.main.*/
Feel free to share your findings.
EDIT: Just to clarify, I am able to successfully use SoundPool to play sounds. I do not have any problems with the following methods:
//All of these load correctly. It can be played from my phone. load(Context context, int resId, int priority); load(FileDescriptor fd, long offset, long length, int priority); load(AssetFileDescriptor afd, int priority);
The only load() method that is unable to work is the load(String path, int priority) method.