A Smoother Android - Jelly Bean (4.1) The Programmer's Take
Written by Ian Elliot
Thursday, 28 June 2012
Decimal point upgrades are rarely worth writing about, and the latest upgrade to 4.1 (aka Jelly Bean) is a collection of fairly minor tweaks - the question is do they at last add up to something that can take on iOS?
The key improvement is a move to make Android work in a smoother more responsive way. Now all graphics provided by the framework is locked to the vsync signal. This means that all graphics updates occur at the 16 millisecond frame rate. As well as being available to the framework, the same facility is available to apps via the animation framework. If you want to do animation raw then you can get access to the timing signal via the new Choreographer class.
Also new is triple buffering which, in principle, should make for glitch-free graphics.
You can see that it seems to work in this video that shows ICS and JB next to each other in slow motion:
A strange new idea is that now touch is also synchronized to the vsync signal so that touch and video frames are locked together. It also claims to use predicted finger position at the refresh time.
We also have a new tool to help with making things smooth:
systrace, which collects data directly from the Linux kernel to produce an overall picture of system activities. The data is represented as a group of vertically stacked time series graphs, to help isolate rendering interruptions and other issues.
Another new feature that helps put Android ahead of the rest is the improved notification facility. You can now make notifications bigger, they can be expanded or collapsed by the user via a pinch and you can include phones and three action choices.
You also now have the ability to use resizable app widgets that auto resize depending on where the user places them. As you customize the screen, the widgets move around to make room. Does this make Jelly Bean better than WP8 Metro and its live tiles? From a quick look I'd say that it does.
Improvements to connectivity are also interesting. Now you can use NFC to establish a Bluetooth link that can be used to transfer files or photos, say. Android Beam basically lets you just touch the two phones together and they are Bluetooth-paired and the transfer starts. New API calls let you add Bluetooth-powered, NFC-negotiated transfer to your own apps.
Another new network related feature is a DNS-based service discovery API. You can now broadcast services on the local network and connect to any that are advertised. You could use this to, say, connect to a webcam or another mobile device. The existing WiFi direct service in ICS has been extended to include pre-association and there is a new call that tells you if the current connection is metered or not.
There are various small updates to media support, including low level media codec access, USB Audio (via the Open Accessory Development Kit), auto recording trigger, multi-channel audio and so on. A new media router lets apps and users select where to play audio media.
The new Google Cloud Messaging, GCM, seems to have gone unnoticed by many news reports. Essentially it provides a free-to-use web-based alternative to SMS. As well as sending the usual SMS-style messages you can also add a 4Kbyte payload.
Also new is app encryption. You will soon be able to opt for your app to be delivered encrypted with a device specific key - this should make it slightly harder to pirate an app. Smart App update should also reduce the size of the transfer needed in any update. Like a sensible system, should it now only transmits the changed portions as a patch rather than the entire APK file. Google Play will also be extended to offer a range of Google services such as authentication and, of course, Google+. This is only logical.
There are also a lot of smaller improvements to Renderscript, the browser, the onscreen keyboard, search and many of the built in apps and these will appeal to the user even if they don't generalize to other apps.
The Jelly Bean based Nexus 7
Jelly Bean is going to be available in July but the SDK is ready to download and use now. Of course, Jelly Bean is the OS used on Google's brand new Nexus 7 $199 tablet.
The Nexus 7 and Jelly Bean is indeed a combination that seems fit to take on the Kindle Fire, which is what it sets out to do. It also probably sinks the Microsoft Surface out of sight - but a lot depends on what the final spec and price turn out to be for the Surface.. And yes, I reckon it will even dent the iPad.
Jeff Ullman's course on automata and language theory started on September 12th on the Cousera platform. It runs until October 23rd with a final exam at the beginning of November so there is still time [ ... ]