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

rest api is really good :lying_face: :exploding_head: :dizzy_face: works in every place different


Tested with version from message 86.
Running with 2 installation of Volumio V3.097. 1 on rPi3-model2 and rPi4-4GB.

BUGS:

  • Detection instances: Detection is very random. Sometimes I see both, sometimes only the last connected. It seems to be caused by missing waiting time. As the fastest rPi4 does always appear. The slow one rPi3 is miising 90% of the time.
  • System => Switch => Application crashes. But need to do this in order to change from instance.
  • Every action done on the music library, located on my NAS, takes 2 seconds to respond. (browsing, opening album, load albumart, using back ). With an USB library it works smooth.
  • Opening Albums, shows 0 Albums while loading

    image
  • Albums’s ?
  • Genres => select genre => select album => only shows track, top album art missing
    image
  • Inconsistent use of icons in webradio
    image

Working:

  • Select instance by IP
  • After crash (caused by system => switch) when both instance are shown, I can select either one of them. application will load.

So far my contribution

1 Like

Yes, i believe i have sorted most of it now. Give test version soonish. Now it should also properly persist the addresses of devices manually connected.

This should be fixed now aswell, found it out as soon as i installed the volumio on my pc and had two instances.

How it works on Web gui? i dont think i have any optimisations for this part yet and its using the slow navigation’s what was before for albums etc aswell.

So it seems, my “type resolver” does not pick it up as album, so it opens it up on general navigation view instead, will try to find an regex to correctly pick it up.

I try to investigate this, it happens on elsewhere also, for some reason the “default” picture is not drawn on the view when the request to load the image fails/timeouts.

thx for feedback!

1 Like

The Web gui works without issues

1 Like

Okay, here you go → VolumioClient__release.zip (2.3 MB)

It does still need an fix for the case where the “getSystemInfo” is not working properly im on it, thought i believe this should be fixed at the volumios end.

if it does not find your device, even after once manually connecting to it with ipaddress. try → “http://ipaddress/api/v1/getSystemInfo”(ie. http://192.168.1.103/api/v1/getSystemInfo) in your pc or phone browser, if it shows up like for me above, then its an issue of the device not working properly, its in some random state from where it wont response.

Even if that happens, manually connecting to that IP address should now work, it just simply wont show the device in that list, since i have not been able to verify its volumio device.(i dont want for example to show some printer in the list, which would happen without the verification, then everyone is angry and the app is sh*t because it shows random devices as volumios)

I sincerely doubt that this issue is related to the device in question, as calling it manually works. However the rPi3 response is slower.
But I see it seems to remember the last one correctly, now It shows only the rPi3 not the rPi4

Solved:

  • System => Switch
  • Genres => select genre => select album => fixed

Bug:

  • Every action done on the music library, located on my NAS, takes 2 seconds to respond. (browsing, opening album, load albumart, using back ). With an USB library it works smooth.

  • Inconsistent use of icons in webradio

  • Found a new one, webradio, not a bug but a bit



    (A bit creative to hide my token)

2 Bugs solved, 2 remain as indicated. we’re getting there

1 Like

Not in every case, there is ongoing issue with the Google’s NSDmanager aswell related to finding devices with same service which is issue for automatically finding all the devices everytime.(I’m looking for alternative way of scanning network now, until google gets their stuff together)

after manually connecting to the device which can’t be found at least once, it should not be an issue anymore to find that device, since i already know the IP address on next launch and directly make the rest API call on it to identify, if it still then don’t show up I’m quite confident that it’s the rest API related bug in this case.(for me it refuses to find another of the devices aswell, but when i manually connect to that device once, then its found on every launch after that, on all of my test devices)

but in cases where the volumio device fails to response on the rest API call, it’s 100% volumio backend fault, at this point the official volumio app won’t find the device either, same goes for sound@home. I don’t think we all the made very same programming mistake.

About the webradio, for some it returns transparent art, this is same for web GUI, i won’t waste time on this at least for now, since a general fix for this won’t be that easy. It does however now load the radio icon for all radios that does not have art with them.

I think i need to limit the line count of song title :slight_smile: good catch!

I just mentioned it, I don’t think it’s a show stopper. You can always add via IP. Volumio is not the only one having this issue. It’s know by Roon and Audirvan, to name a few.

On the weburl, if you exceed a certain length, just display the station name and as track something like web radio (depending on the source) the WebGUI of Volumio doesn’t do a better job, but with the app it’s more visible.

Yeah I was thinking that if the urls contains “some station.mp3” or so at the beginning i could cut it from there, that’s in my opinion the relevant information from there, since it usually follows up with random numbers and letters. Ofc if i find a way to get rest of the information from there i will use that implementation.

I still got one thing I want to try with automatic search, if it works cool, but however it goes, i think i put the automatic finder on bottom of the Todo list and focus on other more important things.

That is dangerous, Then you need to define all different type of extension like mp3, AAC, AC2,
 Might become troublesome to maintain and you might end up with the weirdest names.
Not sure what is a proper/solid way to handle this. As this issue might become visible in both “My Web Radio” as “Favorite Radios”. So maybe just accept it, and let the URL scroll (1 liner) when it doesn’t fit the screen. (At least when your able to detect it.)

or just hide the line if it’s longer then a normal lenght of a name.
most of the time the radio name is shown in a other part.

Yes it quickly becomes a mess sadly, but i do have made some precautions and separated this kind of item parsing for all different item types as invidual objects, to not mess with ie. Spotify item parsing when changing code for how webradio item should be.

Basically i do it like

  1. Make a call and receive Json response.

  2. Parse as Json data classes

  3. Fix album art where needed.

  4. Map all items as (Album, Playlist, Artist, Track, Stream or Folder(folder works as holder for uknown aswell) so i have 6 type of sealed data classes to deal with in the UI.

  5. If the type needs some special handling or data transformation i do it now, to not cause performance hit on other type of items.

This way i have separated the code which should ie. Try to get the information from webradio uri, from all other types of items.(i also end up with small functions which are easy to change in future, without breaking something else, since it will only affect those one type of items in upstream flow of the application)

Having real problems connecting with latest client release. Sits on ‘Finding Volumio’s’ page without finding any. If I input the IP address & connect they appear (and persist) in the list, but I can’t connect to any of them after a certain amount of time swapping between them.

(Unimportant to functionality, but text on that page should read “Volumios” not “Volumio’s”)

Hmmn, does it crash or what happens? if it stays on the loading screen, does the text change to something?(would let me know that in what point it stops doing anything) when the device appears in the list, it should be connectable, since i always verify via rest api that the device is in there and that its volumio device even when switching i test that the device is still in there, before showing it.

Will fix :P(aand its fixed)

Doesn’t crash, but doesn’t load device data either.

Edit: all views move down & animated image gets bigger, but doesn’t go to device.

i think i somehow got this reproduced when i was at smoke with my phone, now with PC attached ready to get debug information, it obviously is not so easy to reproduce anymore argh.

hmmn, okay as of writing i decided to test what happens if i let it look for the devices and kill wifi connection(to make it fail on purpose), it goes stuck just as you descriped it when i hit item in the list to connect.

this will let me debug the application behaviour in the sense if something goes wrong when setting up the websocket connection, it seems currently i have no handling for that, and live in miracle world where it would never fail.

This is propably not what happens for you, but hopefully resolving this would also help in fixing your case.

When at testing the switching, also found multiple bugs. ie. Favourites are from the first connected device, it seems i dont clear those, neither reload etc similar app state bugs.

I must rewrite the favourites part to use rest api anyway, to load the Local/spotify/tidal/qobuz favourites in same place without affecting other browsing in rare occasions.

Sorry for the delays, i needed to do some refactoring on the backbone of the app which is soon hopefully release ready.(Yes, i make the library which implements websocket api’s and rest api open source when its cleaned up and do have all the possible method calls)

Im also removing all unused recources and merging some of the one’s that stay, so i don’t have duplicates in the codebase.(Easier to maintain in future)
This should make the app consume less space on the device’s aswell, thought i don’t think that the current install size of ~8mb is an issue for anyone anyway.

This should be fixed now, UI can still bug out like that, if there is connection proplem at the very moment you initially try to connect, but it should not go to a state where “nothing” works anymore, just tap another device or same one from the list, or manually an IP.(Will work on resolving the UI quirk in there)

Now there is limit that no text will occupie more than one line of text in the “now playing screen”, which for now will do and that text mess should not happen.

I think i will hide the “info” text, until data is loaded. Propably no other ways dealing with that?(same should propably be done for all the views with info text)

[Other fixes]

  • Couple of device rotation related bugs, which made the app use 2x recources, both in terms of ram and CPU.
  • Favourites now properly load for the device connected
  • Fixed an crash on tablets and perhaps some very big screen phones, with Albums view.
  • Updated Android and thirdparty dependancies.
  • Compiled against Android 12 SDK(This might be cause of the device finder failing, need to investigate that a bit, and if its an issue i revert to compile against Android 11 SDK)

Im still aware of couple minor bugs which i intent to fix before uploading to playstore.
I will try my best to get it all sorted today/tomorrow, but my time is bit limited now sorry for that.

1 Like

Take your time, don’t rush it.
Will follow this topic, until a new version is released for testing.

1 Like

Finally found some time, i just uploaded the new APK on store, will take some time before available.

On top of my last post fixes.

  • Fixed artist, album, genre views showing 0 when loading.
  • Fixed/made consistent animation for all views which pushes content out of view.
  • Some enchantments for the device finder, for me it works consistently now with 2 volumio devices in network, on all my test devices.
  • Overall the look should be more consistent now.
  • Enhancements on JSON parsing, should me more resilient now versus some rare cases where fields are not what those are supposed to be.

For the future plans

I have made an observation that tidal/qobuz items do return more data than rest of the sources, this should let me implement “go to artist” and “go to album” features on those sources which is great addition i believe. There is some data about the audio quality aswell, which lets me shows if it is lossless/hires easily.

Also going to work with the USB/NAS source browsing now, since it’s pretty much the only place left with the old and slow navigation system.(just need to setup NAS first)

Also the long press “dialog” is going to go over an major surgery now, to include all possible actions per item type.(i don’t think i ever mentioned, but you can long press albums etc in the grid view for small context menu)

Well, slowly but surely I am making progress, hope you all can enjoy the app as much i do, when we have all the features on board.

2 Likes

[Update]

I just noticed i have broken the “message popup” on last build, will fix it for next version.

For tracks i have implemented “Go to Artist” and “Go to Album”, and for albums “Go to Artist” (This works for local music collections, i do have my collection on USB, but i believe that if from other sources the music is also indexed behind Artist/Album sections, those should work equally good)

From your playback Queue, This also works for Qobuz and Tidal tracks.

“Now Playing” screen favourite indicator works now, can also remove from favourites in there.
“+” sign next to favourite indicator, opens popup to add on playlist or go to artist/album for local/tidal/qobuz tracks.

3 Likes