Google I/O has begun, and several major announcements have been made including the release of Android 4.1 (Jelly Bean), Google Nexus 7 tablet featuring an Nvidia Tegra 3 processor and running Android 4.1, and the Google Nexus Q media player based on TI OMAP4460 processing and running Android 4.0 ICS.
I’ll write about all those announcements today in three different posts. Let’s start with Android 4.1 Jelly Bean.
The new version of Google’s mobile operating system includes a smoother and more responsive UI, a home screen that automatically adapts to fit your content, a better predictive keyboard, more interactive notifications, improved Android Beam (NFC) sharing, improved voice dictation (now works offline) and more.
Here’s a summary of the key technical changes to Android 4.1:
- Faster, smoother and more responsive
- Vsync timing will be used for all drawing and animations to ensure a constant framerate (~62.5 fps).
- Triple buffering is used in the graphics pipeline for consistent rendering and smooth scrolling, paging and animations.
- Touch is synchronized to vsync timing, and somehow Android will now anticipate what your next move will be for a more reactive UI.
- Each time you touch the screen, Android will boost the CPU (CPU input boost) to reduce latency.
- Systrace tool can be used to debug and improve application responsiveness. This tool is part of the Android SDK
Google uploaded a 300fps slow motion video to demonstrate the difference in responsiveness and smoothness between ICS and JB.
- Support for International Users
- Bi-Directional Text and Other Language Support. Support for Arabic and Hebrew in TextView and EditText elements, Kannada, Telugu, and Malayalam languages are now supported and several improvements for Japanese.
- 27 User-installable keymaps are now included in Android 4.1, and users can switch between installed languages using Ctrl+Space. It’s also possible to create your own keymap and publish it to the system
- New Ways to Create UI
- Expandable notifications can be used to include more content such as a picture and support multiple actions. The notification builder allows developers to create notifications that are that up to 256 dp in height, and Google provides 3 new notification templates: BigTextStyle (multiline), BigInboxStyle (list) and BigPictureStyle (visual content, e.g. a picture).
- Resizable app widgets can re-size themselves automatically based on their position, room available and size set by the user.
- Simplified task navigation is made possible in Android 4.1 by defining the “intended Up navigation” for a given Activity used the new XML attribute define the navigation tree. There is also a new TaskStackBuilder class to be used to launch Activities from remote views, such as from Home screen widgets and notifications, in order to provide a consistent experience on Back navigation.
- A new helper class called ActivityOptions can be used to create and control the animation displayed when you launch your Activities.
- It’s now possible to transition to Lights Out (status bar dimmer) and Full Screen modes with system UI flags.
- Android 4.1 supports GridLayout and ViewStub views in Home screen widgets and notifications.
- Users can find, preview and install Live Wallpapers directly from apps that include them.
- Contact photos can be as large as 720 x 720, but the maximum size still depends on the hardware, and the max size can be retrieved by querying the built-in contacts provider at run time.
- New Input Types and Capabilities
- Apps can register to be notified when new input devices are attached. For example a game could be notified when a USB or Bluetooth gamepad has been connected.
- New APIs can enumerate available input devices and their capabilities.
- Jelly Bean can make use of vibrator service it it’s supported by the input device (e.g Rumble Pak controller).
- Animation and Graphics
- Vsync for apps allows a consistent framerate and smooth user interface. There is nothing to do to take advantage of this feature, as long as an application uses Android’s animation framework, but it’s also possible to access vsync timing through APIs exposed by a new Choreographer class.
- Android 4.1 features a new animation framework that makes it easier to create and manage animations.
- New Types of Connectivity
- Android Beam has been used for NFC connectivity since Android 2.3, but Android 4.1 can now handle transfer faster by using Bluetooth (NFC/BlueTooth pairing).
- Wi-fi Network Service Discovery (NSD) is made possible thanks to support for multicast DNS-based service discovery, which lets applications find and connect to services (e.g. printer, IP webcam, media server..) offered by peer devices. This will obviously only work if the devices support NSD.
- Wifi-Direct Service Discovery. Wi-Fi direct was introduced in ICS to allow p2p WiFi connection between devices, but Jelly Bean goes further by adding support for pre-associated service discovery, that lets apps get supported services from nearby devices before they attempt to connect. This technology enables things like multiplayer games over Wi-Fi without the need to use an internet/mobile connection, or even a Wi-Fi router.
- New APIs allow better network bandwidth management, and find out if the device is connected to a metered network, before beginning a large download for example..
- New Media Capabilities
- Android 4.1 has APIs to query hardware and software codecs supported by the device.
- USB Audio is now supported. It could be used with USB speakers, or for audio docks. This functionality is also exposed with the Android Open Accessory Development Kit (ADK) for people who want to create their own hardware.
- Audio record triggering is a new feature that allows developers to trigger audio recording after an audio track has been played.
- Android 4.1 supports multichannel audio via HDMI on devices that support it. On other devives, it will downmix the audio to the number of channels that are supported by the device (e.g. stereo). Jelly Bean natively supports AAC 5.1 audio decoding/encoding.
- Android now comes with preprocessing effects (noise suppression, echo cancellation, auto gain control…) to improve the audio being recorded.
- The MediaPlayer can chain audio streams together to play audio files (e.g. playlists) continuously without any pause.
- New APIs (e..g Media Router) provides mechanisms and UI to select audio output (e.g speakers, a2dp Bluetooth…).
- Renderscript Computation
Renderscript computation have been improved and simplified in Android 4.1. It’s possible to sample textures and define floating point precision in order to enable NEON instructions (Multimedia instructions for ARM Cortex processors). Renderscript compute scripts can now be debugged on x86-based emulator and hardware devices.
- Android Browser and WebView
Android 4.1 brings the following key enhancements to web browsing:
- Better HTML5 video user experience, including touch-to-play/pause and smooth transition from inline to full screen mode.
- Improved rendering speed and reduced memory usage for better scrolling and zooming performance.
- Improved HTML5/CSS3/Canvas animation performance.
- Improved text input.
- Support for the updated HTML5 Media Capture specification.
- Google APIs and services
- Google Cloud Messaging for Android (GCM) is a new service that lets developers send short message data (up to 4KB) to their users on Android devices. A single request can send a message to up to 1,000 connected devices simultaneously. This service is free.
- All paid apps will now be encrypted with a device-specific key before being downloaded to the device.
- Smart App Updates allow a reduction of the bandwidth and battery usage during app updates by only delivering the things that have been changed. On average, a smart app update is about a third of the size of a full APK update.
- Google Play services (coming soon) will provide interface to help developer integrate Google services (e.g. Authentication, Google+…) into their applications.
If you want to try the new APIs, you need to install Android SDK Tools revision 20, then downloading Android 4.1 SDK (API level 16) via Android SDK manager.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.