Threads merged, same problem.
Page 7, dan1son has it right.
The player is not checking the total track length or file size periodically. Thus, it thinks the track is done when 500kb have played, if 500kb is what was downloaded at the time it started playing. Some ROMS that people have on their phone probably are making the player check periodically, or stagefright does that, avoiding the problem. I have tried using Blade Buddy to enable all four stagefright options with no change. Probably this ROM.
Proposed EASY/temporary workaround: Add an option to only start playing track 1 of an album or playlist when the track has been fully downloaded. This will ensure track two is fully downloaded before it starts playing, and so on. Sure there is a delay before hearing music, but if the skips bother you, you probably listen to whole albums at once anyway and wouldn't mind waiting.
Better: Instead of creating the file at whatever size it starts at, and appending data to it as it is downloaded, create the file with the full size or length of the final track, but null data. Then the player is tricked into thinking there is a 5 minute track there, and it will play it with no problem. As data is downloaded it will replace the null data and the actual data is always there by the time the player gets to it. If the user seeks ahead of what is available, they hear silence instead of the track skipping or doing Something unexpected. The selling point of Subsonic is that it does not transcode your audio. I am sure it is ethical to forge a file's metadata, as long as the audio data is exact.
Proper: Keep data management as it is but force the player to update the file length a few seconds before the current end of file. This can't be too hard unless the player is flawed in design; it seems this same flaw prevents implementation of gapless playback. If this is the case, it's time for a rewrite with a proper audio player. A parametric equalizer for the best music player in existence wouldn't hurt either
There actually isn't one that works globally for Android, just some in local media players. Charge $5 for it as an addon and you'll get a band of loyal followers.
I have a feeling that 90% of the work went into the server. It is so technically perfect, with on the fly multi step transcoding and user rights and everything else amazing, but the players have not been focused on and done properly from the start to allow ESSENTIAL features to match this top-performing streaming service, such as gapless playback and a real EQ.
This issue has nothing to do with the server, since the demo server does it, it has nothing to do with bandwidth, as LAN at 80mbps does it, and nothing to do with SD card speed as internal memory or a C10 card does it (Although that may be a problem for users not experiencing this specific issue, but their own phone slowness.)
Thank you greatly for this massive undertaking. World class software right here!