Smartphone App

In my blog entry The World of Computer Vision, I talked about picture matching technology that will be used in a smartphone app. This page talks about the development of that smartphone app.

I am developing a smartphone app with the objective to reach as many smartphone devices as possible. With the multiple smartphone platforms available in the market, it can be a difficult task to target all the platforms. Each platform has its own particular smartphone operating system and development support.

I previously wrote about Smartphone Market Share which provides a good view on the leading smartphone platforms. The leading smartphone devices are covered in a recent Gartner report "Sales of Mobile Devices in Second Quarter of 2011 Grew 16.5 Percent Year-on-Year; Smartphone Sales Grew 74 Percent".

Native versus Web App

In a manner similar to the development of distinct software for the Windows PC versus the Apple Mac, I could develop native apps that run on the myriad of smartphone devices with their operating system as well as physical screen size differences. An alternative approach is to develop a Web app for smartphones which has the benefit of reduced development effort. This approach is akin to the development of Web apps which can be accessed from Windows PC and Apple Mac computers, instead of writing native software applications for the respective operating systems.

The theory is "write once, deploy everywhere". In practice, there are still device and operating system differences which must be bridged in the implementation of my smartphone Web app. I leverage the use of industry standards HTML5, CSS3 and JavaScript to develop my smartphone Web application. I rely on HTML5's XMLHttpRequest for communication with the server backend for my app. The server is where the picture matching is performed.

Market Share and Target Platforms

From the market share data cited above, my main targets are Android, iPhone and BlackBerry. Windows 7 mobile has too little market share (1.6%) for me to consider at this point. My access to device and operating system specific functionality is provided by PhoneGap which provides a unified Application Programming Interface (API) to the disparate operating platforms.

The development of my Buy Books smartphone app is done on a Window PC along with the development of the picture matching technology for the server backend. Testing is performed on emulators or simulators running on the Windows PC. Final system testing will need to be performed on real physical smartphone devices.


My Android emulator experiences have been disappointing. PhoneGap 1.0 supports Android 2.0 and up, and I have tested with Android 2.2 and Android 2.3.3 running both of those emulators. My biggest problem with the Android emulators is that my app does not run cleanly - first couple of times, things run fast as expected, then it slows to a crawl (there must be emulator issues). A restart of the emulator solves the problem. Stopping my app in the emulator and then starting it up also solves the problem and I can run two more test runs, before facing slow-down.

How do I know it is not my app? I ran the same app without any changes except for pulling in a different PhoneGap JavaScript file for the BlackBerry and my app runs fast every time. However, there are challenges with the BlackBerry simulators.


I have tested on the OS 7, 6 and 5 BlackBerry simulators (BlackBerry Torch, BlackBerry Bold). General conclusions are OS 7 simulators are too early and prone to crashing (Android emulators crash as well) plus my app is rendered with a small size which I feel should be larger for usability. I am in early stages of my learning about BlackBerry simulators so I don't know if there is a way to control that (without having to redo my CSS for specific platforms/OS versions). OS 6 is more stable and renders my app in a decent size comparable to the Android 2.x view. OS 5 does not run my app with many things failing e.g. CSS3 gradient background. Furthermore, the simulator interface is not as advanced as OS 6 and 7 and it is hard to navigate the simulator.

Other Considerations

My next step is to actually test on real devices and I am thinking an Android smartphone without service provider interference is my target. I need to test the actual camera function integrated into my app. I can test with direct USB connection and/or WiFi connection on my home router. I am scratching my head for iPhone testing (first on emulators, and then onto real devices). I need a Mac to build the app (due to Apple licensing) or alternatively, I can seek a "Web build" capability. Then I need the iPhone emulator which is not supported on the PC.

The smartphone world is both an opportunity and a challenge.

Blog Entries Listing
2010  Aug  Sep  Oct  Nov  Dec 
2011  Jan  Feb  Mar  Apr  Jun  Sep  Oct  Dec 
2012  Jan  Feb  Apr  May  Jun  Oct  Nov  Dec 
2013  Jan  Feb  Mar  May  Jun  Dec 
2014  Jan  Mar  Jun  Jul  Aug  Oct  Nov  Dec 
2015  Jan  Feb  Mar  Apr  May  Jun  Oct  Nov  Dec 
2016  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
2017  Jan  Feb  Apr  Oct 
2018  Jan  Feb  Mar  Apr 
2020  Mar  Apr  May 

Visit igtsoft.com for
your photography needs.


If you think your teacher is tough, wait until you get a boss. He doesn't have tenure. - Bill Gates