<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Christophe Coenraets &#187; Flex</title>
	<atom:link href="http://coenraets.org/blog/category/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://coenraets.org/blog</link>
	<description>Rich Internet Applications, Flex, AIR, Java, Android</description>
	<lastBuildDate>Fri, 23 Jul 2010 14:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Video Chat for Android in 30 Lines of Code</title>
		<link>http://coenraets.org/blog/2010/07/video-chat-for-android-in-30-lines-of-code/</link>
		<comments>http://coenraets.org/blog/2010/07/video-chat-for-android-in-30-lines-of-code/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 14:45:06 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Froyo]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=855</guid>
		<description><![CDATA[Here is a simple Video Chat application I built with Flex 4 and deployed on AIR for Android. The Application is just 30 lines of code and allows multiple users to join a chat room and &#8220;video chat&#8221;. Video streaming is powered by LiveCycle Collaboration Services, a set of hosted Flash Services that enable developers [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a simple Video Chat application I built with Flex 4 and deployed on <a href="http://labs.adobe.com/technologies/air2/android/">AIR for Android</a>. The Application is just 30 lines of code and allows multiple users to join a chat room and &#8220;video chat&#8221;.</p>
<p>Video streaming is powered by <a href="http://www.adobe.com/devnet/flashplatform/services/collaboration/">LiveCycle Collaboration Services</a>, a set of hosted Flash Services that enable developers to easily add real-time collaboration and social capabilities to their applications.</p>
<p>This application is obviously a bare-bones proof of concept. However, it is fully operational, and the same code can run on different runtime environments: AIR for Android, AIR on the Desktop, and Flash Player in the Browser. Users can participate in the same collaboration session regardless of the runtime environment they use.</p>
<h3>Watch the video:</h3>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/B8iGb3DgWN4&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/B8iGb3DgWN4&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<h3>The 30 lines of code:</h3>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; xmlns:cs=&quot;AfcsNameSpace&quot; currentState=&quot;logon&quot; fontSize=&quot;28&quot;&gt;

	&lt;fx:Script&gt;
		[Bindable] private var roomURL:String = &quot;http://connectnow.acrobat.com/YOUR_ROOM_NAME&quot;;

		protected function connect():void {
			auth.userName = userName.text;
			currentState = &quot;default&quot;;
			session.login();
		}
	&lt;/fx:Script&gt;

	&lt;s:states&gt;
		&lt;s:State name=&quot;default&quot;/&gt;
		&lt;s:State name=&quot;logon&quot;/&gt;
	&lt;/s:states&gt;

	&lt;fx:Declarations&gt;
		&lt;cs:AdobeHSAuthenticator id=&quot;auth&quot;/&gt;
	&lt;/fx:Declarations&gt;

	&lt;s:TextInput id=&quot;userName&quot; includeIn=&quot;logon&quot; top=&quot;200&quot; horizontalCenter=&quot;0&quot;/&gt;
	&lt;s:Button label=&quot;Connect&quot; click=&quot;connect()&quot; includeIn=&quot;logon&quot; top=&quot;250&quot; horizontalCenter=&quot;0&quot; height=&quot;50&quot; width=&quot;150&quot;/&gt;

	&lt;cs:ConnectSessionContainer id=&quot;session&quot; roomURL=&quot;{roomURL}&quot; authenticator=&quot;{auth}&quot; autoLogin=&quot;false&quot; width=&quot;100%&quot; height=&quot;100%&quot; includeIn=&quot;default&quot;&gt;
		&lt;cs:WebCamera top=&quot;10&quot; left=&quot;10&quot; bottom=&quot;10&quot; right=&quot;10&quot;/&gt;
	&lt;/cs:ConnectSessionContainer&gt;

&lt;/s:Application&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/07/video-chat-for-android-in-30-lines-of-code/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Android Trader Desktop with Flex and AIR &#8212; Updated for Froyo + Source Code Available</title>
		<link>http://coenraets.org/blog/2010/07/android-trader-desktop-with-flex-and-air-updated-for-froyo-source-code-available/</link>
		<comments>http://coenraets.org/blog/2010/07/android-trader-desktop-with-flex-and-air-updated-for-froyo-source-code-available/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:58:13 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Froyo]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=848</guid>
		<description><![CDATA[A few weeks ago, I posted a video of a Mobile Trader Desktop application I built using Flex 4 and AIR for Android. I recently updated the application for Froyo (Android 2.2), and I can now share the application file and the source code. Watch the video: Download the Application and Source Code You can [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I posted a video of a Mobile Trader Desktop application I built using Flex 4 and AIR for Android. I recently updated the application for Froyo (Android 2.2), and I can now share the application file and the source code.</p>
<p>Watch the video:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/K1CC96Nk9x0&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/K1CC96Nk9x0&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<h3>Download the Application and Source Code</h3>
<ul>
<li>You can download the application (MobileTrader.apk) <a href="http://coenraets.org/froyo/MobileTrader.apk">here</a></li>
<li>You can download the source code (MobileTrader.fxp  project file) <a href="http://coenraets.org/froyo/MobileTrader.fxp">here</a></li>
</ul>
<p>The latest version of AIR for Android is available <a href="http://labs.adobe.com/technologies/air2/android/">here</a>.</p>
<p>NOTE: In this version of the application, the stock updates are simulated at the client side so that you don&#8217;t have to install the server infrastructure. Modifying the application to get the stock updates from a server is easy: use <a href="http://coenraets.org/blog/2010/04/trader-desktop-performance-console-fix-source-code-and-fast-datagrid/">this application</a> as an example.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/07/android-trader-desktop-with-flex-and-air-updated-for-froyo-source-code-available/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Employee Directory Sample Application Using Flex and AIR for Android &#8211; Updated for Froyo</title>
		<link>http://coenraets.org/blog/2010/07/employee-directory-sample-application-using-flex-and-air-for-android-updated-for-froyo/</link>
		<comments>http://coenraets.org/blog/2010/07/employee-directory-sample-application-using-flex-and-air-for-android-updated-for-froyo/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 19:07:20 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Froyo]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=835</guid>
		<description><![CDATA[I finally took the time to rebuild the Employee Directory application with the latest version of AIR for Android (available here) to run on Froyo. See the links below to download the apk and the source code. (If you are still running Eclair see my original post). The Employee Directory application demonstrates how to build [...]]]></description>
			<content:encoded><![CDATA[<p>I finally took the time to rebuild the Employee Directory application with the latest version of AIR for Android (available <a href="http://labs.adobe.com/technologies/air2/android/">here</a>) to run on Froyo. See the links below to download the apk and the source code. (If you are still running Eclair see my <a href="http://coenraets.org/blog/2010/05/sample-application-using-flex-and-air-for-android/">original post</a>).</p>
<p>The Employee Directory application demonstrates how to build Flex applications for Android using the AIR runtime.</p>
<p>Watch the video:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/XONwoFIQ17Q&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XONwoFIQ17Q&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>The key point when you look at the source code of this application is that you build Flex applications for Android the exact same way you build Flex applications for the Browser and the Desktop: same programming model, same language, same tools, same code. This application for example uses a local SQLite database on your device that you access using the same database API you&#8217;d use for any other Flex application running on the AIR runtime.</p>
<p>The other good news is that you have access to additional APIs (GPS, accelerometer), and you can integrate with other applications on your phone (dialer, SMS, email, etc).</p>
<h3>Download the Application and Source Code</h3>
<ul>
<li>You can download the application (EmployeeDirectory.apk) <a href="http://coenraets.org/froyo/EmployeeDirectory.apk">here</a></li>
<li>You can download the source code (EmployeeDirectory.fxp  project file) <a href="http://coenraets.org/froyo/EmployeeDirectory.fxp">here</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/07/employee-directory-sample-application-using-flex-and-air-for-android-updated-for-froyo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>&#8220;VoiceNotes for Android&#8221;: Sample App using Flex, AIR, and the Microphone API</title>
		<link>http://coenraets.org/blog/2010/07/voicenotes-for-android-sample-app-using-flex-air-and-the-microphone-api/</link>
		<comments>http://coenraets.org/blog/2010/07/voicenotes-for-android-sample-app-using-flex-air-and-the-microphone-api/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:42:46 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=819</guid>
		<description><![CDATA[VoiceNotes for Android is a sample application built with Flex and deployed on Adobe AIR for Android. The application allows you to record voice messages and play them back later. It demonstrates the Microphone API introduced in the latest builds of AIR for Android. VoiceNotes for Android is based on the desktop version of VoiceNotes [...]]]></description>
			<content:encoded><![CDATA[<p>VoiceNotes for Android is a sample application built with Flex and deployed on Adobe AIR for Android. The application allows you to record voice messages and play them back later. It demonstrates the Microphone API introduced in the latest builds of AIR for Android. VoiceNotes for Android is based on the desktop version of VoiceNotes <a href="http://coenraets.org/blog/2010/06/voice-notes-updated-for-air-2-ga/">I recently blogged</a> as an AIR 2 sample.</p>
<p>Watch the video:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/3UAx4KpMz0E&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/3UAx4KpMz0E&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<h3>Download the Application and Source Code</h3>
<ul>
<li>You can download the application (VoiceNotes.apk) <a href="http://coenraets.org/froyo/VoiceNotes.apk">here</a></li>
<li>You can download the source code (VoiceNotes.fxp project file) <a href="http://coenraets.org/froyo/VoiceNotes.fxp">here</a></li>
</ul>
<p>If you want to compile or run the application on your device, make sure you <a href="http://labs.adobe.com/technologies/air2/android">install the latest version of the AIR for Android</a> SDK and Runtime respectively. The apk was built using the AIR for Android 20100720 build.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/07/voicenotes-for-android-sample-app-using-flex-air-and-the-microphone-api/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Creating a Web Server using the new Server Socket API in AIR 2</title>
		<link>http://coenraets.org/blog/2010/07/creating-a-web-server-using-the-new-server-socket-api-in-air-2/</link>
		<comments>http://coenraets.org/blog/2010/07/creating-a-web-server-using-the-new-server-socket-api-in-air-2/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 15:03:21 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=784</guid>
		<description><![CDATA[During the Adobe AIR 2 beta, I wrote a simple Web Server application to explore the new Server Socket API available in AIR 2. Here is the updated version of the application for AIR 2 GA. The &#8220;Mini AIR Web Server&#8221; is a simplistic implementation of an HTTPServer. Needless to say that it is far [...]]]></description>
			<content:encoded><![CDATA[<p>During the Adobe AIR 2 beta, I wrote a simple Web Server application to explore the new Server Socket API available in AIR 2. Here is the updated version of the application for AIR 2 GA.</p>
<p>The &#8220;Mini AIR Web Server&#8221; is a simplistic implementation of an HTTPServer. Needless to say that it is far from being a production quality Web Server. The goal here is simply to use the well understood mechanics of a web server to learn how to use server sockets in AIR 2.0.</p>
<h2>Installation Instructions</h2>
<p>Make sure you have the AIR 2 runtime installed (you can download the AIR 2 runtime <a href="http://get.adobe.com/air/">here</a>), and install the application using the badge below:</p>
<p><div id="flashcontent2048" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://coenraets.org/blog/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://coenraets.org/blog/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "AIR+Web+Server");
so.addVariable("appurl", "http://coenraets.org/apps/MiniAIRWebServer/MiniAIRWebServer.air");
so.addVariable("appid", "AIR+Web+Server");
so.addVariable("pubid", "");
so.addVariable("appversion", "2.0");
so.addVariable("imageurl", "http://coenraets.org/apps/MiniAIRWebServer/MiniAIRWebServer.png");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent2048");
// ]]&gt; -->
</script>
</p>
<h2>Testing the Application</h2>
<p>To test the application, open a browser and test the sample HTML pages provided with the application: </p>
<ul>
<li><a href="http://localhost:8888/test1.html">http://localhost:8888/test1.html</a></li>
<li><a href="http://localhost:8888/test2.html">http://localhost:8888/test2.html</a></li>
<li><a href="http://localhost:8888/test3.html">http://localhost:8888/test3.html</a></li>
</ul>
<p><strong>NOTE:</strong> You may have to change the port number in these URLs depending on the port number you enter in the application.</p>
<p>You can add your own content in the webroot folder in the applicationStorageDirectory.</p>
<h2>Downloading the project</h2>
<p>Click <a href="http://coenraets.org/apps/MiniAIRWebServer/MiniAIRWebServer.fxp">here</a> to download the project</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/07/creating-a-web-server-using-the-new-server-socket-api-in-air-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Embedding Tomcat and BlazeDS in an AIR 2 Application</title>
		<link>http://coenraets.org/blog/2010/06/embedding-tomcat-and-blazeds-in-an-air-2-application/</link>
		<comments>http://coenraets.org/blog/2010/06/embedding-tomcat-and-blazeds-in-an-air-2-application/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 18:58:38 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=773</guid>
		<description><![CDATA[This was by far my most popular sample during the beta. So, here is an updated version for AIR 2 GA. In this sample application, Tomcat and BlazeDS are embedded as part of the native installer. The first time you run the application, Tomcat is automatically copied to your applicationStorageDirectory from where the AIR application [...]]]></description>
			<content:encoded><![CDATA[<p>This was by far my most popular sample during the beta. So, here is an updated version for AIR 2 GA.</p>
<p><img src="http://coenraets.org/apps/AIRAppWithEmbeddedTomcat/AIRAppWithEmbeddedTomcat.png" alt="" /></p>
<p>In this sample application, Tomcat and BlazeDS are embedded as part of the native installer. The first time you run the application, Tomcat is automatically copied to your applicationStorageDirectory from where the AIR application starts it. You can start and stop Tomcat manually from within the application, but in a real life application you would probably want to start Tomcat automatically when the AIR application starts.</p>
<p><span id="more-773"></span></p>
<p>Why would you want to embed Tomcat as part of an AIR application? First of all, I&#8217;m not saying that you should&#8230; This was just part of my exploration of new capabilities in AIR 2.0. That being said, I can think of a number of use cases where this could make sense. For example:</p>
<ul>
<li>Tighter communication with Java code using BlazeDS locally as a way to directly invoke methods on remote Java classes.</li>
<li>Provide an offline mode for an application that closely mimics the online infrastructure.</li>
</ul>
<h3>Installation Instructions</h3>
<ol>
<li>Make sure you have the AIR 2 runtime installed (you can download it <a href="http://get.adobe.com/air/">here</a>).</li>
<li>Because Tomcat Launcher uses the Native Process API, you have to use a native installer:
<ul>
<li>To install the application on Windows, download and run <a href="http://coenraets.org/apps/AIRAppWithEmbeddedTomcat/AIRAppWithEmbeddedTomcat.exe">AIRAppWithEmbeddedTomcat.exe</a>.</li>
<li>To install the application on a Mac, download and run <a href="http://coenraets.org/apps/AIRAppWithEmbeddedTomcat/AIRAppWithEmbeddedTomcat.dmg">AIRAppWithEmbeddedTomcat.dmg</a>.</li>
</ul>
</li>
</ol>
<p>After starting the application, enter the path to your Java home folder, then click the Start button. The application will remember the folder you entered the next time you use the application. Try the &#8220;Embedded JSP Example&#8221; and &#8220;Embedded RemoteObject Example&#8221;. If you get a BindingException when you start Tomcat, make sure it isn&#8217;t already started. You can also click the Stop button to stop a running instance.</p>
<p>You can download the project here: <a href="http://coenraets.org/apps/AIRAppWithEmbeddedTomcat/AIRAppWithEmbeddedTomcat.fxp.zip">AIRAppWithEmbeddedTomcat.fxp.zip</a>. </p>
<p>NOTE: If you want to compile the project, make sure you use the AIR 2 SDK available <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/06/embedding-tomcat-and-blazeds-in-an-air-2-application/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tomcat Launcher using AIR Native Process API &#8212; Update for AIR 2 GA</title>
		<link>http://coenraets.org/blog/2010/06/tomcat-launcher-using-air-native-process-api-update-for-air-2-ga/</link>
		<comments>http://coenraets.org/blog/2010/06/tomcat-launcher-using-air-native-process-api-update-for-air-2-ga/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:26:31 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=765</guid>
		<description><![CDATA[I updated my &#8220;Tomcat Launcher&#8221; sample application for AIR 2.0 GA. &#8220;Tomcat Launcher&#8221; allows you to start / stop Tomcat and view the standard output log without opening a DOS box or Terminal window. It also allows you to open that log in your default Text Editor which is another new feature of AIR 2.0 [...]]]></description>
			<content:encoded><![CDATA[<p>I updated my &#8220;Tomcat Launcher&#8221; sample application for AIR 2.0 GA.</p>
<p>&#8220;Tomcat Launcher&#8221;  allows you to start / stop Tomcat and view the standard output log without opening a DOS box or Terminal window. It also allows you to open that log in your default Text Editor which is another new feature of AIR 2.0 that I covered in the &#8220;<a href="http://coenraets.org/blog/2010/06/air-2-excel-sample-app-updated-for-air-2-ga/">AIR2Excel</a>&#8221; sample application. Tomcat Launcher also provides a generic example showing how to use the AIR 2.0 native process API to execute Java code.</p>
<p align="center">
<img src="http://coenraets.org/apps/TomcatLauncher/TomcatLauncherMac.png" alt="" />
</p>
<p><span id="more-765"></span></p>
<p align="center">
<img src="http://coenraets.org/apps/TomcatLauncher/TomcatLauncherWin.png" alt="" />
</p>
<h3>Installation Instructions</h3>
<ol>
<li>Make sure you have the AIR 2 runtime installed (you can download it <a href="http://get.adobe.com/air/">here</a>).</li>
<li>Because Tomcat Launcher uses the Native Process API, you have to use a native installer:
<ul>
<li>To install the application on Windows, download and run <a href="http://coenraets.org/apps/TomcatLauncher/TomcatLauncher.exe">TomcatLauncher.exe</a>.</li>
<li>To install the application on a Mac, download and run <a href="http://coenraets.org/apps/TomcatLauncher/TomcatLauncher.dmg">TomcatLauncher.dmg</a>.</li>
</ul>
</li>
</ol>
<p>After starting the application, enter the paths to your Java home folder and to the Tomcat installation you want to start, then click the Start button. The application will remember the folders you entered the next time you use the application. If you get a BindingException, make sure Tomcat isn&#8217;t already started. You can also click the Stop button to stop a running instance.</p>
<p>You can download the project here: <a href="http://coenraets.org/apps/TomcatLauncher/TomcatLauncher.fxp.zip">TomcatLauncher.fxp.zip</a>. </p>
<p>NOTE: If you want to compile the project, make sure you use the AIR 2 SDK available <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/06/tomcat-launcher-using-air-native-process-api-update-for-air-2-ga/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;AIR 2 Excel&#8221; Sample App Updated for AIR 2 GA</title>
		<link>http://coenraets.org/blog/2010/06/air-2-excel-sample-app-updated-for-air-2-ga/</link>
		<comments>http://coenraets.org/blog/2010/06/air-2-excel-sample-app-updated-for-air-2-ga/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 14:25:10 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=758</guid>
		<description><![CDATA[I updated the &#8220;AIR 2 Excel&#8221; sample application for the official AIR 2 launch. &#8220;AIR 2 Excel&#8221; demonstrates different techniques for AIR/Excel integration, including the new AIR 2 File.openWithDefaultApplication() API. In Adobe AIR 1.0 and 1.5, there were different options to &#8220;open&#8221; the data of a Flex DataGrid in Excel. For example, you could leverage [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://coenraets.org/AIR2Excel/AIR2Excel.png" alt="" /></p>
<p>I updated the &#8220;AIR 2 Excel&#8221; sample application for the official AIR 2 launch. &#8220;AIR 2 Excel&#8221; demonstrates different techniques for AIR/Excel integration, including the new AIR 2 File.openWithDefaultApplication() API.</p>
<p><span id="more-758"></span></p>
<p>In Adobe AIR 1.0 and 1.5, there were different options to &#8220;open&#8221; the data of a Flex DataGrid in Excel. For example, you could leverage the AIR native drag-and-drop support to drag rows from the DataGrid to an open Excel spreadsheet. You could also drag rows to the desktop (or anywhere on the file system) as an .xls file. These two approaches are demonstrated in my <a href="http://coenraets.org/blog/2009/03/make-and-receive-phone-calls-in-the-new-version-of-the-salesbuilder-sample-flex-application/">Salesbuilder sample application</a>. Another approach was to use a server roundtrip to download the generated .xls file from the server and force Excel to open with the data.</p>
<p>There was however no immediate way to implement a straight (client-side only) &#8220;Open in Excel&#8221; feature (aka click a button to open your DataGrid data in Excel). With AIR 2.0 and the new <strong>File.openWithDefaultApplication()</strong> method this becomes extremely easy to implement. In the sample below, I provide an example of this new feature. The sample also supports the drag-and-drop approach from the AIR application to Excel and from the AIR application to the desktop (or anywhere else on the file system). This sample uses the <a href="http://code.google.com/p/as3xls/">as3xls library</a> to create the Excel spreadsheet. View Source is enabled.</p>
<p>Make sure you have the AIR 2 runtime installed (you can download the AIR 2 runtime <a href="http://get.adobe.com/air/">here</a>), and install the application using the badge below:</p>
<p><div id="flashcontent1382" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://coenraets.org/blog/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://coenraets.org/blog/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "AIR+2+Excel");
so.addVariable("appurl", "http://coenraets.org/AIR2Excel/AIR2Excel.air");
so.addVariable("appid", "AIR+2+Excel");
so.addVariable("pubid", "");
so.addVariable("appversion", "2.0");
so.addVariable("imageurl", "http://coenraets.org/AIR2Excel/AIR2Excel.png");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent1382");
// ]]&gt; -->
</script>
</p>
<p>View Source (right click) is enabled.</p>
<p>NOTE: You can download the AIR 2 SDK <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/06/air-2-excel-sample-app-updated-for-air-2-ga/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>&#8220;Voice Notes&#8221; Updated for AIR 2 GA</title>
		<link>http://coenraets.org/blog/2010/06/voice-notes-updated-for-air-2-ga/</link>
		<comments>http://coenraets.org/blog/2010/06/voice-notes-updated-for-air-2-ga/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:04:22 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=742</guid>
		<description><![CDATA[To mark the official release of AIR 2, I&#8217;m upgrading the samples I built during the beta, starting today with &#8220;Voice Notes&#8221;. Voice Notes is a sample application that leverages the new Microphone API. The application lets you record voice notes and store them in a SQLite database so that you can replay them later. [...]]]></description>
			<content:encoded><![CDATA[<p>To mark the official release of AIR 2, I&#8217;m upgrading the samples I built during the beta, starting today with &#8220;Voice Notes&#8221;.</p>
<p>Voice Notes is a sample application that leverages the new Microphone API. The application lets you record voice notes and store them in a SQLite database so that you can replay them later.</p>
<p>Make sure you have the AIR 2 runtime installed (you can download the AIR 2 runtime <a href="http://get.adobe.com/air/">here</a>), and install the application using the badge below:</p>
<p><div id="flashcontent1978" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://coenraets.org/blog/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://coenraets.org/blog/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Voice+Notes");
so.addVariable("appurl", "http://coenraets.org/apps/VoiceNotes/VoiceNotes.air");
so.addVariable("appid", "Voice+Notes");
so.addVariable("pubid", "");
so.addVariable("appversion", "2.0");
so.addVariable("imageurl", "http://coenraets.org/apps/VoiceNotes/VoiceNotes.png");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent1978");
// ]]&gt; -->
</script>
</p>
<p>View Source (right click) is enabled.</p>
<p>NOTE: You can download the AIR 2 SDK <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/06/voice-notes-updated-for-air-2-ga/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sample Application using Flex and AIR for Android</title>
		<link>http://coenraets.org/blog/2010/05/sample-application-using-flex-and-air-for-android/</link>
		<comments>http://coenraets.org/blog/2010/05/sample-application-using-flex-and-air-for-android/#comments</comments>
		<pubDate>Thu, 20 May 2010 17:56:14 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=700</guid>
		<description><![CDATA[Here is a simple Employee Directory application I wrote to demonstrate how to build Flex applications for Android using the AIR runtime. Watch the video: The key point when you look at the source code of this application is that you build Flex applications for Android the exact same way you build Flex applications for [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a simple Employee Directory application I wrote to demonstrate how to build Flex applications for Android using the AIR runtime.</p>
<p>Watch the video:</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/XONwoFIQ17Q&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XONwoFIQ17Q&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>The key point when you look at the source code of this application is that you build Flex applications for Android the exact same way you build Flex applications for the Browser and the Desktop: same programming model, same language, same tools, same code. This application for example uses a local SQLite database on your device that you access using the same database API you&#8217;d use for any other Flex application running on the AIR runtime.</p>
<p>The other good news is that you have access to additional APIs (GPS, accelerometer), and you can integrate with other applications on your phone (dialer, SMS, email, etc).</p>
<h2>Download the Application and Source Code</h2>
<ul>
<li>You can download the application (EmployeeDirectory.apk) <a href="http://coenraets.org/android/EmployeeDirectory.apk">here</a></li>
<li>You can download the source code (EmployeeDirectory.fxp  project file) <a href="http://coenraets.org/android/EmployeeDirectory.fxp">here</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/05/sample-application-using-flex-and-air-for-android/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>
