Over the past year Oracle's Java Mobile team has been building accessibility support into LWUIT, the Lightweight UI Toolkit for Java ME. Last week Ofir Leitner and I gave a presentation on this work at JavaOne.
In a nutshell, this is what we've done in this research project:
- We defined an initial accessibility API for Java mobile, largely mirroring the Java SE accessibility API defined in the javax.accessibility package
- We leveraged the W3C Web Accessibility Initiative's ARIA specification for metadata tags in this mobile accessibility API (e.g. using the ARIA state properties for the the states that UI controls can be in)
- We implemented the accessibility API using a Broker pattern: providing a separate Broker class that is optionally loaded into the Java mobile runtime alongside the LWUIT application, and which implements the accessibility API on behalf of the LWUIT component
- We implemented an inter-process communication Accessibility Bus MIDlet that handles event tracking and forwards accessibility API calls from assistive technologies to the application (which then get handled by the Broker)
- We implemented several "test" assistive technologies: Java mobile versions of the perennial desktop favorites "Ferret" and "Monkey" (as well as their Java Access Bridge counterparts "Java Ferret" and "Java Monkey" for the JavaSE accessibility API)
- We implemented a prototype screen reader, which uses cloud-based text-to-speech to voice LWUIT applications for blind users
- Working with our partner Fundación Vodafone, Spain we built a set of LWUIT themes for folks with vision impairments - including Large Print black on white, Large Print white on black, and Large Print yellow on black (with some white) - all tested with users with vision impairments as part of the AEGIS project supported by the European Commission
In our talk last Thursday at JavaOne, we demonstrated the prototype screen reader providing access to the standard LWUIT "UI Demo" application, running on a Nokia N95 mobile phone. This nearly 5 year old device uses a 332 MHz AOMAP-2420 ARM11-based microprocessor. It is noteworthy that this phone has about 1/4th the processing power of the iPhone 3GS, the first mobile phone to ship with a built-in screen reader and a full accessibility framework. You can download and play a Quicktime movie showing the screen reader speaking the LWUIT UI Demo application running in the Java mobile emulator.
In an interesting coincidence of timing, the day after our JavaOne presentation of this Java mobile accessibility research, the Federal Communications Commission published their Report and Order implementing provisions of Section 104 of the Twenty-First Century Communications and Video Accessibility Act of 2010. This order requires that manufacturers of equipment used for "Advanced Communications Services" - things like e-mail and IM and SMS - must make those products and services accessible to people with disabilities by October of 2013. Failing to do so by that date when it was "achievable" to do so subjects the manufacturer and/or service provider with fines of up to $100k/day.
According to the International Telecommunication Union, at the end of 2010 there were 5.3 billion mobile phone subscribers in the world. As noted by Mobi Thinking, in their July 2011 report, "Feature phones sales (let alone ownership) still outnumber smartphones 4:1", with less than 300 million of the 1.3 billion mobile phones last year being smartphones. And since most feature phones come with Java, this research has the potential to enable an awful lot of devices to provide accessible user interfaces...
Disclaimer: at this point our work is still research. It is not part of any announced product roadmap. As the standard Oracle presentation disclaimer states, you should not make a purchasing decision based on this research.