OpenDataKit – entering dates in Ethiopian format

Some of the feedback we had from the initial HEW training last week was that some of the HEWs had difficulty in using the Gregorian calendar. Ethiopia has it’s own calendar which is the normal calendar used for the vast majority of Ethiopians (Ethiopian calendar entry on Wikipedia). Given that we’re asking the HEWs to collect date information, we need to make this as easy and understandable for them as possible – for example, to enter appointment dates a few weeks or months in advance. So over the past couple of days I’ve been looking at creating a date picker widget for integration into ODK Collect that will allow dates to be entered using the Ethiopian calendar format, but will store the date in the database as Gregorian. This transformation is hidden from the user and storing Gregorian dates in the database means we can manipulate and compare dates for reporting purposes, which we’d be unable to do storing Ethiopian dates as strings in the database (we can transform the dates back into Ethiopian calendar for final display).

It ended up being much more straightforward than I though it would be, especially with much help from the ODK Community and with the Joda Time java library already built into ODK Collect. I’ve got a first version ready for testing, so if anyone else is interested in having a look you can download the .apk file for installation on your Android phone.

To see the Ethiopian date picker working you’ll need to load up a form which specifies data picker. You can connect to our ODK Aggregate server at: http://hew-datacollect.appspot.com and download the EthioDateTestV1.5 form. Or you can download the original form XML to put on your own server.

This is only a first version, so any feedback is very welcome – or if you’d like the source code then please feel free to contact me (will put it up somewhere once I’ve tested it a bit more). [Update 19-Aug-11: I’ve now put all the code up as a clone on Google Code at https://code.google.com/r/alextlittle-dc-odk/, so you can see the full changes I’ve made.]

Finally, here are a couple of screenshots of the Ethiopian date picker running in my Android emulator:

Installing Ge’ez Virtual Keyboard on Android Devices

Update (2-Jan-2012): more up to date instructions can be found here: http://alexlittle.net/blog/2011/06/03/installing-geez-virtual-keyboard-on-android-devices/

Instructions for installing a Ge’ez Virtual Keyboard on Android:

  1. Root your device – exactly how this is done will depend on your device and you’ll need to look up on Google how to do this – note that rooting is not the same as unlocking your phone, rooting means you get administrative privileges to update system files, such as the font files we’ll update below.
  2. Download the files DroidSans.ttf and RootExplorer-v2.15.apk and copy these onto the phone’s SD card (or equivalent)
  3. Install and run the RootExplorer application and go to the sdcard folder
  4. In rootexplorer, find the DroidSans.ttf file and copy it
  5. Go to the /system/fonts folder and push the button marked “mount R/W”, the button will the change to be marked “mount R/O”
  6. Paste the DroidSans.ttf file into this folder – replacing the existing DroidSans.ttf file. Leave all the other font files as they are. It’s probably a good idea to make a backup of the original DroidSans.ttf file first, before you overwrite it. Just rename the original file to (something like) DroidSans.ttf.bak.
  7. Now restart the phone and the new font will be installed
  8. Now to install the keyboard, download the keyboard apk file
  9. Copy this to your phones SD card and install the application
  10. You should now be able to switch between the standard and Ge’ez keyboards. You may need to enable the keyboard by going to: Settings -> Language & Keyboard then select check the box to enable the new keyboard
  11. To find out how to switch between keyboards, watch our video:

We have tested this installation procedure on a few different phone models, though obviously we can’t cover every possible phone type and can’t guarantee it will work for every device. If you have any problems/issues then please post a comment. We’d also be very happy to hear that it did work for you!

Posts navigation

1 2
Scroll to top