Thursday, November 29, 2018

Unlocker Price Lowered to $1.99 USD

I've decided to lower the price of GMMP down to $1.99 until 3.0 is released.  The deal with only be available through amazon and google play.  Enjoy!

Monday, November 19, 2018

2.2.16-2.2.17

2.2.17 (11/21/2018):
-Fixed ogg/opus album art issue

2.2.16 (11/20/2018):
-Fixed sharing files on android 7.0+
-Added R128 support for opus/vorbis
-Fixed decibel to gain conversion (replaygain / preamp)
-Fixed issue opening now playing in material skins with talkback enabled on android oreo+


I think i've been able to address all the bugs from the api level update so I should be able to get back to 3.0 development after the holidays.

Tuesday, November 6, 2018

2.2.15

Lets hope this is the last fix for awhile.  I had made a stupid mistake when updating to api level 27, but didnt see any issues testing on my devices so I thought nothing of it. 

2.2.15 (11/07/2018):
-Possible fix for music service being shut down when it shouldnt

Monday, November 5, 2018

2.2.14

Pushed some fixes for issues that popped up in 2.2.13

2.2.14 (11/06/2018):
-Fixed issue where widgets would stop updating after GMMP is killed
-Fixed audioengine crash related to the api level update
-Fixed deleting playlists on sdcard
-Added support for view file intents from tasker

Sunday, November 4, 2018

2.2.13 Released

Pushed a new update to google play and will update amazon shortly

2.2.13 (11/04/2018):
-Widget fixes on oreo and newer

2.2.12 Beta (11/01/2018):
-Fixed crash when certain external apps attempt to open an audio file in gmmp
-Another attempt at fixing issue saving changes after modifying an existing playlist
-External storage write access no longer requires only the root to be selected
-Expanded notifications now default to off
-Added more support for playing files from external file managers
-Updated API level to 27
-Added support for runtime permissions
-Reset resume on call end preference (due to permissions)
-Added RxJava and RxPermissions licenses
-Added notification channels for playback controls and the scanner
-FileScanService updated to use JobIntentService
-Set resizable flag to true which should improve multi window support

Sunday, October 14, 2018

GoneMAD Music Player 3.0 Alpha 5

The first cut at the tag editor is finally here.  Its still a bit rough but I have plans to address them in Alpha 6.  If this update messes up the colors, just swap your base theme.  I think the update to the androidx libraries messed up restoring your theme, but when it happened to me i just swapped the base theme to light and then back to dark and everything looked fine after that.


When loading up the tag editor, it will display the tags of the selected file, or in the case of an album / artist / genre, it will show the information from the first file in the list of files to edit.  In alpha 6, this will slightly change in cases where a certain field is not the same for all the files.  Instead of using the first file, it'll just keep that field blank.  When the save icon is pressed, a progress spinner will pop up.  While this dialog is up, gmmp will check to see which if the tags were changed in the editor, then create a bunch of jobs to do the tag editing.  Once the jobs are created and submitted, the dialog closes and the tag editor closes.  This is a nice change compared to 2.x where the progress spinner stays up until every single file is tagged.  The tagging and database updating will now just happen in the background.

The tag jobs are split up into 3 different types: tag updates, database updates, and database cleanup.  The database updates happen first, so the lists in gmmp should update pretty shortly after the tag editor closes.  In alpha 5, a few db updates are not fully implemented yet when updating single tracks, but I plan on addressing them in alpha 6.  Once the database changes are applied, the actual tags in the files get updated.  Finally there is a database cleanup that is ran that will remove empty artists and genres.

I plan on changing gears next and getting 2.x updated to comply with the api level 26 requirement google is requiring for app updates starting in november

3.0 Alpha 5 (10/14/18):

New:

Added tag editor (improvements will be made in alpha 6)
Added ability to edit composer tag
Upgraded to androidx / jetpack libraries
Split artists selection in android auto into Album Artists and Artists
Added support to play files from external file browsers through the VIEW intent
Target API level is now 28

Info:

Due to a bug in the androidx preference library, the settings will have a large margin on the left.  This will be fixed whenever the library is updated

Fixes:
Removing songs from the queue will no longer mess up the current queue position
Playing/Add To Playlist for albums, artists, albumartist, and genres will now correctly use the sort order selected in the UI
Fixed recognizing the unlocker when 2.x is not installed
Fixed list items from updating when they are changed in the database
Fixed issue where Genre -> Album Artists would not show all album artists
Fixed crash syncing with the media library without having external storage access
Improved 'Various' AlbumArtist handling in the album list
Artist Details will now show albums that an artist has a track on but is not the album artist
Fixed other various crashes

Edit:

3.0 Alpha 5a:

Improved content uri handling from extenral file managers
Fast scroll letter should now always match what is being displayed in the list
Fixed showing 'Various' when there is only a single album artist
Fixed issues showing the correct album under Genre -> Artist/AlbumArtist details

Edit 2:

3.0 Alpha 5b

Fixed scanner from creating duplicate album artists (delete database and rescan)
Fixed fast scroll not hiding
Fixed fast scroll in the album grid when having a large amount of albums

http://www.mediafire.com/file/1t62hxgv12et299/gmmp-3.0_Alpha_5b-amazon.apk/file
https://mega.nz/#!C7ZEzI5D!p8QKkd-SgRvD1xq29YeRtwbZfjIC4J5311UK4i13g6E





Sunday, September 30, 2018

3.0 WIP 22: Tag Editor

Its been a few weeks since I've posted anything so I thought I would do a quick update on the current progress.  Up until last week, I had made pretty good progress on the tag editor and file deletion, but i was waiting on google to release a stable version of some of their libraries.  They finally did that so I spent the last week upgrading 3.0 to use androidx/jetpack.  The only issue i am seeing so far is a fairly large left hand margin in the preference screen, but i will worry about fixing that later.

Most of the code for the tag editor and file deletion are already written, I just need to put all that code into jobs for the new WorkManager google introduced.

Here is the basic layout of the tag editor (still needs tweaking):



One other thing to note is i made some backend changes to the tagging code to support writing to the composer and lyrics tags, so I do plan on adding that to the UI sometime soon.

Realistically I think Alpha 5 should be ready in about 2 weeks. 

Tuesday, August 28, 2018

GoneMAD Music Player 3.0 Alpha 4

Not too much in this update due to a few factors.  I am going on vacation next week so I wanted to get what I had out there, and secondly my plan for the deleting playlist / file / folders capability uses something new from google that is still in alpha and would require me to upgrade pretty much all the android support libraries.  Android studio 3.2 has a built in option to auto convert to use their new jetpack components, however 3.2 is still a RC and I wasnt able to upgrade from 3.1 in an easy enough fashion to make it worth my time.

Deleting things in GMMP involves more than simply removing the file.  The database has to be cleaned up and the queue order / positioning needs to be adjusted to account for any removed files.  Since I did not want the user to have to sit there and wait with a spinner in front of the UI while all this happened, I plan on leveraging a new library from google called the WorkManager.  Delete jobs would be created and set off to the work manager to get done in the background.  Tag editing is also another thing that can be time consuming so I also planned on doing the same for that.  This will make mass deletions or mass tag edits much more user friendly.

I am expecting all the tools / libraries to be final in the next few weeks so that should make those features doable for alpha 5

Alpha 4 is mostly on search enhancements and a few bug fixes.

Feedback Forum Post:
http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback

Download:
Mega
Mediafire

Alpha 4 (08/28/18):

New:
Added filename, folder, bookmark, and playlist file search categories
Added multi select options to search results
Search will now show text saying no results found when a search turns up empty
Song search results will have the song info option in the context menu
Added ability to give external storage write access
Re-added 'Restart On Skip Back' setting

Fixes:
Multi select should no longer refresh the entire list each time after an item is selected
Default playlist storage is now scanned
Fixed start scan setting in the simple settings
Fixed sorting in the playlist file list
Folder view no longer requires hitting the back button twice from the root view to return to previous view
Next audio source not always set correctly





Wednesday, August 8, 2018

GoneMAD Music Player 3.0 Alpha 3

Alpha 3 finally addresses one of the big missing features by adding a new search ui.  It is not 100% complete, but the majority of the functionality is there.  You now can search for artists, albumartists, albums, genres, and songs.  Alpha 4 will contain a few additions like searching folders, files, playlists, and bookmarks.  Similar to the 2.x, a live search (limited results) is executed as you type and clicking the search button will return the full result list.  As of right now the live search is limited to 5 results per category but there will probably be an option for that later on.  From the result list you can jump into any specific result to bring up their detailed ui, or play a song from the song list.


Search is also now accessibly via the search button in now playing and the library view (it is no longer in the side navigation like in 2.x).  I plan to also add it to the browser, playlist, and bookmark views once those searches are added.



In this update I also made some changes to the detail views.  They all now contain the mini player at the bottom.  The genre view also has an additional tab for album artists.




GMMP 3.0 Alpha 3 (08/08/2018):

Added initial search ui
Added jump to folder to jump to dialog
Long pressing shuffle in now playing will play a random album
Long pressing next/prev in now playing will play the next/prev album
Genre details view now has an Album Artists tab
Added mini player to album details view
Added mini player to artist details view
Added mini player to genre details view
Added mini player to playlist details view
Album name is now correctly set when scrobbling
Fixed some fast scrolling accuracy and queue auto positioning issues
File Browser will now correctly save and restore your position when changing folders


edit: Alpha 3a

GMMP 3.0 Alpha 3a (08-13-2018):

Fixed file browser crashes
Fixed other various crashes
Settings UI will reset on screen rotation to prevent some preference related crashes

Download links:
mega
mediafire

Feedback thread

Monday, July 16, 2018

3.0 Alpha 2b

I ended up just working on bugfixes the last 2 weeks and was able to hammer out some of the more annoying bugs

3.0 Alpha 2b (2018-07-16):

Updated libraries
Fixed scrobbler
Fixed queue from getting reset to the top after reordering
Fixed crash after changing base theme
Fixed issue with the dark theme having dark text. (Switch to light theme and back to dark to apply fix)
Fixed equalizer / effects view displaying wrong information when returning to the view
Fixed other various crashes

http://www.mediafire.com/file/3tzws6xw0wsogxm/gmmp-3.0_Alpha_2b-amazon.apk/file
https://mega.nz/#!7zxVWLTD!BPiJf4ThL_NSP9iTdmYwhWq0V2HcBsvPiqmT6mGlB1U

Forum Post: http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback?page=6&scrollTo=5301

Tuesday, July 3, 2018

2.2.10

I was able to finally track down one of the reasons why GMMP would not appear as a default music player in a lot of file managers, so that should no longer be an issue.

There wont be any development done this week because of the holidays but i will start back up on Alpha 3 next monday. The crash logs for 2a have been pretty good so i dont see the need to rush out any quick fixes

2.2.10 (07/02/2018):
-Return to playing will no longer reset the library view back to the first tab
-Bypass keyguard for custom lockscreen will now work on Oreo (only when PIN/pattern/password is disabled)
-Fixed playing audio files from file explorer apps on newer version of android
-Fixed issue saving changes after modifying and existing playlist

Thursday, June 28, 2018

GMMP 3.0 Alpha 2 - More Preferences and Song Info Dialog

I spent a good amount of time adding a bunch of custom preference views / items in order to add in some of the more advanced customizations.  The scanner edit path UI has been completely redone so it is no longer confusing as to which folders you have selected.  Now the UI will present a list of all the folders you have added.  You can add new folders or remove existing ones.


There is a toggle to switch between advanced and simple settings



I was also able to add another long requested feature which was to be able to view an individual song's metadata in a popup.  So here is that.  Its accessible in now playing and the song lists.



I will continue to add more preferences as they become available in future alphas.

Download link:
Mediafire
Mega.nz

Post feedback on the forum thread: http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback

Changelog:
3.0 Alpha 2 (06/28/18):

Added advanced settings toggle in settings view
Added a bunch of audio, scanner, and general settings to advanced settings
Added some additional settings to the simple settings
Added fast scroll to queue
Added Submit Error Report option to settings
Added song info pop up accessible from now playing and in a songs context menu
Added new folder selection ui for scan/ignore paths
Added Shuffle All menu option on the library toolbar
Refactored/cleaned up settings ui code
Added custom preference elements to allow a single preference to adjust multiple settings (for the simple settings view)
Improved performance for getting the queue details
Back arrow will in the settings view will now go to the previous settings page
Fixed crash when loading dsp effects
Fixed crash when database query returns no results
Fixed fast scroll crash
Fixed crash destroying album list view
Seek bar position in android auto should now be accurate after a manual track change

Edit 2a

Links in post have been updated to 2a

Fixed crash in song info popup when some tags are not set
Fixed crash in preferenes
Fixed crash when changing number of eq bands

Edit 2: Links should work now.  Previous apks were corrupted somehow

Sunday, June 10, 2018

GMMP 3.0 Alpha 1d

Lots of fixes this update.  There are still some remaining but I think i address the majority of the major ones.  Whatever remains is either low priority, or bugs i cannot reproduce / unsure of the cause.  I will most likely start working on alpha 2 this upcoming week and circle back to the remaining bugs at a later time.


3.0 Alpha 1d (2018-06-10):
More 18:9 album art size tweaks
Sped up loading of the first song on startup (only an issue with very large libraries)
Browser root paths should now be sorted by whatever sort order is selected
Queue details should now load faster for large queues
Queue should now load data around the current position instead of the start when the queue view is opened
Auto pause / play on power plug is now disabled by default
Adjusted album details view when no album art is present
On Queue Completion is now applied when manually hitting next track at the end of the queue
Playing artist or genre shuffled will now enable shuffle mode
Fixed issue where album art in now playing would not update on track change
Notification album art will now be cleared when the playing track has no art
Fixed issue changing view mode after the screen has turned off and on again
Fixed issue where grid size menu option does not appear when switching to grid mode until reloading view
Album details should factor in disc no when sorting by track number
Fixed multiple of the same artist or genre being displayed in android auto
Album art should now always show up on startup in the mini player (hopefully)
Fixed incorrect color being used when scrolling the artist/genre details view
Fixed fast scroll letters for albumartist list view
Fixed where having the same track in the queue multiple times would mess the ordering
Album details view items not highlighting during multi select
Album details should now highlight the correct track after track change
Fixed issue with the scanner where songs and albums were added twice

http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback

Thursday, May 31, 2018

GMMP 3.0 Alpha 1c

I made a bunch of fixes and did some UI tweaks to make the album art not get cut off nearly as much on a lot of devices.

Download link is in the forums: http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback

3.0 Alpha 1c (2018-05-31):
Album art size tweaks should now be applied to all 18:9 devices
Adjusted metadata and media button heights in now playing for 18:9 devices
Fixed issue with multiple genres and artists where a empty space was placed before the artist or genre name
Fixed crash trying to share files on sdcard
Caught exceptions thrown by AudioEffect instead of crashing
Fixed crash trying to update metadata of a null track
Fixed issue with multiple artist tags not be separated
Fixed crash on some devices when changing orientation immediately after starting playback
Music Service should not get auto shutdown as easily anymore (drawer -> menu will always shut it down however)
Track sorting should now factor in Disc Number
Fixed a few of the album list sort options
Fixed crash related to the changelog
Fixed crash when failing to load album art
Fixed disappearing media button icons

New screen shots on 18:9 devices

18:9
16:9





Thursday, May 24, 2018

GMMP 3.0 Alpha 1 Released

After around a years worth of development, I finally have gmmp in a good enough state that I can release an alpha.  As I've mentioned in previous posts, this is a very early alpha and it is not feature complete.  Its missing a bunch of major features like search, smart playlists, tag editor, customizations, etc.  The UI has also not really be optimized for different devices and there are no transitions yet.  All these will come later.  I also have only been doing legit testing for the last week and a half.  During that time i have found a lot of bugs that still have not been fixed, however gmmp's current state should be good enough to use.  Probably not as your daily driver yet, but it still works as intended.  Most of the bugs are minor and can be addressed by just reloading the UI.

There have been a few changes since the last WIP update.  One being the complete split between artists and album artists.  They now have their own views.  The album artist views might be a little buggy since I just coded that all up last night, but from my testing today I have not seen any real issue.  I also added a few additional preferences: manual scan and keeping the screen on during playback.  The majority of the other changes in the last 2 weeks were bug fixes.


With this alpha, I do encourage feedback from everyone, however I do want to limit what type of feedback I am receiving.  Please restrain from giving feedback about missing features / capabilities.  I've already said a lot is missing.  If 3.0 gets to the beta stage and a feature you were waiting for is still not present, then feel free to ask me.  What I am looking for is: bugs/crashes and general feedback on how it feels to use the player.  As I said transitions are not there so going from screen to screen wont be to smooth depending on your device, but comments on the navigation in general would be appreciated.  I didnt spend too much time on that yet since I wanted to hear from the users.

If you are going to report a bug, first check out trello to see if its already been reported.  https://trello.com/b/JCyp2kas/gonemad-music-player-development   unders 3.0 - bugs.  As you can see there are already plenty reported by myself.

Moving forward I should be able to maintain a regular release schedule similar to how often I would post WIP updates.  So expect updates every 1-3 weeks.  Some may just be minor fixes, others include major additions.  Trello shows everything i am working on and what has been accomplished.  Right now things are split between alpha releases but that will most likely change (things listed for alpha 2 might end up in a few releases from now.. but they will be added before things listed for alpha 3).  Once 3.0 is stable enough I will move over to the play store.  For now the alpha will be a separate package and will be installable along side GMMP 2.x

Download link and feedback post is here:
http://gonemadmusicplayer.proboards.com/thread/941/gonemad-music-player-alpha-feedback

Edit: note if you have a very large library and are using 8.0 you will probably run into issues with having duplicate of each songs and the scan restarting a bunch of times.  Oreo will kill the scan when it goes into doze or takes longer than 10 minutes.  I have not seen any issues with large libraries on pre 8.0.  If some music appears to be missing you can run a manual scan in the settings

Edit 2: it also appears that changing the primary dark theme color does nothing.. despite working fine earlier today.  I guess just leave the default theme for now.

Edit 3: themeing in general does not work.  When I create a release version of the app it ends up obfuscating a lot of the code and that appears to break a lot of the custom UI elements i wrote for the themeing.  For now keep the default theme and i'll work on getting a fix out this weekend

Bug fix posted for 64bit devices using the amazon version

Apparently removing crashlytics messed up loading gmmp's audioengine so I submitted a fix to amazon which should show up in the next day.  Anyway who happened to download the "all" version of 2.2.8 from this site should download the newly posted 2.2.9 using the same link.  That also suffers from the issue

http://www.mediafire.com/file/fxmmo1ecaoa21v5/gmmp-2.2.9-amazon.apk/file

Monday, May 21, 2018

2.2.8

Due to the upcoming enforcement of the GDPR, I decided to remove both google analytics and crashlytics in 2.x.  I honestly did not use the analytics data for anything, so there is no loss there.  Crashlytics was useful but over the years google has improved their crash reporting service enough that I can easily drop crashlytics in order to comply with the new EU law.

Release should go live on google play in the next few hours and on amazon by tomorrow.

Friday, May 11, 2018

3.0 WIP 21: Basic Preferences, Theme Builder, and Alpha 1 release date

Development for 3.0 Alpha 1 is wrapping up finally.  The last week or 2 I spent time fixing a lot of bugs and finishing off the initial preference UI.  The current preferences was kind of hacked up and only has a few options but I needed to make something to toggle a few of the crucial settings and build themes (and also show the changelog/licenses).  The majority of preferences for GMMP will require me to write some custom preference UI elements, so those will slowly be rolled out in future alphas.

There will be a video of the theme builder at the end of this post, but the only other visuals i have are for the changes to the FAB in the artist, album, and genre view.  The album details view will now default to playing the album when selecting the fab, but the artist and genre will play all the songs shuffled.  Eventually the defaults will be configurable but i think these are decent default settings for now.




The FAB will hide itself when you scroll down



For the theme selector, so far I have 4 things configurable.  Base theme (right now just material light and dark, but i will also add a white and black), primary color, primary dark, and accent color.  The changes to the UI are made instantly so you do not need to restart the UI or anything like that.


Finally, I have tentatively set the release date for the first alpha to be May 24th (EST).  This is right before memorial day weekend so i'll have plenty of time to hotfix any major issues that come along.  I have decided, that until most of the main GMMP functionality is in the alpha, it will be released as an apk outside of the playstore with a different package name.  This means you will be able to install it side by side with GMMP 2.x.  While I do think 3.0 right now is very usable, for most people it wont be enough to be their daily driver just yet.  This also gives me some time to fully test the upgrade process.  I ideally went to keep everyone's database and stats intact.  Also just a warning now, all the settings will be reset and not restore-able.  I have changed so much in the last year that a clean slate was needed (plus i renamed all the preference's keys to use a standard naming scheme that makes it much easier to deal with in code). 

Saturday, April 28, 2018

3.0 WIP 20: Light theme, list paging and highlighting the current song in all views

Light Theme

I spent some time making sure the light themes worked correctly and there was surprisingly a lot of work needed to get them looking good.



By default, the theme library GMMP uses lets the text to all of the views that are not the toolbar to be black.  The toolbar is smart enough to check the background color and choose the appropriate text color to display on top of that.  Since a large amount of GMMPs UI uses the primary color as the background, I had to create a lot of custom views to do something similar to the toolbar.



A dark background will give you light text and light button colors and vice versa for a light background.  Note: I still need to work on the button colors behind album artist.  Light colors on top of art is obviously preferred


Paging

In my opinion one of GMMP's strongest points has always been the ability to handle very large library, so I started testing 3.0 with a large library.  I put a 200 gb sdcard filled with music into my Moto e4 and began testing.  I quickly found out that what I had written started to struggle when throwing 20,000 songs at it.  The lists rendered fine and you can navigate through your music at a speed you would expect.. however the memory usage seemed to be very high causing random pauses when selecting items.  Fortunately google has something exactly for this in their Paging Library to handle this.  What this does is load data around where your list is current positioned.   In the case of having a list with 20000 songs, at any given time only a few hundred will be loaded into memory to be displayed in the list.

I am still in the process of working out all the kinks with the paging library, but my initial implementation seems to work pretty well.  The lists will show up almost immediately (vs taking a few seconds to load) and I no longer experience the random pauses when making selections.  Now some things do not play too well with this library like the fast scrolling, but I will either get things working with the fast scrolll library, write my own implementation of fast scroll, or come up with an alternative to navigate large lists fast (perhaps something like android auto does with the letter selection).

Song Highlighting


One of the most frequently requested features I received was the ability to show the current playing track in all the list views instead of just now playing / folder view / queue view.  Every view that shows track lists besides the bookmark view should now highlight the playing song if its in the visible list.  The video below shows that in action.



I also made a few other additions like syncing with the android media library and loading the entire list into the queue when selecting a song (this now includes the full track list view as well)

I am still targeting a late May release for the first alpha.  The player is in pretty good shape now but has not yet gone through any sort of significant testing, so there is the potential for a delay if I run into some bad issues.

Saturday, April 14, 2018

2.2.7 Released

2.2.7 (04/09/2018):
-Fixed reading embedded album art in ogg containers
-Added error check to hopefully prevent the "Cleaning database" notification from being stuck
-Jumping to a letter in the album list in android auto should now correctly take you to the right spot in the list
-Clicking search button will no longer remove focus on the search text field
-Additional workarounds for invalid unlocker issue

2.2.6 (04/03/2018):
-Taglib update to 0.11.1
-Fixed handling of unicode TXXX album artist tags
-Added workaround for invalid unlocker error caused by updating some devices to oreo
-Fade out if the next audio source isnt prepared when crossfading

3.0 WIP 19: On Queue Completion, Android Auto, Improved Voice Commands and Auto Pause/Play

The last two weeks were mostly spent refactoring / rewriting the remaining Music Service code that i had previously disabled.  That includes the MediaSession, Android Auto Support, Audio Focus handler, On Queue Completion, Voice Commands, and Auto Pause/Play.  The only thing remaining I believe is the auto volume adjust and the ability to handle multiple remote control presses.  At this point it looks like a realistic release date of the first alpha should be in May.  I am probably a week out from starting internal testing, which basically means i start deploying the app to all my test devices and actually use it as my main driver on my phone.  Up until now i have still been using 2.2.x.  I am not expecting that many bugs, but what I am expecting is a lot of things i just forgot to implement that are crucial to making GMMP usable.

3.0 working in Android Auto

Audio Focus

The new audio focus handling is mostly the same as 2.x.  Google did add some new capabilities for oreo which I did add.  When GMMP requests audio focus, sometimes something else has to keep focus for a bit while longer.  In this case the request returns that the focus request was denied temporarily, but will let gmmp know when it can take focus.  When this happens gmmp will wait for the go ahead and then start playback after the OS says it can take focus.  I am not sure how useful this is, but I figured i'd mention it.

On Queue Completion

I made some minor changes when re-implementing this feature.  Play Random Track was replaced with a simple Shuffle.  It will load all your music into the queue and turn on shuffle.  Another nice improvement is the music selected by on queue completion will now be preloaded when you are playing the last track in the queue.  This will allow gapless and/or crossfade to work.

I had mentioned this in a previous post, but in 3.0 many of the options will be right in the UI instead of being hidden away in the general preferences.  This should make it much easier to change options quickly.  On most of the views, they will be in a "Customize" section of the 3 dot menu on the toolbar.



Before 3.0 is fully released I will most likely add a few more on queue completion options, but for now I think its good.

Improved Voice Commands

While testing voice searching in android auto, I had noticed it was sending unstructured voice command .  An unstructured voice command is basically a voice search that you do not know what it is looking for (ie an album search, track search, artist search, etc).  Now gmmp will run through a bunch of queries to try to find what the user is requesting to play.  Previously in this situation it will only search the track name.  

Auto Pause / Play

The auto pause / play functionality was simplified a bit.  Since GMMP was first written for android 1.6, it was previously looking for a huge list of different events to determine whether to pause or auto resume.  Now to keep it simple, GMMP basically just listens for a "NOISY" intent when playing over a wired connection, bluetooth, or speaker.  This intent is broadcast in many situations like when you unplug your headset or receive a phone call, so it basically has everything covered.  Another minor change is gmmp will only look for a2dp connections (this is what is used for playing music) instead of all BT connections in general.  

I also added some new pause / play triggers which include: 
  • HDMI plug/unplug
  • Phone Power plug/unplug
For each type of connection / audio routing there will be the option to do a smart play or an always play.  Smart auto play will basically only automatically resume playback when GMMP was auto paused.  This has always been my preferred behavior.  I've always found it super annoying when a music player that i was not using at all decides to automatically start playing just because i plugged in my headphones.

Saturday, March 31, 2018

3.0 WIP 18: Add To Playlist, Sleep Timer, Improved Drag and drop and more

For a large portion of the time since the last post, I worked on redesigning the data access portion of GMMP which doesnt really have much to show off visually but I will briefly talk about it.  In the first WIP post I talked about the complex metadata view customization 3.0 will provide.  Now playing and all the metadata lists let you customize how they will look and what metadata they will display.  This was working pretty well for the layouts i had set up for demo purposes, but there was a problem of being able to get all the necessary data in order to populate the metadata views.  I had a bunch of hard coded database queries that were good enough to get some screenshots, but would not completely if i would add a lot of other fields to show.  An example would be in the track list I believe it previously only showed the trackname and time.  What if i wanted to also show the artist?  Well previously i would have had to either make the track query more complex by joining with the artist table or add separate query that did the track/artist join.  The problem with the first option is this would make every track query take longer regardless if the user wanted to show the artist or not.  The problem with the second option is this would require thousand of custom queries to get every possibly combination of metadata for the view.  Neither were acceptable to me so I decided to rework how data was being accessed.

My new solution was to design a database query builder.  It basically contains a few public methods so i can specify what type of query to do (track list query, artist list query, album list, etc).  I then specify what metadata fields are wanted, along with any conditions (like artist = so and so) and it will return the query to use against the database.  In most cases the metadata fields are generated automatically by scanning the metadata lines and the sort order selected.  So what does this all mean?  If your track list metadata line is something like "%ar% - %tn%" and the sort order is by album, the generated query will retrieve only the artist, trackname, and album.  This should lead to the best performance possible and the least amount of memory being used.

Add To Playlist

I readded Add To Playlist and it is mostly the same as it was in 2.x.  Behind the scenes its much better but UI wise it works the same.





More Now Playing Actions

I added volume control, stop after current, sleep timer, and the share option.  The sleep timer also now has an option to wait until the end of the playing song before pausing.






Drag and Drop Improvements

When I initially did the drag and drop, I couldn't find a way to use anything but the default behavior which was to long press to start the drag.  After some more research I did eventually find a way to add "handle" to start the drag and drop.  This is much more usable in certain situations like in the car.  To turn this behavior on, I added 2 new view modes to the view mode menu.  Handle and Card Handle





For whatever reason youtube would not let me upload the drag and drop video i created, so Im using the blogger video capability instead.



The preference UI is the only remaining UI task still need to be done before i can release alpha 1, the rest is basically just restoring the remaining music service capabilities that I had took out when starting with 3.0

















Friday, March 9, 2018

3.0 WIP 17: Landscape Support + Jump To Time/Playing + More

There is a lot to show off this update so I will get right to it.  WIP 17 brings landscape support plus a few other things.  The majority of the views are the same as the portrait version except for now playing and the album details view.  That is not to say more landscape specific views will not be coming in the future. 

Lansdcape Now Playing:


The now playing view is one of the most important views in a music player and I felt GMMP 2.x did not full take advantage of the space as well as it could have.  In 3.0 there are a bunch of changes.  I do plan on having additional Now Playing layouts (like one that users the blurred album art as a background and one that doesnt bleed through the toolbar/status bar) but they will come at a later point.

In landscape there will be 2 extra button slots that you can use.  In the image above I included a fullscreen / immersive mode toggle, and a direct button for the queue (instead of having a FAB).  As mentioned before, these buttons will be configurable.  You can leave empty slots or change the number of total buttons (so if you set it to 5, all 5 buttons will be equally spread out in the view).  In code I combined the gesture actions, context menu actions, and the media button actions into shared modules, so the idea is you will be able to make buttons for many of the gestures and all of the menu options.  The menu is also built dynamically now, so instead of having a massive list of 12-15 options, you will be able to choose which show up the menu. 

Full Screen / Immersive Mode
Dynamically built menu (only 2 actions listed so far)

Another nice thing with the landscape now playing is I made it so certain options are orientation specific.  The metadata being a prime example.  In portrait we really only have room for 3 lines, but in landscape there is tons of space for the metadata, so in this example i added an empty line as a separator and 2 additional lines showing genre, year, bitrate and sample rate.

Landscape Album Grid/List


Album Grid is 4 wide in landscape
2 wide in portrait
Right now the landscape specific settings are the grid size and now playing metadata, but in code its as simple as replacing a single line in order to support diff prefs for orientation.  In the album grid i did also finally add the context menu.  I experimented with a few different positions, but it worked best just right next to the metadata.

Landscape Album Details


The landscape view of album details is much more user friendly I feel.  Instead of having the artwork taking up the top 1/3 of the screen (and only being able to see a small portion of the full image), it is now on the left hand side in full.   Album name and artist in the toolbar and some additional song details are on the right as the first entry of the list.  When I finally add an option to disable the FAB, that top metadata entry will contain one of those 3 dot menus on the right so you can play/enqueue/etc the entire album without the need for the FAB.  The album details will be customizable within reason (i think it'll be about 5-6 different variables available for use).  These album details were also added to the portrait view.

FAB was moved to overlap the metadata view and the album art

Album Details view with the list scrolled up

Jump To Playing / Time

I have only coded up a handle of the menu / gesture actions so far (its what I am currently working on).  Jump To Playing works the same way as before.  The look in the image below is not final, its just the default look of the library I am using for the material dialogs.  Below that is the jump to time dialog which is using a.. time wheel i guess you can call it.  Both features are shown in the video at the end of this post.



Sorting Options

I also went through and implemented the majority of the sorting options for the various views.  All that is left is some of the track sort options.  They require a bit of rework of my database queries, rework that I had to do regardless so they have not all been implemented yet.  One change I made from 2.x is that Date Added is no longer the time the entry was added to the database, it uses the last modified time of the associate files on storage at the time it was scanned into the database.  What this means is you will be able to clear your database and rescan without every single song showing up in Recently Added.

Track Sort

Artist Sort

Album Sort

Navigation View Fixes

Finally I made some navigation view improvements.  The highlighted entry is now consistent with the showing view (and if you go into album details, for example, none will be highlighted since that is not in the nav view).  I also added an entry for bookmark view.

Progress in general is going great.  If you look on trello the majority of the TODO list for the first alpha is done.  It seems like we'll see a release in the upcoming months.  How soon will depend on 1) how much more of the music service refactoring work needs to be done (restoring android auto support is required before i can get approved through google play), and how many small TODOs i have left in the code base.  Some areas need a bunch of work like the folder browser, while others are pretty much good to go.