Don't worry, I won't rewrite everything. However, there is still some very old code in the current XBMC Remote for Android that is hard to get out. So why not start from a blank slate.
The three major changes of this playground are:
- Use
JSON-RPC
instead of old, buggy and soon-to-be-goneHTTPAPI
. - Keep a local database for offline use as well as faster browsing.
- Use a fragment-based design for easy tablet adaption.
Apart from checking out the code, you'll need to include Google's compatibility package android-support-v4.jar
, which is included in the SDK. Place it into the libs
folder of the project and reference it in Eclipse.
Oh, and you probably want to update the IP for your XBMC, that's hard coded at AudioSyncService
.
Currently, there is a home screen and a screen for the music library, which contains three tabs the user can fling through. Clicking on the refresh button will trigger the service getting artists and albums from XBMC. These are the only entities implemented so far.
Then there is a tablet layout for the home activity as well as a consistent action bar for all Android versions. It's far from final, but we now can keep completely separate layouts depending on the type of the device.
There are a few things I'd like to have working until we start integrating the code with the real thing (feel free to request more):
- Implement the file browse tab which will not query the database but XBMC directly - of course not everything is fetched via the local database.
- Make action bar buttons dynamic depending on selected page (e.g. there should be no refresh button when the file browse page is selected).
- Create a layout that looks good on Honeycomb. See also Blog article here and here.
- Figure out a faster way to manage updates. Right now, everything is re-inserted, with a
ON CONFLICT REPLACE
constraint on the ID. Importing 1.200 artists and 500 albums takes about 10 seconds. Seems pretty slow to me. - Switch to
HttpURLConnection
instead of Apache client. See also Blog article here. - Move as much layout stuff as possible to styles.
- Add sorting to lists.
- Use AccountManager for managing XBMC instances. See also Blog article here.
The goal of this project is really to create a nice architecture that can be easily extended later. The idea is not to start adding all media types XBMC has to offer right now, but keep it simple and extend architecture-wise until we have a good base.
Now that the code base is still very small, everybody is welcome to fiddle with it and extend it. I'm looking forward to pull-requests and hints, comments and suggestions. Please use GitHub ticket system for bugs or features that are in relation with this sandbox, not the Google Code page of the original project.
A big thank you goes to Google for open-sourcing their very clean IOSched app. There is some borrowed code and design patterns in here.