[Android app][Open Beta] Volumio Control native android application

And not only one clone, but multiple :slight_smile:

I can add the version in there, should be easy as adding new text field, and set the app version in there. I have had to go to app info page via settings application multiple times to check if Iā€™m on the release/debug versionā€¦ This will make it easier.

Edit: started improvements again, and quickly found out where i left last time, i need to do some refactoring to sort out the ā€œnavigationā€ within the application, currently Iā€™m using nested navigation hierarchy where the loading, home and now playing screens are in so called ā€œroot navigation viewā€, where as rest of the app screens are nested inside another ā€œnavigation viewā€ within the root, which leads to an issue if i want to implement ā€œgo to artistā€, ā€œgo to albumā€ or ā€œshow queueā€ to the now playing screen, since from that screen i cannot navigate to the said locations directly and it either needs an non maintainable spaghetti code to go around or some refactoring to keep it maintainable for future. Canā€™t provide any ETA, since itā€™s not clear to me whatā€™s the best way to refactor it currently.

[Update]

Got the navigation mess i coded myself into sorted out, on my internal test version itā€™s now possible to go artist/album from now playing screen for local, tidal and qobuz content.

Now figuring out how to implement it for queue view, i would like to keep the swipe to delete, but for the other options i would personally prefer ā€œswipe to showā€, like that the go to artist and go to album would be revealed from left under the main content when slow swipe is applied, to not eat any content area from the information i believe is relevant most of the time.

@mervinio @volumio
As i donā€™t know the internal workings of tidal and qobuz plugins.
Would it be possible to add the ā€œartistUriā€ and ā€œalbumUriā€ fields for the playback state updates? Currently you need to cache queue just to implement ā€œgo to artistā€ and ā€œgo to albumā€ for tidal and qobuz? And for local content the browse uris needs to be resolved at runtime, i believe this would help every client application and the web GUI developement aswell.

Do we have the user with Samsung Galaxy s21 5G in here? I can see that you have suffered from a crash which is caused by malformed Json response, sadly i canā€™t get any clue on where this happens within the network calls, depending on where this happens i can make my JSON parser accept malformed responses, but i do not want to make that decision application wide because it will cause performance drop.

I canā€™t help with that - only got an S10, but to reach those who donā€™t frequent this forum maybe like sub menu in the app under settings like ā€œapp support and helpā€ and there put in a request for owners with that device to get in touch if they have a problem?

That will be there now.

Volumio does not return this information for now atleast, the fields are in there thought, so it might change in future.

This is fixed now, as well as implemented in the now playing screen for all sources which does give enought information to make it possible.

  • fixes some JSON issues where null can be returned instead of value in some rare cases.
  • Album art in now playing screen should not overlap anything anymore.
  • volume bar/slider in now playing screen will be hidden, if no volume control is available.(at least the case when mixer is set to none)
  • when pressing repeat and shuffle it will now instantly reflect the state change in UI, then corrected where needed when your device answers.
  • fixes crash which occured within the random methods in Albums, Artist and Genre views if the list of content was empty.

I still got couple of small enchancements to make then will release the next version.

Looking forward to test the new version of the app! :+1:

Maybe it will be fixed in the buster version. Iā€™ve noticed that there is a bug in Volumio regarding Qobuz and the UI - all 24/44.1 and 24/48 material in Qobuz will display as 24/96 in the now playing Volumio UI.

Update should soonish appear in the playstore, Iā€™m just about to push it in there.

Future ā€œroadmapā€ as of now would be.(in no order)

  • fixing everything.(obviously)
  • play next option for songs
  • paging to deal with huge libraries more efficiently
  • search for albums/artists/genres
  • re implement the search feature, so that you can decide to show only results of some sources.
  • hardcode retrieving some of the device settings.
  • actually implement the settings views (this is actually much harder than what I thought it would be, when i want to do it dynamically, so if volumio is changed, it does reflect to the app without update needed)
    -implement settings page for the app itself.

If i may ask which plugins you guys use? (Music source plugins like spotify etc.)

Iā€™ve come to conclusion that one of the crashes im seeing, but cannot reproduce is caused by plugin miss using the JSON fields.

I know for sure that the proplem is not

  • tidal (+ connect)
  • spotify (+ connect)
  • qobuz

if you guys have used other plugins to play content while using the app without proplems, would be great if you can tell me, so i can grow the list of plugins which does behave nicely, perhaps this way the one plugin causing proplems could be found without me investing hours to install all and test.

Since I have a Volumio Primo I have for the moment only used the standard plugins for Spotify/Spotify Connect/Qobuz (+ Tidal before I cancelled that subscription)

Ive made some optimisations for this now, or to browsing the ā€œMusic Libraryā€ section in general, its alot faster now than what it used to be.

Also added Search for Artist, Genres, Albums and Playlist sectionā€™s, lets see if i keep it that way, or make the general search instead contain options to search from source X.(Efficient paging + section based search is kinda impossible to archieve with the apis present in volumio, or i have missed something within the apiā€™s)

internally i have got rid of alot of duplicate code. This should help finding bugs, since if i broke something it will be broken everywhere in the app, not in just one section.

[TODO before next version]

  • Will apply some enchancements for the Playlist section to have the ability to delete playlistā€™s aswell as create new ones with ease. (Do we need anything else in there?)
  • Have to fix connection screen, there seems to be some rare/edge case where the app crashes for yet unknown reason.

Also would you guys find it usefull if the favourite section would contain favourite Artist/Albums aswell?
i personally find it stupid to browse to Tidal/Qobuz/whatever to see favouriteā€™s, when there is allready ā€œTop levelā€ Favourite section.

[Update] (next version live soon)

  • Searchfield added for Artist, Genre and Album sections
  • Retrieves Volume and Playback Modeā€™s as set via volumio settings, should adapt to changes at runtime if these are changed (Very experiemental, with only some testing done)
  • Optimisations for browsing USB/NAS etc
  • Some bugfixes.
  • Added ā€œEmpty Stateā€ when there is no items to browse(Before this it did just ā€œhang inā€ with the loading screen)
  • All Dependancies updated to up-to-date versions
2 Likes

It seems i injected couple of bugs to the last version, sorry about that, will try to provide an hotfix today.

Something good aswell, my modem have been misbehaving today and LAN is slow as heck as well as everything and i finally managed to reproduce one bug that have been haunting the app since very first version, as i have been suspecting it was related to slow LAN network which caused the socket(the low level java implementation) to timeout and throw an error in a place it should have not.(Should give my ISP a credit for this, but i guess i still complain because the new modem/router i got is bad)

There seems to be some issue with retrieving the volumio settings for some users, as a fix if it fails iā€™m going to use default values of ā†’ max volume = 100, Step = 10 and Continuous playback mode, instead of let the app crash like it does currently.

E: Just pushed update

  • Improves the backround service connection state observing.(In rare scenarios, it would not start observe the socket state, thus provide no info for notification and volume controls not working)
  • Fixed an issue where string literal was accessed with negative index == CRASH.
  • Fixed an issue with slow/unreliable networks.

There was allready nice streak of days without single reported crash, lets see if after these fixes it would continue, and we get closer to first release version.

I have tested following plugins to try find out the one crash bug ā†’

  • 80s80s Radio
  • hotelradio
  • radio nowy Swiat
  • personal radio
  • podcast
  • RADIO 357
  • Radio Paradise
  • SWARM station
  • spotify(+ connect)
  • tidal(+connect)

These all should be fine, as they send responses similar to volumio ā€œnativeā€ system.

  • Phish.in
    Does cause a crash if one tried to navigate in here, its because of missing ā€˜uriā€™ field in the navigation responses, in future the app will silently hide this browse section if the plugin is installed.

So yeah iā€™m still looking for the plugin which causes the issue im getting reported over and over again.

If some plugin author happens to read this, its some of the following fields that is used as something else than numeric type or null ā†’ ā€œpositionā€, ā€œseekā€, ā€œdurationā€ or ā€œvolumeā€, sadly i cannot pinpoint the exact location as i am not able to reproduce the crash myself.

Now when i got ā€œallā€ the radio plugins installed, i try to make the browsing of these sections work corretly as first priority.

Havenā€™t had the time to do any deep testing the latest weeks unfortunately - but I noticed in the new version from today (0.93.4) that it has stopped using the device settings for playback mode that was implemented a couple of versions ago, has that been removed?

Not intentionally, Iā€™ll take a look at it today. It was pretty fast written feature with really naive implementation so guess it just got broken for some reason.

Done some troubleshooting at my end, strange thing is that the app on my Android 6 device behaves correctly - but not on my two Android 11 devices.

1 Like

Thatā€™s interesting, all on same version of the app?(i pushed a update last night to address couple bugs) okay this might be hard to tell actually, i forgot to incherease the version number the device will show.

Thx for report!

It seems i have not implemented it everywhere in the app, from album view it seems to work, but for example Last 100 or favourites it does not. Might this be the case for you aswell?

Yes, they should all be on the same version - when I noticed that there was an update available I forced it via the play store on all of them - but I will double check.! Edit, checked the app info and they are all on 0.93.4 Screenshot_20210914-170725_Settings|690x147

Plus I managed to chrash the app on Android 6, an error report has been sent.

1 Like

In Qobuz it does not work for my tracks, but works for my albums and my playlists - when the app uses the correct playback settings. Still havenā€™t sorted my NAS, so no local files at the moment.

1 Like

Based on your description it wonā€™t work for local files either then, when browsing throught music library.

For playlist and albums, it is by design that it takes only the album/playlist/artist clicked and queues only that one item, this is regardless of the playback mode. In the other hand if you are looking at list of tracks as in qobuz favourite tracks section it ā€œshouldā€ follow the playback setting, which it is not doing correctly at the moment i just tested it and was able to reproduce the fault.(Iā€™ll try to fix this tonight when I get kids in the bed)

Edit: Update is out, should be live soon.
Fixes the playback mode behaviour for most if not all cases, and Play button in favorites section