In the computing world, the hardware is often a step or two ahead of the software. The simple reason is that once the hardware is released, it takes time before software developers start creating applications for the new hardware.
Such is the case with BlackBerry. However, the latest versions of the Blackberry devices-including the Storm-now have an SDK (software development kit) that lets Java developers create software that takes advantage of all the great new features in the BlackBerry.
For example, the Storm has a lot of cool new features, including an accelerometer-a built-in motion sensing device that lets the Storm know what angle it's being held at relative to the ground so that the screen can automatically rotate 90 degrees when you hold the Storm in your hand.
Additionally, the Storm features a full-size touch screen, unlike previous BlackBerry models that divided the front of the device between screen and keyboard, as well as other new features.
To accommodate these new features, Research In Motion, which manufactures the BlackBerry, has released a beta version of the new SDK, including programmatic support for the new features. In this article I'll look at what's available in the new SDK, including some new and some not-so-new features.
The motion-sensing devices seem to be all the craze these days, and I'm one person who has fallen for it, having recently bought a Nintendo Wii. Although mobile devices such as the Storm use a totally different technology from the Wii (the Wii uses infrared transmitters and software triangulation), as well as Apple's iPhone (which has a patent), the end result is the same cool feeling that the device somehow knows where it is relative to the Planet Earth. (I tried to get information on how the one in the Storm works by searching the online U.S. Patent database. I quickly became frustrated after discovering that RIM has nearly 1,200 patent applications in process that haven't yet been approved. However, I did locate a patent application that seems to describe it. If you're curious, go here and search patent applications for publication number 20080034321.)
To accommodate the accelerometer, the SDK includes APIs for detecting both the orientation of the device (either the top is up, or the left side is up), and the acceleration of the device. By detecting the device's orientation, your application can change its orientation between portrait and landscape accordingly. In addition, by sensing acceleration, your application can detect movement along all three coordinates in space.
The only stickler is that the application shouldn't constantly poll the accelerometer. According to the documentation, the accelerometer takes a great deal of battery power, and shouldn't be on constantly. This is because when an application opens a channel to the accelerometer device, the BlackBerry continuously polls the motion sensors. Therefore, your application should poll it periodically only as needed. (Although I suppose in the case of a game, a user would need to poll at a high rate to keep up with user movements. The key there is for the user to open a connection to the motion sensor, get the data, and immediately close the connection. Then on the next poll, do the same thing.)
Finally, the Storm has built-in capabilities to turn the screen sideways when the device moves. The application can query the current orientation, and even turn off this default behavior.
The APIs include support for the touchscreen. The device can detect when the user pushes on the touchscreen, when the user moves the finger across the touchscreen, and when the user lets go of the touchscreen. Additionally, the device can capture events for gestures, and even double-taps (the latter of which is missing on a lot of touchscreen devices).
What's interesting about the Storm's touchscreen is that not only can a user touch it like any other touchscreen, they can actually push on it, and the screen will click like a large button. When I first heard about this, I thought that was a little odd, but it actually has a great benefit in the way of not accidentally clicking when you don't want to. The software in turn can respond to just touches as well as clicks of the screen. At a low level, a user can receive events for pushing a click on the screen, and letting go of a click on the screen.
The touchscreen includes a built-in on-screen keyboard that the application can also make use of. In addition to simply reading text from the keyboard, the application can control the keyboard itself. The application can determine if the keyboard is visible, and can also display or hide the keyboard.