wiki:BluePrint/Mobile

Version 64 (modified by Fran Boon, 13 years ago) ( diff )

--

Blueprint for Mobile Clients

We want clients on Mobile devices to be able to talk to Sahana Eden servers.

The simplest way to do this is to provide a layout for the web application suitable for smaller screens:

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:

Using the open XForms standard means that we can support handsets using both Android & J2ME.

XForms editor:

XForms can be submitted using SMS by including the encoding format within the XForm so that client & server agree on the encoding:

Android

OpenDataKit have a suite of tools to use on Android.

ToDo

  • Get the newly-developed features merged into ODK Trunk:
    • jaxdroid work on Sahana compatibility
    • access to Image Library
    • Wireless location fix
    • SMS form submission
  • Dropdown support within the forms (which will be difficult to FKs)

  • Client-side validation where possible (which probably needs to be added/maintained manually...but we need somewhere to put these)

  • Can the client currently understand validation errors & present these back to the user?
    • We currently send back JSON
  • Send Images
    • Generate appropriate XForms from image_id fields (ideally using XSLT)
      • GeoTagger is a sample Form for ODK which can be used as a template for what needs to be produced by controllers/xforms.py
    • Provide an interface in Sahana through which users can submit these images via ODK Collect & have them stored (in the doc_image table, referenced by the image_id foreign key)
      • controllers/xforms.py
      • ideally use an XSLT to convert the XForm to S3XML
    • See Sahana Eden Mobile Photo Upload Blueprint for additional information.
  • Send Location Coordinates
    • Generate appropriate XForms from location_id fields (ideally using XSLT)
    • GeoTagger is a sample Form for ODK which can be used as a template for what needs to be produced by controllers/xforms.py
    • Provide an interface in Sahana through which users can submit these coordinates via ODK Collect & have them stored (in the gis_location table, referenced by the location_id foreign key)
      • controllers/xforms.py
      • ideally use an XSLT to convert the XForm to S3XML
      • Sahana's Location should have the lower accuracy marked when fix was obtained wirelessly: either source or ce fields (ideally the latter if we have a numeric value available).
  • Support Component Tabs for a multi-table form
  • SMS (building on the current NCSU code)
    • Need to give user feedback that SMS is sent when HTTP fails (currently they just get a 'Submission failed' message!)
      • Should really give them an optional Prompt
    • Need to compress the form submissions
      • Use the OpenRosa SMS API
      • Strip out empty/default fields
      • encode the characters more efficiently
    • Need to authenticate the form submissions
    • Needs to work on the Sahana server side with more than just the controllers.msg.tropo() method (like sms_handler_modem)
    • Should have optional response notifications per complete form to say one of:
      • Submission Successful: URL of record: http://..../
      • Validator Error: xxx
    • Need to delete the submitted form from the mobile device when it the submission was confirmed successful.
    • The current multi-part transmission uses a very custom sequence number, which should be made more standard (& take up less room)
    • Want to be able to download Forms via SMS
      • Push updates from server
      • Pull requests from client
  • QR Code to download the Trunk version (which should update from this version & not default ODK location)
    • UserGuidelines on creating/embedding a custom QR code for a deployment-specific version
  • Have the list of downloadable XForms more easily configurable (currently hardcoded in controllers/xforms.py formList())
    • e.g. Use the same approach as Importer does by marking resources in the modules list in 000_config.py

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 XForms & J2MEPolish:

This supports using Mesh4j to do synchronisation via SMS:

Alternatives

Another XForms/J2MEPolish client (Xfolite):

KUIX can be used to develop lightweight applications which work across may handhelds & forms can be customised easily via XML/CSS:

Old, un-maintained J2ME client for the PHP back-end, which just uses XML-RPC (=> requires Internet):

iPhone

Sahana Software Foundation have a developer license which can be used by anyone interested in developing this.

HTML 5

jQuery Mobile

This has a lot of industry backing for a truly cross-platform solution:

Sencha Touch

Cross-platform (Android/iPhone) HTML5 environment based on ExtJS

Mapping

OpenLayers now has touch support:

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:

Taking the Map offline:

OpenStreetMap on Android:

Google Latitude woulkd make an excellent Mobile Presence tool:

Other projects

Note: See TracWiki for help on using the wiki.