I am in the process of trying to get the Allegro sound and audio codecs working on Android. I made a simple test program that just tries to load a WAV file and allows playback by touching the screen.
The WAV file failed to load so I started digging into the Allegro code to see if I could figure out where it is failing. I found that the loading began to fail immediately following a call to al_fseek().
As a test, I added some calls to al_ftell() to see what position was being reported before and after the al_fseek() call. Both times it was reported as 0.
Looking at the code in android_apk_file.c I see that al_fseek() relies on APK_tell() to function. APK_tell() seems to always return 0 which means any call to al_fseek() will fail to work correctly. That means any loading function that needs al_fseek() or al_ftell() will not work.
I have been having trouble getting any of the audio codecs to work and I have a feeling this is why.
Append: I "fixed" al_fseek() and al_ftell() by storing the current position in the ALLEGRO_FILE_APK struct. I don't really know how the _jni_call* stuff works so I don't know if there is a better way than what I'm doing.
By fixing these functions, the WAV and MOD audio codecs are now working. Still can't get Vorbis or FLAC to work but I think that might be a different problem.