Scott's Workblog

This blog has moved! Go to my new blog!

October 02, 2009

Mobile Industry Converging on Device APIs

Mobile Device APIs are programming interfaces that enable widgets on mobile platforms to gain access to specific phone features, such as the camera, battery, call lists and address book. Up until now these have been tied to specific device hardware and operating systems, but there are three ongoing initiatives to reduce market fragmentation by offering standard APIs, enabling a widget to be written once and run on any phone, even if it requires access to hardware features.


The Bondi project of the Open Mobile Terminal Platform (OMTP) has produced a set of APIs and reference model for common device features; these currently include SMS messaging, local files, media gallery, location, camera, and communication log (missed calls).

These APIs build upon the W3C Widgets specification, which I've posted quite a bit about on this blog previously, and are accessed quite handily from JavaScript; I'll show an example in the next post.

Bondi has been implemented by a number of operators, system and device manufacturers including Microsoft (Windows Mobile 6.0), LiMo (Linux for Mobile), O2, Vodafone BetaVine and LG; there are some SDKs available for developers, and even an emulator so you can test out your BONDI widget on a virtual phone. You can download it for the Eclipse IDE from the LiMo Foundation.

JIL (Joint Innovation Lab)

JIL is an initiative of Vodagine, Verizon Wireless, China Mobile, and Softbank Mobile, and like Bondi is also focussed on developing device APIs and related services that build upon the W3C Widgets specification.

One of the criticisms of JIL is that it "jumped the gun" somewhat on both W3C and Bondi in a rush to get to market quickly, and in the process has made the landscape more confusing for developers. However, at the recent Over The Air event I attended, Vodafone's Rick Fant explained that the group would be working with Bondi and W3C in future.

W3C Device APIs and Policy

The W3C DAP group was formed recently to develop a common device API specification, based on initial submissions from Bondi, JIL, Nokia, and Opera. Hopefully this will pull together all the different device APIs out there and come up with some common standards. Some pieces of the puzzle are already shaping up, such as the W3C GeoLocation API specification

Not Just For Mobile Phones

One of the interesting things about all the device APIs I've seen is how many of them can be applied outside of mobile devices: for example, most new computers have built-in webcams, and browsers can provide location services using technologies such as SkyHook. Web standards for accessing these capabilities gives developers an opportunity to create even richer applications and widgets without having to do much more than add a JavaScript library - in my next post I'll explain a demonstration I've produced of doing this using Apache Wookie (incubating).

main archive