You are on page 1of 6

Adobe AIR 3 features

Stage 3D accelerated graphics rendering* Explore a new architecture for high-performance 2D/3D GPU hardware accelerated graphics rendering by Adobe, which provides low-level Stage3D APIs for advanced rendering in apps and gives framework developers classes of interactive experiences. *Initial support on personal computers and televisions. Native extensions for Adobe AIR Use native code to take advantage of the same platform- and device-specific native capabilities and APIs available to native apps, with easy integration into AIR applications. Multi-threaded video decoding Deliver live streaming and real-time interactive video with improved playback performance and increased frame rates of high bit rate content running on Windows, Mac OS, and Linux. Enhanced mouse controls and relative coordinates Create immersive, panoramic games for new classes of content, including first-person games that take advantage of infinite scrolling, mouse lock, relative mouse coordinates, and right- and middle-click events. Captive runtime support Developers now have more flexibility with their app packaging options and can automatically package AIR 3 with their Android, iOS, Windows, and Mac OS app into a single installation file that includes the app and a bundled version of the AIR runtime. Android Licensing Service support Now developers have access to the Android Market Licensing Service, which lets publishers enforce licensing policies for paid applications that they publish through Android Market. New mobile features for Android, BlackBerry Tablet OS, and iOS Work with powerful features for the development of expressive, high-performing applications for Android, BlackBerry Tablet OS and iOS. Front-facing camera support (new on Android) The front-facing camera support available with AIR for iOS and BlackBerry Tablet OS is now available on Android devices. Take advantage of the front-facing camera to connect users with rich video conferencing and chat experiences. Stage Video hardware acceleration Leverage hardware acceleration of the entire video pipeline for best-inclass high-definition (HD) video playback experiences. Reduce processor and memory usage and enable smoother video, and higher fidelity on mobile and TV devices. H.264/AVC software encoding for cameras Stream beautiful video from your computers camera with higher compression efficiency and industrywide support, enabling both high-quality real-time communications (e.g., video chat and video conferencing) and live video broadcasts. Content protection support for mobile Flash Access content protection support is now available on Android devices. Broadcasters can now reach and monetize an even broader range of customers on their favorite mobile device.

Protected HTTP Dynamic Streaming (HDS) Protect streaming video across devices while eliminating the deployment complexity of a license server. Adobe Flash Access Take advantage of key rotation support, V3 license chaining, domain support, enhanced output protection, and device filtering features. Native text input UI (mobile) Mobile apps can now take advantage of the native text input controls on Android, BlackBerry Tablet, and iOS operating systems, including platform-specific user interaction behaviors such as magnification and text selection. Enhanced high-resolution bitmap support Develop apps that use very large bitmaps. BitmapData objects are no longer limited to a maximum resolution of 16 megapixels (16,777,215 pixels), and maximum bitmap width/height is no longer limited to 8,191 pixels. G.711 audio compression for telephony Support interoperability with legacy phone systems via the Flash Media Gateway (FMG) and other thirdparty clients (through the open RTMP protocol) without the need for transcoding. Digital Surround Sound (TV devices) Deliver full HD videos with Dolby Digital and DTS surround directly to AIR powered TVs. Native JSON (JavaScript Object Notation) ActionScript developers can now take advantage of high-performance native parsing and generation of JSON-formatted data. Developers can integrate existing data seamlessly into their projects. Garbage collection advice A GC advice API provides additional control over the scheduling of garbage collection, so that the garbage collection process does not disrupt the user experience. Socket progress events Improve management of data transfer with a new property to determine the number of bytes remaining in the write buffer and a new event for when data is being sent to the network layer. New APIs allow apps to easily track progress and provide feedback. JPEG-XR support Support for the JPEG-XR advanced image compression standard (International Standard ISO/IEC 29199-2) provides more efficient compression than JPEG, enables both lossy and lossless compression support, and adds support for alpha channel transparency. High-efficiency SWF compression support Developers can now take advantage of LZMA compression for their SWF files. LZMA compression can reduce SWF size by up to 40%, enabling users to benefit from richer experiences with shorter download times and reduced bandwidth consumption. New removeChildren API DisplayObjectContainer now implements a removeChildren API allowing developers to quickly remove all of a containers children using a single API call.

New MovieClip property A new MovieClip.isPlaying property returns the MovieClips current playing state. Background audio playback support on iOS Developers can now write multitasking iOS applications that can play audio while in the background, such as music applications or reliable voice conferencing apps with multitasking support. Encrypted local storage for mobile Encrypted local storage support is now available on mobile devices. Applications can more securely store sensitive data on a users device, enabling support for storage of sensitive data such as passwords, certificates, and auditing information. Device Speaker Control for iOS & Android Provides developers the ability to select whether audio should be outputted through the phone speaker or external speaker. Game Controller API for TV devices Allows developers to build TV apps that communicate with an attached game input devices such as a gamepad or controller wand. 16 and 32-bit color depth for Android Control the color depth of graphics on Android (16bit and 32bit) for renderMode=cpu/auto for AIR 3 apps.

New APIs and Capabilities


Stage3D (desktop only). Stage3D is a set of low-level, hardware-accelerated APIs for both 2D and 3D rendering. For AIR 3, they are available only in the desktop version of AIR; however, they will be coming to mobile in the future. Stage3D is such a huge feature that it really wouldn't make sense to get into much more detail hereto learn more, see the Stage 3D page. Native extensions (all platforms). This is another huge feature. Starting with AIR 3, developers can extend the AIR runtime by bundling native extensions with their applications, then calling those extensions from ActionScript (this was available in Adobe AIR for TV in AIR 2.5, but with AIR 3, it's now available on all platforms). You can think of native extensions for Adobe AIR (ANEs) as ActionScript libraries (SWCs) but implemented in native code. Use cases for ANEs include giving your application access to native APIs not supported by AIR (see examples below) and delegating to native code in some circumstances in order to achieve better performance. For more information on native extensions in AIR 3, see Extending Adobe AIR by Oliver Goldman. Android Market licensing integration (Android only, obviously). Using an ANE file, developers can access the Android Market Licensing Service allowing publishers to enforce licensing policies. This is a great example of the power of native extensions: Since there are no equivalent APIs on iOS, it wouldn't make sense for us to add the functionality directly to AIR; however, ANEs make the APIs easily accessible to AIR applications running on Android. Captive runtime bundles (Android and desktop). If you want to remove the need for your end users to download the AIR runtime in circumstances where they don't already have it installed (thereby making the application installation process indistinguishable from native applications), or if you want full control over the version of AIR with which your application runs, AIR 3 lets you bundle the AIR runtime right in with your application. Bundling the runtime is as easy as providing the apk-captive-runtime flag to ADT

when building your Android app or the bundle flag when building your desktop app. (Note that AIR has always used a captive runtime approach on iOS, although the mechanism is a bit different.) Background audio playback (new feature in iOS; already works on Android). Because of the unique multitasking implementation of iOS, it was previously not possible to continue playing audio from an AIR app that wasn't active. Starting in AIR 3, all you have to do is indicate in your application descriptors that they need to be able to play background audio and it will automatically work. (Basically, the application will continue running when it's placed in the background. However, all screen updates will be disabled in order to preserve battery life, and to comply with the multitasking requirements of iOS.) CameraRoll support for iPad. Although CameraRoll was technically already supported on the iPad, we've added much better support in AIR 3. On iPads, the photo picker doesn't take up the entire screen, as it does on iPhones and iPod touches. Instead, it appears as a floating panel positioned relative to the UI component that invoked it. With the addition of the CameraRollBrowseOptions class, developers can choose the size and position of the image picker, and specify the location of the UI component that invoked it. For more information and a code sample, see my blog post, How to correctly use the CameraRoll API on iPads. Hardware-accelerated video (mobile): AIR 2.5 brought hardware-accelerated video to TVs with StageVideo; now AIR 3 brings StageVideo to mobile as well. Native text fields (mobile). Previous versions of AIR provided developers access to lower-level rendering capabilities with APIs like StageVideo (hardware-accelerated video) and StageWebView (native HTML rendering). AIR 3 introduces the StageText API which allows developers to place native text fields in their mobile apps. Although you can still use Flash text fields, of course, StageText text fields come with all the OS-specific perks like the magnifying glass, text selection, auto-correct, and so on. Front-facing camera support (iOS and Android). The ActionScript Camera APIs now have access to both front and rear-facing cameras on iOS and Android devices (for Android devices, verion 2.3 or later is required). You can use the new Camera.position property along with the constants in the new CameraPosition class (BACK, FRONT, and UNKNOWN) to determine the location of the cameras. For more information and a code sample, see my blog post, Front-facing camera support in AIR 3. Mobile-encrypted local storage (brings feature parity between desktop and mobile). The sameEncryptedLocalStore APIs that are available on the desktop are now available on iOS and Android. This API is critical for securely storing user credentials, encryption keys, salts, and similar important information. Device speaker control (mobile). Using the new audioPlaybackMode property on SoundMixer, and the constants in the new AudioPlaybackMode class (MEDIA and VOICE), developers can control whether audio is played through the phone's earpiece or speakers. Native JSON support (mobile and desktop). Rather than using ActionScript to parse JSON, the runtime now provides more efficient native JSON support. The native JSON APIs are faster and use less memory than ActionScript implementations. For more information and a code sample, see my blog post, Native JSON support in AIR 3. Socket improvements (mobile and desktop). It has always been relatively easy for developers to determine when data is written from the network to the ActionScript socket's read buffer (ProgressEvent.SOCKET_DATA), and to determine how many bytes are available for reading (Socket.bytesAvailable). However, the opposite hasn't been true. In other words, before AIR 3, there was no way to know that data had been successfully written from the ActionScript socket's write buffer to the network, and to know how many bytes were still waiting to be written. This led to situations where

developers weren't sure if it was safe to call close() on a socket, or to know if there was a network operation still in progress when the user wanted to shut down an application. Starting with AIR 3, developers can use theOutputProgressEvent.OUTPUT_PROGRESS event along with the new Socket.bytesPending property to determine how much data has been written to the network, and how much data is still in the ActionScript socket waiting to be written. These new APIs should lead to more robust applications that rely on network access through sockets. For more information and a code sample, see my blog post, Socket improvements in AIR 3. H.264 video encoding (desktop only). You can how encode video captured through the Camera class in H.264. JPEG XR support (mobile and desktop). AIR 3 now supports JPEG XR, a new file format with several advantages over JPEG. For example, JPEG XR provides better compression, more lossless compression, more accurate colors, and alpha transparency. For more information, check out the Wikipedia article on JEPG XR. Higher resolution bitmaps (mobile and desktop). In previous versions of AIR, bitmaps were limited to 16 megapixels (16,777,215 pixels) with a maximum width/height of 8,191. Starting with AIR 3, all limitations have been removed from AIR, which means maximum sizes are now imposed by the host operating system instead. Multichannel audio digital output (AIR for TV only). Adobe AIR for TV can now play Dolby Digital Plus 5.1 Surround and DTS 5.1 audio streams. The new Capabilities.hasMultiChannelAudio property, the newAudioDecoder class (containing constants representing several different multichannel audio types), and changes to the Capabilities.serverString property all allow developers to detect a device's multichannel audio capabilities and to stream the correct audio bitstream both from ActionScript and through RTMP. Advanced controller support (AIR for TV only). Using the new GameInput APIs, developers can build games that respond to advanced TV controllers. A number of new APIs allow for enumerating devices (available controllers), enumerating devices' controls (buttons, triggers, acceleration, etc.), and for getting control values from devices. More easily removing all children from a container (all platforms). DisplayObjectContainer now has aremoveChildren() function, which removes all the children in a single call. This certainly beats: while (this.numChildren > 0) this.removeChildAt(0) More easily determine if a MovieClip is playing (all platforms). Easily find out if a MovieClip is playing using the new isPlaying property. GC Advice API (all platforms). The new System.pauseForGCIfCollectionImminent function gives AIR developers more control over when the runtime's automatic garbage collection reclaims memory. Since animation or audio may pause during garbage collection, developers can use this function to encourage collection at times when the user is least likely to notice. Secure random number generation (mobile and desktop). Adobe AIR has always had the Math.randomfunction, which returns "pseudo-random" numbersthat is, numbers which appear to be random but always contain some element of non-randomness (a timestamp, for instance). AIR 3 provides a new method for generating random numbers called generateRandomBytes() located in the flash.crypto package. Since thegenerateRandomBytes() function uses OS APIs to generate random numbers (CryptGenRandom on Windows, /dev/random on OS X, /dev/urandom on Android,

and SecRandomCopyBytes on iOS), the resulting random number is as cryptographically secure as the underlying OS. Support for cubic bezier curves (all platforms). The new cubicCurveTo() function on the Graphics class allows you to programmatically draw cubic Bzier curves natively without the use of third-party ActionScript code.

Advantages
With the Adobe AIR runtime, businesses can deliver branded rich Internet applications (RIAs) that connect with customers outside the browser. AIR uses the same proven, cost-effective web application technologies that businesses already rely on, so development and deployment are rapid and low risk. Use existing resources to create engaging, branded applications that run on all major desktop operating systems to boost productivity, extend market reach, improve customer satisfaction and retention, and increase profits.