Version History of Adobe AIR SDK 2.7

  • Install AIR Runtime to SD – This feature allows end users to install or move AIR runtime onto SD cards of their Android devices so they can free up storage space on the phone.
  • Improved performance on iOS: We have made runtime optimization to allow developers to deliver higher-performance apps on iOS.
  • Media Measurement – Measuring video just got easier. Using Adobe® SiteCatalyst® with Adobe AIR 2.7 or Flash Player 10.3, developers can implement video analytics for either standalone apps or websites with as little as two lines of code. Analytics solution providers can use a new set of open APIs to easily implement consistent video analytics irrespective of implementation or delivery protocol. Media Measurement for AIR and Flash Player allows companies to get real-time, aggregated reporting of how their video content is distributed, what the audience reach is, and how much video is played. Please note that Media Measurement is not yet available for the iOS packager in this release.
  • Acoustic Echo Cancellation – AIR 2.7 enables developers to create real-time online collaboration experiences with high-quality audio, such as telephony, in-game voice chat, and group conferencing applications outside the browser for desktop OSes. Developers can take advantage of acoustic echo cancellation, noise suppression, voice activity detection, and automatic compensation for various microphone input levels. End users will be able to experience higher quality audio facilitating smoother conversation flow, without using a headset. This feature is available for desktop platforms only
  • Enhanced HTMLLoader API – With AIR 2.7, developers will have more control over how clickable links behave in HTML content within a standalone desktop app. This feature will enable content publishers to achieve seamless weblink-style navigation directly within desktop apps such as magazine viewers and ebook readers.
  • Interpreter Mode for iOS – This feature streamlines the iterative testing and debugging workflow by enabling the Interpreter Mode for iOS in AIR Developer Tool (ADT), which is part of the AIR SDK. Developers can use ADT to compile the code during the testing and debugging process for their iOSapps. It will dramatically speed up the testing and debugging process so developers can spend more time on improving the application, not waiting for compiling the code in every testing and debugging cycle.Install AIR Runtime to SD – This feature allows end users to install or move AIR runtime onto SD cards of their Android devices so they can free up storage space on the phone.

Desktop

  • Integrated support for Media Measurement: The Adobe AIR 2.7 runtime now includes the same built-in support for media measurement as Adobe Flash Player 10.3, allowing companies to simplify the collection of real-time, aggregated reporting data for how content is distributed and viewed by users. With direct support for Adobe SiteCatalyst, powered by Omniture, developers can implement video analytics for existing or legacy video players with as little as two lines of code. For additional information, see the article onmeasuring video consumption in Flash.
  • Acoustic echo cancellation: With integrated support for acoustic echo cancellation, developers can now add real-time VoIP capabilities to games, enterprise, and other types of applications without requiring users to wear a noise-canceling headset. Users can now chat using the speaker built into their desktop or laptop computer. This new capability is also available in Flash Player 10.3.
  • Navigation Improvements for HTML Content: Enables seamless weblink-style navigation within desktop apps such as magazine viewers and ebook readers. Developers can now respond to a new event to be notified when content within the HTMLLoader control attempts to change the location of a page. This enhancement provides developers with a better way to implement intra-application navigation.

Media Measurement

Measuring video just got easier. With AIR 2.7 and Adobe® SiteCatalyst®, developers can now implement video analytics with as little as two lines of code. Other analytics solution providers can also use the new open APIs to easily implement a consistent video tracking mechanism irrespective of their implementation and/or the type of delivery protocol. Media Measurement for AIR and Flash Player allows companies to get a clear picture of how content is distributed, what the audience reach is, and how much of the media is played.

Specifically, AIR 2.7 introduces new events and properties that enable companies to capture the state of a particular video regardless of delivery protocols or how NetStream objects are handled. You will also be able to retrieve the Page Domain URL via a static method.

The modifications are grouped into the following four areas:

  • Enhanced Playback Events
  • NetStream Monitoring
  • Enhanced NetStreamInfo
  • Page Domain URL

The new APIs require SWF version 12 or higher. Make sure that you publish your movie to SWF 12 and you must also configure your authoring environment with the new playerglobal.swc.

Enhanced Playback Events

The purpose of enhanced playback events is to dispatch the same events regardless of the delivery mechanism used for video playback (progressive download, RTMP streaming or newly added HTTP streaming). Previously, progressive download did not trigger all the NetStream playback events triggered by RTMP streaming. Such was the case for NetStream.Play.Complete, NetStream.Pause.Notify andNetStream.UnpauseNotify events.

Now, for progressive playback, Flash Player 10.3 dispatches NetStream.Pause.Notify,NetStream.Unpause.Notify and NetStream.Play.Complete.

In addition, we have added NetStream.SeekStart.Notify for progressive, RTMP streaming and HTTP streaming. The event is always dispatched by Flash Player when seek started. The info object contains the description string "Start Seeking seek_time". NetStream.SeekStart.Notify always precedesNetStream.Seek.Notify.

NetStream Monitoring

We have added a new NetMonitor class. This class has two functionalities. It contains a single methodlistStreams(), that returns the vector of NetStream objects. Secondly, the NetMonitor class dispatchesNetMonitorEvent of the netStreamCreate type whenever a new NetStream object is created.

A typical usage scenario is:

var monitor:NetMonitor = new NetMonitor(); var streams:Vector<NetStream> = monitor.listStreams(); monitor.addEventListener(NetMonitorEvent.NET_STREAM_CREATE, netStreamCreate); private function netStreamCreate(e:NetMonitorEvent):void { // the new NetStream is e.netStream}

Whenever a data message is received on a NetStream, Flash Player invokes the corresponding method onNetStream.client object. Such data messages include onMetaData, onXMPData, etc. Flash Player Wasabi dispatches a new NetDataEvent when a data message is received on a NetStream. The advantage is that it’s easy to add multiple events listeners that can receive this event. The usage is pretty straightforward.

var netConnection:NetConnection = new NetConnection(); netConnection.connect(null); var netStream:NetStream = new NetStream(netConnection); netStream.addEventListener(NetDataEvent.MEDIA_TYPE_DATA, onMediaData); private function onMediaData(e:MediaDataEvent):void {  // e.timestamp: Timestamp of the message // e.info: Message object  // e.info.handler: Handler name such as onMetaData, etc.  // e.info.args:Array of arguments}

Enhanced NetStreamInfo

We have added the following properties to NetStreamInfo class:

  • metadata:Object - Last meta data object associated with media being played.
  • xmpData:Object - Last XMP data object associated with media being played.
  • uri:String - NetConnection.connect() URI.
  • resourceName:String - Resource name for NetStream.play(). This contains the full URL for progressive download and null for HTTP streaming.
  • isLive():Boolean - Indicates whether the media being played is recorded or live. This value only relevant for RTMPx streaming, for progressive download or HTTP streaming, it will return false.

Page Domain URL

We have added a new static method to Security class to obtain the domain of the containing HTML page. For security reasons, the method does not return the full URL, only the page domain, such as http://www.example.com.

Although you can obtain the container URL using ExternalInterface, the new method has the following advantages:

  • 1. External interface only works when JavaScript is enabled
  • 2. External interface requires allowScriptAccess set to a permissive value in the HTML wrapper
  • 3. The pageDomain method also works when the page URL and the SWF URL are coming from different domains. (Whereas before you needed allowScriptAccess="always" for external interface to work.)

See ActionScript3 reference documentation for details.

Acoustic Echo Cancellation

Acoustic Echo Cancellation (AEC) is performed using a straightforward extension of the Microphone class that can provide acoustic echo cancellation, noise suppression, voice activity detection, and automatic compensationfor varying microphone input levels. It is instantiated using a static method on Microphone class and provides an additional property to configure enhanced microphone settings. See ActionScript3 reference documentation for details.

Please note that this feature is available for desktop platforms only.

Enhanced HTMLoader implementation

Starting with AIR 2.7 desktop, developers have more control over the life-cycle of the pages loaded in theHTMLLoader control. In AIR 2.7, when navigating to another page (either by user input or programmatically), an additional location changing event is dispatched *before* the actual navigation occurs. Developers can listen for this event to take action based on the location being loaded or event prevent navigation to the new location altogether. This is a desktop only feature. For more details see the documentation forLocationChangeEvent.

Interpreter mode for iOS

This feature streamlines the iterative testing and debugging workflow by enabling the Interpreter Mode foriOS in AIR Developer Tool (ADT), which is part of the AIR SDK. Developers can use ADT to compile the code during the testing and debugging process for their iOS apps. It will dramatically speed up the testing and debugging process so developers can spend more time on improving the application, not waiting for compiling the code in every testing and debugging cycle.

Adobe AIR version

The final version of AIR 2.7 desktop available in this program is 2.7.0.1948.

AIR 2.7.0.1948

Adobe AIR 2.7.0.1948 includes security enhancements described in Security Bulletin APSB11-13

Fixed issues

  • FullScreenSourceRect property does not get reflected in AIR apps on Android 3.0. (2834015)
  • Sockets are not working on AIR iOS (2839237)
  • On Device Debugging with Android 3.0 is Unstable (2796338)
  • Flash Builder crashes or hangs when packaging Android applications which have an application ID with two or more dots or dashes as the first characters (2821873)
  • Fixed an issue where some devices, including multiple models from Motorola and HTC, returned the wrong screenDPI info. To fix this issue, we have moved to a different Android API ("DisplayMetrics.densityDpi" instead of "DisplayMetrics.xdpi") to retrieve screen DPI data from the device. densityDpi returns a quantized dpi value – 120 for low resolution screens, 160 for medium resolution, and 240 for high resolution. (2832023, 2876332)
  • AIR plays video with 4-5 seconds delay, as it is keeping a buffer (2844142)
  • Debug AIR apps hang when debugger is not connected (2855423)
  • On NVidia Tegra 2 devices, there are artifacts on playback for some videos (2840034)
  • Unable to hear Speex-encoded audio on AIR iOS (2821150)
  • When codec set to SPEEX loopback doesn't work on AIR iOS (2778326)
  • Lengthy app (debug swf) startup time on iOS devices (2815789)
  • softKeyboardRect returns half size on high-res iPhone4 (2823706)
  • Navigation to a urlrequest doesn't work if the urlrequest has parameters. (2858992)
  • Screen.mainScreen.bounds returns 0,-480,960,480 when it should have been 0,0,640,960 (2852431)
  • Compilation failed while executing : ld64 - when packaging debug swf to debug-ipa (2806767)
  • Geolocation on iOS is Muted, but works (2860218)
  • When compiling an IPA with latest AIR 2.7, JVM takes > 1.5G RAM and crashes (2865475)
  • With bufferTime=0 the sound data published is distorted and if get published then latency is higher than 2 seconds. (2868777)
  • Install AIR standalone build on Mac10.7 (Lion) will make OS preferences language set back to English (2829578)
  • Calling TextField.setSelection0,0 is ignored if TextField is not in focus (2813498)
  • Caret goes to position 0 after appendText (2791389)
  • Runtime Installer end with exit code 5 (2809689)
  • Quit Eden app takes 1 min (2834167)
  • AIR crashing when Loader would load SWF file generated from camtasia studio (2812781)
  • Event.MOUSE_LEAVE couldn't be captured after dragging an object out of window stage (2819507)
  • stage.color API is available in FP but not AIR (2821199)
  • stage.invalidate called from a handler of Event.RESIZE causes Player to render a frame and dispatch ENTER_FRAME before dispatching RENDER event (2777126)
  • SSL certificate validate logic is inverted (2806754)
  • After upgrading to AIR 2.6.x, Flex desktop application, which was formerly able to run it normally, now has an issue in which the application crashes after opening (2844080)
  • Application crash in createAIRLocalSecurityTrustFileIfNeeded when launching app with AIR 2.6 (2869203)

Known limitations

AIR on Windows/MacOS

  • Acrobat 10.1 in AIR 2.6 HTML Interactive Test : Redraw issue with the progress bar (2838424)
  • Audio Clipping Issue in AIR 2.6 (2860901)
  • Mac only: Air components could not be installed at Mac 10.7 via ssh (282733)
  • Windows only: X-domain socket connection to server was denied (2852471)
  • Setting window size programatically is not always respected (2740598)
  • setting Window.visible=true after a very short while of setting Window.visible=false doesn't work properly (2836712)
  • Unable to initiate drag after clicking a hyperlink in the HTML control (2816510)
  • Video playback stutters on some youtube videos that are 480p or higher when hardware acceleration is enabled on 13'' 2011 MacBook Air. (2845317)
  • Silent adobe air app installation fails without started X environment. (2832964)

AIR on iOS

  • Apps packaged with AOT as ipa-debug do not launch if fonts are embedded. (2877275)
  • Application crashes in ipa-debug target. (2877570)
  • Loader.loadBytes fails on iOS. (2876657)
  • Camera live streaming application freezes after screen is unlocked. (2827488)
  • NativeProcess.isSupported returning true on ios devices. (2872173)
  • TextField does not dispatch a textInput event. (2827733)
  • spaceavailable returns different values in AOT and interpreter mode. (2834161)
  • Loopback doesn't work properly with codec set to Speex. (2841443)
  • stage.orientation property incorrectly returned when started on landscape. (2852193)
  • Sockets connections don't work when the application goes to background. (2884146)

AIR on Android

  • StageWebView asynchronous functions test cases fail on the Motorola Xoom. This may also be a problem on other Android 3.0 devices. (2836505)
  • Flash Builder debugging does not detect runtime version on the device correctly. (Win and Mac) (2888090) - Workaround : Simply click No and continue debug session. Even if we click Yes, it actually do not upgrade Adobe AIR on the device.
  • activate() method does not fire Event.ACTIVATE in the timer event handler. (2814971)
  • Flash Builder crashes or hangs when packaging Android applications which have an application ID with two or more dots or dashes as the first characters. (2821873)
  • Live streaming video/audio may get out of sync after the device has gone to sleep and been re-awakened. (2854708)
  • The “Press” and “Tap” Android gestures are not appropriately firing (2842641)
  • The orientation Change event should be received before the stage renders. When a device changes orientation, the runtime dispatches the StageOrientationEvent.ORIENTATION_CHANGE event after the stage has already re-rendered. This can create flickers in applications that dynamically lay-out and display content based on the orientation (2833644)
  • Flash Builder 4.5 debug sessions have trouble connecting to certain devices. If you have trouble, please wait for 1 minute after the “Waiting for Connection” dialog appears, and then press the “Continue” button. Your debug session should then begin (2850003).
  • Fixed a crash that occurred when panning with two or more fingers across the screen. (2839200)