When I first wrote JP, Android’s built-in media player service didn’t properly handle streaming music playback. I had to use a proxy server to make things work right. I also used this to allow me to gather metadata embedded in the stream for displaying track information. In more recent versions of Android, the media player does handle streaming, though retrieval of metadata isn’t done very well.
In this version of JP, I’ve switched to using Android’s native streaming. This seems to have made streaming more reliable, as well as allowing fairly reliable playback of Ogg and AAC streams, as well as MP3-based ones. To get the metadata for streams, I am periodically opening a second connection to the streaming server and parsing out the information. Ogg streams don’t use ICY metadata, which required more sophisticated parsing of the stream header based on the Ogg specification.
It also turns out that Samsung has jiggered their internal memory paths again, such that playlist track paths weren’t being created correctly in new playlists for the Galaxy S III. I’ve fixed this.
The last significant change was to how “hosted” playlists are handled—that is, those playlists opened via a web browser on a remote server. Some inconsistent behavior was improved.