Nice mod! Works fine on my setup. It's snappy and responsive, and I like the way the server communication is handled, looks like network activity is kept to a minimum.
I've actually done this myself, integrating the jukebox tab with the existing "now playing" tab and including a setting to enable/disable jukebox control per server instead (so you would have a jukebox "now playing" or a on-phone "now playing" depending on the server). It's still slightly buggy and needs some cleaning up, however, so I haven't done anything to get it included "officially" and now it seems I may be too late to the ball anyway

But do give me a shout if you'd like to exchange ideas or feedback on the two solutions.
A few UI things I found confusing in your mod (but that may be just because I have a clear idea of "my" version, of course):
- Now playing icon is always on, even if the jukebox isnt't playing. Maybe a different icon to show "current non-playing track", so it doesn't look like it's playing? (If you're not in the same place as the physical jukebox and/or if you can't hear any sound, it's hard to know from the UI if it's actually playing. Knowing which song would start when pushing the play button is a bonus, though, thus the idea about the different icon)
- Also (a related point), the "now playing" doesn't advance automatically when the jukebox plays several songs in sequence. This also results in buggy behaviour on the start/stop buttons since clicking them will actually stop/start a different song than the one with the "now playing" icon. The only way I found to force an update to the current song for me was to change tabs back and forth, or using the skip buttons (which seem to re-load the playlist first?). Personally I implemented a polling solution to see what the jukebox status was every 20 seconds or so, not ideal however. (I'd love for some server-side push protocol to be implemented, if possible. xmpp or something?)
- Stop/start button - this looks better as a single button IMHO, start button when jukebox isn't playing and stop button while it is. I realise that this has implications for stuff like detecting "playing finished" etc., same as the previous point really.
- Scroll-to-currently-playing on long playlists. Doesn't seem like your app is doing this at the moment, the regular now playing tab does this so should be easy to implement in your tab as well.
- The volume bar doesn't seem to be updated with current volume level from the jukebox (if you switch out of the jukebox tab and back it's at zero again). The gain value is a part of the jukebox playlist xml so that's an easy fix.
- I also had a random force close while the jukebox tab was open (but not clicking anything at the time). Maybe take a look at what could cause this?

- Code: Select all
E/AndroidRuntime(12555): FATAL EXCEPTION: main
E/AndroidRuntime(12555): java.lang.ArrayIndexOutOfBoundsException
E/AndroidRuntime(12555): at net.sourceforge.subsonic.androidapp.activity.JukeboxActivity$1.done(JukeboxActivity.java:120)
E/AndroidRuntime(12555): at net.sourceforge.subsonic.androidapp.activity.JukeboxActivity$1.done(JukeboxActivity.java:1)
E/AndroidRuntime(12555): at net.sourceforge.subsonic.androidapp.util.TabActivityBackgroundTask$1$1.run(TabActivityBackgroundTask.java:35)
E/AndroidRuntime(12555): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(12555): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(12555): at android.os.Looper.loop(Looper.java:143)
E/AndroidRuntime(12555): at android.app.ActivityThread.main(ActivityThread.java:4196)
E/AndroidRuntime(12555): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12555): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(12555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(12555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(12555): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 1339): Force finishing activity net.sourceforge.subsonic.androidapp/.activity.JukeboxActivity
Thanks again for a nice mod, there's nothing I've wanted more from the Subsonic Android app than a proper jukebox control solution so whatever happens it seems we're going to get one now! Good job so far!