I’ve made a new icon for JP that is higher resolution and will scale appropriately for all screen sizes. I’ve also replaced the default album art logo image with a high resolution version of the icon.
Archive for the ‘Just Playlists’ Category
Just Playlists 5.3.1—Fix for Disappearing/Non-updating Notification and Code Updates for Current API LevelSaturday, March 29th, 2014
The notification for Just Playlists hasn’t been consistently updating with the current track information and sometimes was just disappearing altogether. I’ve fixed this. I’ve also started the process of updating the code for JP to use the most recent API features, getting rid of calls and dependencies on deprecated features. I started with creating what is known as a content provider as an interface to the underlying SQLite database that I use to store playlist information.
The next work I’ll be doing on JP is a way to work around the new “feature” in Android 4.x that doesn’t allow apps to save or delete files from arbitrary locations on an external microSD card. If you search the Web, you’ll find all kinds of discussions about this. I won’t add to the frustration being expressed, but I certainly share it. Android will still allow an app read/write access to its own private area on external storage, so I’m hoping to use this to add a feature to JP that allows a user to easily get to this area and use it. In the meantime, you can create and delete playlists on your device’s internal storage, so I’d suggest storing playlists there—they can still reference tracks on external storage.
Just Playlists 5.3.0—Disable Shuffle Query Box with Choice of Default Options, “Show Playlist” Easier to FindSunday, January 5th, 2014
I’ve had a lot of requests to provide the option to disable the shuffle query box that always has appeared when a new playlist is loaded or an existing playlist is reloaded. I’ve added the “Disable shuffle query box” option item in the “Preferences”. The default action when this is enabled is not to query but to leave the playlist unshuffled. To change this default, use the “Disabled shuffle load action” item. You can choose to shuffle, not to shuffle, or to do the same thing to the playlist on reload as was chosen last time it was loaded or reloaded. I find this really handy, since most my playlists are always either shuffled or not shuffled, depending on whether they are a mix list or a list of albums. For a new playlist being loaded when this option is active, the list will not be shuffled.
You can still force the shuffle query box to appear when the disable option is active by going into the “More…” sub-menu and choosing “Reload playlist with query”.
The “Show playlists” menu item has also been moved from the “More…” sub-menu to the main menu. Folks were having trouble finding it.
A user reported that the album/artist text was being covered by the artwork display. It turns out my method for sizing artwork didn’t take into account the screen real estate taken by things like the notification bar, action bar, and soft/virtual buttons on Nexus-style devices. I’ve fixed this.
Just Playlists 5.2.6—Metadata Passed to Bluetooth Devices Under Android 4.3; Dynamic Artwork Size; Version FreezeSunday, October 13th, 2013
Android 4.3 is now properly passing stream and track metadata via Bluetooth to connected devices. Just Playlist now supports this, as well.
If the device has a display and can handle this metadata, it will be shown. For instance, car stereos with a display and support for the metadata will show track, artist, and album information.
I also am now detecting the actual width and height of the device display and using this to set the artwork size for display. This should mean that any phone or tablet will give the best possible view of album artwork.
The last change I’m making is that, starting with this version of Just Playlists, new features will only be rolled out for devices running Android versions 4.0 and above. Older devices will still be able to run version 5.2.5 of Just Playlists. I don’t like to do this, but there are so many new features only available for the newest versions of Android that it is making it difficult to maintain backward compatibility when I only have a limited amount of time to devote to program development.
I found that after upgrading my phone to Android 4.2.2 that headset button presses were sometimes not being recognized by JP. I’ve added code to better follow the most recent Android SDK rules for handling audio focus—that is, making sure to interact properly with other audio apps. I believe this has helped. If the headset buttons aren’t being recognized by JP, just go into the app and stop and restart play. This will allow JP to acquire audio focus and also start recognizing headset button presses.
And thanks to a person using JP by the name of Joe, I found out M4A audio files are supported by Android, so they can now be added to playlists.
Finally, I’ve had a couple reports from Samsung Galaxy S III users that JP will randomly hang up during track changes. Working with my trusty friend and beta tester Dan, we concluded that it has something to do with the gapless playback code I added a while back. So, if you have this problem, you can now disable gapless playback in the Preferences and it should go away. It’s a workaround and not a fix, but I can’t duplicate and isolate it on my Galaxy Nexus, so this’ll have to do for now.
I fixed two bugs in this release. The first was to fix HTML redirection for hosted playlists—thanks to Peter for catching this! That is, if there is a URL that points to a playlist but ends up being redirected by the web server to another URL, JP wasn’t handling it and would give an error.
The second bug was that album artwork wasn’t being shown for tracks that are stored on an external storage device—most commonly, that would be a microSD card. My Galaxy Nexus doesn’t have external storage, so I didn’t notice it until my friend Dan visited with his Galaxy S3 and we figured out what was going on. This has been fixed, as well.
I decided it was time to upgrade my Galaxy Nexus from Android 4.1.2 to 4.2.2. I’d been holding off due to reports of problems with Bluetooth. All seems well, but, once again, Just Playlists was affected by under-the-hood changes in the Android OS. The first problem was that album artwork wasn’t being found in the media database of such information built by the OS. I appears that Android now stores the artwork keyed by the canonical path name of the media file. I corrected for this, which is backward compatible to Android 2.3, Gingerbread.
Also, Android 4.2.x has introduced multiple user accounts for tablets. This means that each user is given a separate partition on the device’s internal storage. For single-user phones, this means that the partition scheme of internal storage also changes. Though symbolic links are maintained to the new partitions for backward compatibility, the actual partition names are used internally and end up messing with how I store playlist names, leading to names not being found in JP’s history database or duplicate entries being created for the same playlist, coming from the different valid paths to the file from different partition names.
I was able to work around this using some hard-coded look-up tables for known valid internal and external storage paths. It’s a bit of a hack, but I haven’t found a better way to handle it at this point. The upside is that anyone upgrading from an older version of Android should find that all their existing playlists are found in JP’s history database.
In turns out that playlists created on the Galaxy S III still had improper paths on tracks—which I thought I’d fixed in 5.2.1. I really do believe it is fixed now, as confirmed by a friend who owns a Galaxy S III.
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.