Sorry for the long question, but I want to be sure to define my problem clearly.
For my thesis (in aerospace engineering, so not much programming experience) I want to develop a (prototype) mobile application which will facilitate the reporting of safety related events in African aviation. Although the content of my thesis focuses on the more technical and sociological aspects of safety (management) I decided to include some practical design for demonstrative purposes.
Considering the criteria I will present below, my first guess is to develop a mobile app using PhoneGap or something similar. But life can’t be that simple, so I’ll need more than just this single framework. My question to you is, what a convenient and effective approach would be to satisfy the following description?
Quite simply this is what I envision (in layman’s terms):
- A user (pilot, ground crew, etc.) experiences or notices a safety related event
- The user fills out a form (Air Safety Report) about the event on his/her phone
- Additional information (pictures/videos) are attached
- Once a stable internet connection comes available (we’re in Africa) the report/form is submitted to a server.
Important considerations here are:
- The limited availability of internet -> I need a native/self-contained solution/app so the reporter does not have wait with reporting, and which stores data and submits once possible.
- I don’t want – nor should – exclude potential users (for multiple reasons) -> The app should be available on as many platforms as possible (especially BlackBerry and Symbian are still very popular in Africa!).
- I am doing this as a form of development aid and want it to be cheaply available -> open source preferably.
Altogether, the following criteria can be defined: It should
- be open-source
- support multiple-platforms
- allow file attachments (pictures mainly)
- be self contained/native
- support/allow web services
- provide geolocation and date/time support (automate report whereabouts)
- allow camera use for direct attachment (optional, but preferable)
- identify an internet connection and submit the data once possible
- store data until submission
Besides PhoneGap (which doesn’t support image library browsing? -> apparently is possible, see supporting documentation), I have considered the following frameworks:
- Mobl (not tested for all major platforms, no date/time support?)
- QuickConnect (does not support BlackBerry and Symbian)
- Rhodes (meets my requirements as for as I can see)
- Appspresso (doesn’t support BB and Symbian, no date picker)
I’ve read the following thread on stackoverflow:
- https://stackoverflow.com/questions/9058341/how-can-i-send-the-form-data-from-a-native-jquery-mobile-app-to-a-remote-server
- https://stackoverflow.com/questions/6690571/phonegap-choose-image-from-gallery
I think the closest you’ll get to a “convenient and effective approach” that works on as many platforms as possible will be a pure web app. HTML5 allows web-based apps to run even without a connection and store data offline. It looks like these features are supported on Blackberry and Symbian.
That said, your focus on BB and Symbian makes the problem much more difficult that it would be otherwise. Compared to iOS and Android, the number of developers working on those platforms is quite small. Sticking to a pure HTML5 approach could help here by minimizing the amount of platform-specific knowledge you’ll need, but I think it’s still going to be a difficult path. Instead of looking at what’s popular right now, think about what the mobile market will look like between the time the app becomes available (say, 6 months or more from now) and over whatever period of time you plan to support the app (several years, at least). Also, consider your target demographic — for example, it may be that pilots are more likely to carry an Android or iOS device, especially considering that there are a number of existing aviation-related apps available for those platforms.
If you want to set this up as a community open source project, and you just need to start with a prototype, I’d actually argue it doesn’t matter to much to start with.
Eg. If you have an Android app and a published good API and server platform, when the project starts to take off you’ll probably find someone to do an iPhone app, either natively or in a cross platform framework.
Also, you could start by looking at http://www.ushahidi.com or http://www.fixmystreet.com and see if those open source platforms could be a base for you to build on. They both have many open source client apps you could use.