GIBDON MOON PRODUCTIONS
... entertainment software built to purpose using minimalist principles ...
April 29th, 2016 : EwePlay 1.0.3
EwePlay 1.0.3 is now available after many hours of testing and tweaking. There were two main issues that have been softened by this release: battery usage and Jelly Bean compatibility (Android 4.1.x).
The reason this is 1.0.3 has to do with me wanting to keep some level of consistency. Android apps provide two version attributes, one as a whole number and the other as an arbitrary line of text. The whole number version of this release is
3 and so I decided to make the text version match.
Battery Usage Improved
Initially EwePlay used what's known as a Content Provider to load and play your music. This is theoretically the safer method because it gives the operating system a chance to vet your request and potentially block unsafe content. You'd notice this showing up in your battery usage as something like Media server.
I misinterpreted the results in early testing to indicate that EwePlay itself was not using much battery at all. If you can see the screenshot, it was only using 2% whereas the Media server was at 52%! Of course, it turns out that EwePlay was merely passing the buck and this process required much more CPU and burned the battery faster than desirable.
Now EwePlay loads music directly from your internal memory or SD card. I've seen this give a magnitude better battery life in my daily usage. EwePlay still falls back on the Content Provider if the file permissions prevent direct loading, which has been known to happen on my Jelly Bean device ...
Better Jelly Bean Compatibility
If your phone is a couple years old, say from 2013, then there's a high probability that your version of Android goes under the moniker Jelly Bean 1. I purchased a Samsung Rugby Pro to test Ice Cream Sandwich and, thankfully, it happened to have the older and more used Jelly Bean. I quickly found that songs did not transition smoothly when the screen was off and I despaired at having released without finding the bug!
I spent several hours over the course of days to track this down to aggressive sleep behavior in this series of Android. When you turn off the screen then Android gets ready to sleep and so after a song in EwePlay ended, the next song didn't always start immediately afterwards. In many cases the song wouldn't start for several minutes! Yet this problem could not be reproduced reliably when the device was plugged in, on WiFi, or connected to a debugger and I ended up tracking it to the wrong bug 2.
Finally I discovered the true source of the symptoms and solved it by having EwePlay request what's known as a WakeLock whenever the screen is turned off or you switch to a different app while music is still playing. The moment EwePlay finishes playing the last song in the queue, it will release this request and the device is allowed to go to sleep.
1.0.3 Bug Fixes
- In rare cases a song is give more than +5 for playback, sometimes even +99. The cause not clearing the cached current position which, in error situations, would be carried over to a new song even if it was greater than the playback length of the new song.
- Arbitrarily long delay between one song and another when the screen is off on Android 4.1.1 (Jelly Bean). This was due to aggressive sleep functionality and added wakelock code into EwePlay to make sure the CPU stays awake when the screen is off but music is playing.
- Album Art sometimes doesn't load even though it is embedded within the music file. Internally I switched the code to first try to load directly from the file rather than using a Content Provider / MediaStore API.
- Song title blank on notification drawer. This occured when EwePlay responded to a Low Memory warning by clearing up text memory which was then blank when the current song changed.
- Excessive "Media server" battery usage due to using an indirect Content Provider URL for music data rather than reading the file directly (extra security = extra battery usage).
- Wikipedia entry on Android versioning
- MediaPlayer "crash" (deadlocks the calling thread) when resetting or releasing an unused MediaPlayer
I'm proudly pleased as punch to announce the release of
EwePlay for Android on Google Play!
This is the best Android music player for your MP3 collection. EwePlay is all about listening. Every decision I've made whether it was part of the original design or not, was to fulfill this particular purpose. It started with the simple premise: I have a bunch of great music and I want to listen to it. There is no hidden agenda to sell subscriptions, peddle marketing, spam you, or to hit you up for reviews and ratings.
You pay once to own a copy of EwePlay to listen to your music. End of story. Wild concept, right?
I've had the idea for years along with a multitude of others that I did nothing to bring about. This is the first official product of Gibdon Moon Productions. The fundamental purpose of my company is to produce products with identity. I can't stress the 'P' word enough: produce, product, productions. We build and we complete and we give purpose not only to what has been done but who is doing it. I have no doubt that that tickles something deep within you.
But this is about EwePlay so let us return to that.
I originally conceived of EwePlay circa 2003. I remember this because of where I was sitting in eNom's offices within the Unigard complex in Bellevue. I believe it was called "Mood Play", which morphed into "MooPlay" and then somehow into "EwePlay". I had a RIO Sport MP3 player, fought to use Windows Media Player and slaved away on a collection of slippery files.
I have never been able to fathom why music playback stayed in the dark ages, limping with the ghost of WinAmp.
Even as new players and software have come out, they have done little to make listening to music better. Apple's iPod Shuffle was a brilliant little device when it began. Pandora I had high hopes for. And all the subscription-to-collection services like Rhapsody and Spotify have only ever given you access to a slice of music based on the whipping whims of publishers' rights. The aim of all of these is to sell music, which is why they've never been great for listening.
Nothing will ever come close to your personal collection of music; not for you anyway.
I am often in a particular mood that directly influences what music I want to listen to. From there I either know what songs to play or I just want something, anything to start playing. We've always had ratings on music players: it's called pick and skip. When you pick a song you rate it up and when you skip it you rate it down. EwePlay uses these metrics to give song points. These points are then stored in the MOOD RING you have selected.
It's important to note that the mood is not a genre or an album or a playlist. It is an inexplicable feeling you get and there may be a surprising potpourri of selections that it fits. EwePlay makes no attempt to verbalize your mood, since it's so difficult to describe even by the person to themselves. Hence the MOOD RING is symbolic only; it has 8 settings represented by colors and moon phases. Your "Blue Mood Ring" would probably contain different song scores from mine, even if we shared the same collection.
Alright, so you've got song points that will be different depending on the selected MOOD RING. Now comes the other half of the magic: weighted shuffle. EwePlay's shuffle is not entirely random, it is biased towards songs with more points and takes it one step further by adding the number of days since last played. Thus if a song has +10 and it hasn't been played in a week, the internal weight of that song is 17. Only songs with a positive weight will be automatically played.
Got all that? Probably not, but it's worth mulling over. I sure have!
The end result is that EwePlay's shuffle does a better job of playing songs you haven't heard and/or like better. It improves over time based on your habits, as the scores get more distinct. You will eventually hear all of your collection. And this is all nearly invisible to the end user: it simply happens as part of enabling SHUFFLE ALL.
Now if you know what you want to listen to, EwePlay strives to make it quick to locate music and queue it. Tapping a song doesn't interrupt the one currently playing, rather it appends it to the play queue. Holding the PLAY button does a fast-scroll which moves 10% through the current list every second, getting you nearer to the song you want without wearing out your thumb. Tap the marquee of the current song to scroll to its position in the list. Long press a song and EwePlay will show you related items. Or tap the LIST button to cycle through different ways of showing your collection. And if you have shuffle enabled then every item added causes the queue to reshuffle.
On top of all of this is a user interface with a fixed layout. Nothing in EwePlay shifts around; all of the elements remain in place and are never covered up or slide around like greased up silverware. This is important when you can't spare focus for the UI and need controls to be where you expect.
Thanks for your feedback, support, and assistance. You know who you are!
-- Neil C. Obremski, President of Gibdon Moon Productions