This project is to prototype modifications to existing source code of the Android open source project. This is NOT an Android SDK application.
Bidders should be competent in system level programming on Android or at Linux-like platforms and have strong skills in Java and C. System experience in the Android internals and Android framework ([login to view URL]) is a distinct advantage.
## Deliverables
This is one project that will lead to others so if you love system programming and you love mobile computing and you love how Android will change the world - have a look at this!
Android provides Managers, Daemons and Native Services over the top of a HAL that separates applications from the kernel. The goal of this project is to provide Network (3G/EDGE and WIFI) access to only a limited set of processes/applications that a user may run on the phone.
This will (probably) be achieved my modifying the Managers/Services and implementations of Network libraries. The source is freely available at [login to view URL] and emulators for running Android are at [login to view URL]
When a network connection is requested from ANY application/process (I will call it "ApplicationA") the modified code will check with a second service (I will call it "ServiceB") (which you will include as part of the project - the IPC is usually achieved via an "Activity") before executing the network request (e.g establishing a socket connection to an external host). If ServiceB response is that the ApplicationA is NOT permitted to proceed, then your library will respond that the network is "unavailable". IF ApplicationA is permitted to proceed, then normal networking code is established.
The design goal is that the library change will be transparent to all applications and will not affect their normal operation (Android applications are usually built to tolerate "network unavailable" because of mobile phone data network problems).
ServiceB should maintain a SQLite Database for retention of the "permission" and a simple Android App to communicate with the service would allow Add/Delete of rows from the database.
The project is a prototype, so whilst the code should be bug free, it does not require a lot of user "polish" or error checking.
The code MUST be implemented at the Library, Service or Manager layer which are all Apache license. No modifications are allowed at the kernel level because of GPL. I prefer it is implemented at the Library level rather than at the "Application Framework" layer because some applications can bypass and go direct to the Library. It is true that some applications can try to connect direct to the HAL but I am not concerned about this.
I am happy to answer more questions and to listen to suggestions.