Its been long since last update. Here I present a pre-alpha of the android application along with the changes required in fred. It presently supports bluetooth and wifi-direct based reference exchanges.
The code for the server on home node is more or less unchanged from the previous update and the main changes are on the android part. Some of them pertain to UI and code structure: The UI had to be changed completely in order to support old versions of android. Presently, the main thread serves as the UIThread and it has a handler. Any other thread which wishes to change the UI sends a message to this handler and the UI is updated. There are some concurrency issues left out but these are rare cases (for example, a new node - other than homenode is detected on our LAN while we are exchanging noderefs with a friend) and some work is left on this front. Other than these, UI issues are fixed. Bluetooth: I had to face various compatibility issues, especially on old android devices (<= android 2.1-Froyo). These devices cannot connect with newer devices in the way they are meant to i.e. as described is Android SDK documentation. Following suit from http://stackoverflow.com/questions/3397071/service-discovery-failed-exception-using-bluetooth-on-android, I had to use java reflections to grab a bluetooth channel and force connect. Note that this isn't so insecure as it sounds because any bluetooth connection requires initial pairing. Alternatively, we can only support devices > android 2.1. General Incompatibility Issues: For example, android ships Bouncy Castle in its packages but doesn't pack any one version completely. We cannot build along with the official bcprov...jar because it gives rise to class conflicts with pre-shipped versions. The most used solution is to use spongy castle (modified bouncy castle) but I used jarjar to rename the classes and ended doing the same as what spongy castle does. Several such compatibility issues cropped up and delayed my project and I am determined to keep it up and complete in time frame To be implemented: #1 QR based exchange - This should be for mobiles which couldn't use any other methods because of lack of hardware / any issues #2 Exchange over internet : Some discussion is needed in this respect but in general, public keys (DH) are exchanged by QR and the actual noderef is sent over internet (email?). This would be received by other mobile/ node(?) To try out the app: Build using Eclipse + Android SDK or ant + Android SDK from source https://github.com/NiteshBharadwaj/Freenet or alternatively, could be downloaded form http://www.mediafire.com/download/8h6889jtqpott5v/Freenet.apk Also, the modified fred and modified mdns-plugin need to be forked and built from https://github.com/freenet/fred-staging and https://github.com/NiteshBharadwaj/plugin-MDNSDiscovery-official _______________________________________________ Devl mailing list [email protected] https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
