Google unveiled Android 4.0—codenamed Ice Cream Sandwich (ICS)—this week at an event in Hong Kong, alongside the new Galaxy Nexus smartphone. The much-anticipated new version of Google's mobile operating system includes a unified interface for phones and tablets and a number of significant new technical features, such as face detection.

Shortly after the launch event, Google made the ICS software development kit (SDK) available for the public to download from the Android developer website. The SDK makes it possible for third-party software developers to start building software that is designed for the new version of the operating system. The SDK and the updated developer reference documentation offers a first look at the new APIs introduced in ICS.

We downloaded the SDK, fired up the emulator, and started testing the new features so that we could give you a look at some of the goodies.

Android 4.0 is designated as API level 14. After installing it via the Android SDK Manager, I was able to set up a bootable ICS environment in the Android Virtual Device Manager (AVD). It started up in the emulator and ran as expected.

The emulator's performance still leaves a lot to be desired—it's slow, even on good hardware. Performance problems with the emulator have been a major source of frustration among third-party developers. Google really needs to fix it by providing a native x86 runtime as part of the standard development toolkit. There is an "emulator-x86" binary in the SDK tools directory now and a "CPU" dropdown box in the AVD editor, but it appears that ARM is currently the only target supported by the SDK for Android 4.

Interestingly, the phone environment in the emulator doesn't appear to have the on-screen soft buttons that were demoed on the Galaxy Nexus. That seems to be an entirely optional feature in ICS. When I switched the built-in skin to the WXGA720 (which is presumably the resolution of the Galaxy Nexus) in the AVD editor, it added a "Hardware Back/Home keys" setting to the hardware property list. Even when running at that resolution, with that option set to "no," the soft buttons didn't show up.

Images and face detection

Perusing the new APIs in the reference documentation, I found some interesting new features. The image editing capabilities and filters that have been added to the new image gallery are now available as standard features that developers can leverage in their own applications.

You can see a full list of available image editing features by looking at the constants defined in the EffectFactory class. Said features include red eye removal, cropping, and the ability to adjust brightness and saturation. Android 4 also appears to introduce native support for WEBP images, which are now included in the list of supported media types.

One of the most intriguing new technical features in Android 4.0 is support for face detection. The platform uses this capability in a new screen-locking mechanism that will disengage when it sees the phone's owner. The underlying face tracking functionality is available to third-party developers through some fairly intuitive new APIs.

The Camera class allows you to set up a face detection listener with a callback method that is triggered when a face is detected. The callback is passed an array with data for each face that is in the view. It will generate a unique ID for each face that it is tracking so that you can distinguish between them.

It will also give you coordinate data with the location of the user's eyes and mouth as well as the boundary of the entire face. The ability to track the position of facial elements opens the door for all kinds of innovative uses. For example, face tracking could be used as a form of motion control for games.

Other goodies

In order to increase the transparency of application data consumption, ICS introduces a new configuration panel that allows users to see exactly how much data each application is using. This configuration panel will also allow users to easily jump to the data-usage settings—such as the polling frequency or caching behavior—for individual applications. In order to integrate with that feature, application developers have to add an extra statement to their manifest files indicating which activity they want to have handle the new MANAGE_NETWORK_USAGE intent.

During the ICS unveiling, Google demonstrated a new built-in visual voicemail interface that is included in the platform. The Android 4 reference documentation reveals that third-party developers will be able to expose messages of their own through the same user interface by implementing a Voicemail Provider. This means that the user will be able to have a unified voicemail inbox that aggregates incoming voice messages from multiple sources.

Another nice addition is an official set of APIs for interacting with the user's calendar. It supports scheduling and modifying events, setting alerts and reminders, and performing other similar functions. According to Google's documentation, the APIs are broad enough to facilitate the implementation of "sync adapters" that synchronize the user's Android calendar with other third-party services.

The features discussed above strike us as some of the most useful new developer APIs introduced in Android 4, but there are lots of other changes—including some that are a little bit off the beaten path. For example, Google has given a major nod to mouse support by introducing an event for tracking when a cursor is hovering over a view. Sensor APIs also got a boost, with the addition of the ability to track ambient temperature and humidity.

Android 4 has a lot to offer users, as Google demonstrated this week at its big event with Samsung. The reference documentation shows that it has even more going on under the hood. The new APIs will open up a lot of new functionality for third-party developers to incorporate into their applications. For more details about Android 4, you can refer to the platform highlights tour and API overview on the Android developer website.