= Blueprint for Mobile Clients = [[TOC]] We want a versatile client for Mobile devices to be able to talk to Sahana Eden servers which can be easily maintained and adapted to meet new requirements rather than the point solutions which have been developed to date which are unmaintained & not adaptable. The ideal would be the ability to generate the code using the same core framework and data models. XForms are promising here, although our current XForm interface isn't complete (doesn't handle either Images or Locations) and can only handle data entry, not reporting. == Online == The simplest way to do this is to provide a layout for the web application suitable for smaller screens: * BluePrint/Mobile/Portal * [wiki:BluePrint/CSS#MobileView] An initial protoype should be developed in static HTML/CSS which can then be ported to Eden. - download a couple of pages' HTML & CSS & tweak the CSS until it is fully resizable. == Offline == Ideally, though, they should have local storage for use completely offline & then be able to sync back to the server using whatever connectivity becomes available: * SMS * compressed multi-part SMS to get maximal throughput * [wiki:BluePrint/Messaging#Micro-Syntax] * forms should be updatable via SMS * photos should stay offline until the phone has better connectivity, but then the photo needs to be used to update the same record * GPRS/3G * !WiFi / Serval?http://www.servalproject.org/ * !BlueTooth * J2ME eedocs: * ''tbc'' * Python docs: * Intro: http://www.devshed.com/c/a/Python/Bluetooth-Programming-using-Python/ * http://lightblue.sourceforge.net/ * http://code.google.com/p/pybluez/ Using the open XForms standard means that we can support handsets using both Android & J2ME. XForms editor: * Written in Django, so should be easy to port to Sahana Eden: * http://github.com/nyaruka/rapidsms-xforms-builder * Video walk-through: * http://www.screencast.com/t/YmYwYjUzMz * http://www.youtube.com/watch?v=PyjEruT5uoU * Written in GWT, so includable in Eden as a simple HTML page: * [http://code.google.com/p/purcforms/ PurcForms] - can import the output from our controller, powerful but not for non-techies! * [http://design.openxdata.org Demo] * [http://ox-designer.blogspot.com OX-Designer] - more basic, but pretty. No import yet. Built for OpenMRS (which uses ODK) * Written in Ruby Rack, so harder to integrate as-is: * http://code.google.com/p/opendatakit/wiki/ODKBuild XForms can be submitted using SMS by including the encoding format within the XForm so that client & server agree on the encoding: * http://bitbucket.org/javarosa/javarosa/wiki/SMSSendingAPI == Android == * DeveloperGuidelines/Mobile/Android * UserGuidelines/Mobile - how to use ODK Collect with Sahana Eden == J2ME == Documentation on the current implementation is here: http://wiki.sahanafoundation.org/phase2/doku.php/dev:j2meclient * This needs updating to the latest version of !JavaRosa !JavaRosa is a fast-developing framework which uses [wiki:XForms] & [http://www.j2mepolish.org/ J2MEPolish]: * http://code.javarosa.org * [http://bitbucket.org/javarosa/javarosa/wiki/OpenRosaAPI OpenRosa] - joint project between ODK & !JavaRosa This supports using Mesh4j to do synchronisation via SMS: * http://code.google.com/p/mesh4x/wiki/SMSAdapter == Multi-Platform Mobile App == * http://phonegap.com/ (Open Source) * http://mobiledevices.about.com/od/mobileappbasics/tp/Top-5-Tools-Multi-Platform-Mobile-App-Development.htm * http://www.appcelerator.com/ === Alternatives === Another XForms/J2MEPolish client (Xfolite): * https://projects.forum.nokia.com/XFormsJ2ME KUIX can be used to develop lightweight applications which work across may handhelds & forms can be customised easily via XML/CSS: * http://www.kalmeo.org/projects/kuix Old, un-maintained J2ME client for the PHP back-end, which just uses XML-RPC (=> requires Internet): * http://wiki.sahanafoundation.org/doku.php?id=dev:sahana_mobile_intro == iPhone == Sahana Software Foundation have a developer license which can be used by anyone interested in developing this. == HTML 5 == * http://www.ibm.com/developerworks/xml/library/x-html5mobile1/index.html === Responsive Web Design === Bootstrap (twitter.github.io/bootstrap) has been used to implement a responsive web design in the DRMP template: (https://github.com/flavour/eden/tree/master/modules/templates/DRMP). This could be extended to better support the default template by: * Re-designing the following generic pages for mobile view: * List / Table * Search * Reports * Better supporting maps * Reviewing & Testing for features which don't work on the responsive design === jQuery Mobile === This has a lot of industry backing for a truly cross-platform solution: * http://jquerymobile.com === Sencha Touch === Cross-platform (Android/iPhone) HTML5 environment based on ExtJS * http://www.sencha.com/products/touch/ * http://dev.sencha.com/deploy/touch/getting-started.html == Mapping == !OpenLayers now has touch support: * http://m.openlayers.org * http://www.slideshare.net/cedricmoullet/openlayers-mobile-code-sprint-2011 On our map, the !Panning/Zooming works already, but Popups cannot be clicked yet. We'd also like to move the !LayerTree to a native-style widget. !ExtMap Touch: * http://www.extmap.com/index.php?pid=2 Taking the Map offline: * iPhone: http://www.offmaps.com !OpenStreetMap on Android: * http://developers.cloudmade.com/projects/show/j2me-lib-android Google Latitude would make an excellent Mobile Presence tool: * http://googlemobile.blogspot.com/2011/02/check-in-with-google-latitude.html * http://code.google.com/apis/latitude/v1/getting_started.html == Other projects == * [BluePrint/Mobile/EdenMobileFramework Sahana Eden Mobile Framework] * [http://frontlinesms.ning.com/profiles/blog/show?id=2052630%3ABlogPost%3A8449 FrontlineSMS] * {{{FrontlineForms is a proprietary add-on for FrontlineSMS allowing a mobile Java client to connect to FrontlineSMS and share data with it.}}} * [http://grt.com Global Relief Technologies] * Ranked apps for iOS: http://ios-disasterapps.ideascale.com/ ---- See Also: * BluePrint/Mobile/Portal * BluePrint/Mobile/Portal