Kodi Community Forum

Full Version: GSoC Proposal : Improved Android Client App
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Improved XBMC Android Client App

Detailed proposal on this Google Doc : https://docs.google.com/document/d/18OW0...sp=sharing

For my GSoC project, I’ll work on delivering an update to the current XBMC Android app - focusing on improving the usability of the app. The re-design itself will focus on updating the user interface to blend in better within the Android platform, as well as support tablet-optimized layouts.

My proposal can be broken down into two parts - updating the user interface and adding some small functionality.
The new UI will follow the guidelines on the Android design site. This would mean giving it an updated look by making it more Holo-ish.
The app will also be responsive, designed to use the extra screen estate provided by tablets.
Extra features I wanted to work on are adding (launcher and lockscreen) widgets and DashClock integration.

I’ll be starting from scratch, borrowing code from both the old repo and latest one in development.
Starting from scratch will allow me to set up the repository to be built via maven.
This will make future development easier since we can set up a continuous integration server (such as Travis-CI) to automatically verify pull requests in the future, by ensuring compilation and running tests against a build matrix.
I also want to add a checkstyle configuration to keep the code style consistent even after the end of my project.
I plan to heavily use the Fragments API to make the application layouts responsive, and use the Action Bar API to keep it consistent with the platform design.
Having the client server communication up first will allow me to keep releasing small builds that I can garner community feedback from.

For the full proposal, check out my Google Doc.

Obviously would love some feedback that I can use to improve my proposal.
A couple of questions that I do have :
1. Is linking to the Google Doc okay as a proposal or would you prefer it embedded as plain text in my application?
2. Is there any section I should expand on, or I might have missed?
3. For any mentors looking at this, I'd love to talk to you! Smile
please have a look here for a design you could use: http://forum.xbmc.org/showthread.php?tid=143242
(2013-04-30, 19:18)da-anda Wrote: [ -> ]please have a look here for a design you could use: http://forum.xbmc.org/showthread.php?tid=143242

Yup already had that concept linked in my Google Doc proposal Smile
Why start from scratch, we have put lots and lots of manhours into the client which you propose throwing away? why?

If you start from scratch this is most likely far to big of a project.
There's actually no point in using the code from the legacy repo since it was solely based on activities and HTTPAPI, both being deprecated by fragments and JSON RPC respectively. The newer sandbox has more usable code, but most of it is simply abstracted layers, and it is quite small, just around 20 classes. I'll be pulling a a fair bit of code verbatim from this repo (especially the client stuff).

The biggest advantage of setting it up from scratch would be that we can use maven. This means I can set up a continuous integration server with Travis CI (for free!) to compile it and run tests against build matrix of devices. I also want to setup checkstyle so that the code style remains consistent across the code base. Both of these will help make it easier to maintain the code even after I'm done with the project.
Ah ok, so you meant from scratch with the UI and the UI stuff? not the business layer and such?
Yeah just for the UI layer. I'll be using the jsonrpc library that freezy has already written as well.

I'll clarify this in my proposal, thanks!
Also to clarify, this is just a remote app, simply an update to the existing app that can be found here https://play.google.com/store/apps/detai...mote&hl=en
This is a grand idea! Very nice Smile
It would be great if you include voice controls: http://forum.xbmc.org/showthread.php?tid=134659
Can you be more specific about the "Extend JSON API to allow streaming over http" part?
What does JSON-RPC have to do with streaming? You can already get the paths to the media files through JSON-RPC and use the /vfs handler of the webserver to access those files.

Furthermore a few days ago I merged a PR that implements HTTP Range support for our webserver which makes it possible to seek in files provided by the webserver. So theoretically you don't need to know about any other protocol than HTTP and just pass the player the URL of XBMC's webserver and the file you want to access and XBMC will take care of whatever it needs to read the file and then pass it on through HTTP. TBH I haven't tried it on an android phone but it works through VLC.