Android 2.2 and Beyond

DZone 's Guide to

Android 2.2 and Beyond

· Java Zone ·
Free Resource
Google unleashed Android 2.2 "Froyo" today during the second keynote of Google I/O.  Even though we knew about many of the coming features before this announcement, there were plenty of surprises as well.  Some of the most tantalizing features were the ones for future Android releases that were seen in demos.

Froyo will run 3-5 times faster now because of the JIT compiler added to Android's "future-proof" Dalvik VM.  Thanks to the new Linux 2.6.32 kernel, memory reclaim has been improved by as much as 20x, resulting in faster app switching and better performance on lightweight hardware.  There are also new APIs for OpenGL ES 2.0, working with YUV image format, and ETC1 for texture compression.

Some of the features that we didn't see coming proved to be extremely useful capabilities.  Android 2.2 users won't have to individually update applications anymore because in the Android market window there is now an "update all" button, which updates the functionality of all applications.  You can even set your phone to automatically update all applications, as long as you enable certain permissions.   Users may also choose to install applications entirely on an SD memory card and run the app while the card is inserted.  Apps can also be transferred between internal memory and SD memory.

Google also used its search expertise to add new search capabilities throughout the new platform release.  There is now a quick search box for finding apps as well as a feature that lets you search for data within an application.  Reporting for crashed apps has also been drastically improved in this release.  Developers will now be able to get tons of information to help them fine-tune their apps.  When a defect manifests in an Android app, a report is sent back to the developer's Android marketplace page (which is now accessible on the desktop).  Developers will be able to check their apps' crash reports on the website - the whole stack trace is provided.

Applications in Android 2.2 can utilize the new Cloud-to-Device Messaging feature to enable mobile alert, send to phone, and two-way push sync functionality.  A demo showcased this feature by sending a message (called an Android 'intent') with a Google maps address opened.  The Android phone that received the message brought up Google maps with the address already entered.  Another example is when you are browsing on your desktop and suddenly need to leave.  The Cloud-to-Device Messaging gives Android phones a Mozilla Weave-like functionality where you can open the tabs you were just browsing in the desktop browser, right into your smartphone browser.  Froyo also comes with a Data Backup API to move applications between phones without having to lose all of their data.

Browsing speed was another continuing focus for Android.  Besides calling and texting, browsing is the most common activity on a smartphone.  For Android 2.2, Google has integrated the V8 engine from Chrome, giving Froyo's browser a 2-3x boost in JavaScript rendering performance.  Google was bold enough to claim that they now believe they have the fastest mobile browser in the world.  

Froyo will of course support Flash 10.1 when it ships, along with Adobe AIR preview support.  Some other neat features include multiple Latin-based input languages, voice dialing over Bluetoooth, and a 20 FPS frame rate for the camera (up from 10 FPS).  The multi-lingual keyboards are enabled simply by swiping across the spacebar.  This changes the keys as well as the auto-suggest dictionary.  Finally, Android 2.2 has support for MS Exchange (friendly auto discovery, security policies, and more).

Here are some additional platform updates that Android developers will be interested in:

  • Workflow improvements - The new NDK brings a host of workflow improvement, from compilation, to debugging. Starting with 2.2, the NDK enables debugging native code on production devices.
  • ARMv7 instruction set support - This release enables the generation of machine code for the ARMv7-A instruction set. Benefits include higher performance, as well as full use of the hardware FPU for devices that support it.
  • ARM Advanced SIMD (a.k.a. NEON) instruction support - The NEON instruction set extension can be used to perform scalar computations on integers and floating points. However, it is an optional CPU feature and will not be supported by all Android ARMv7-A based devices. The NDK includes a tiny library named "cpufeatures" that can be used by native code to test at runtime the features supported by the device's target CPU.

Beyond Froyo

The best is yet to come, says Google.  In several demos, the company showed a few innovative features that they are working on for future Android releases.  One was browser access to more APIs like camera, microphone, and accelerometer.  A Google map was shown accessing the orientation API, which made the map rotate when the phone rotated.  Future Android releases will also give users the ability to download apps on their desktop, which are then automatically installed onto their Android phone via the web - no tethering required.  Streaming media from your desktop libraries is another huge capability on the way.  Thanks to Google's acquisition of Simplified Media, they can add functionality to Android that allows users to access entire media libraries from multiple desktop applications (including iTunes).

Google is also on the verge of turning Android into a voice translation device.  During the keynote, they demoed an application that translated English speech into text, then translated that text into French text and played back a voice simulation in French.  Google is also working on voice recognition for searches and phone navigation.

Perhaps the only disappointing part of the 2.2 announcement was the absence of any plan to prevent growing Android fragmentation.  There was no mention of the limiting factors for getting Android 2.2 on certain phones.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}