<?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</title>
	<atom:link href="http://coenraets.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://coenraets.org/blog</link>
	<description>Rich Internet Applications, Flex, AIR, Java, Android</description>
	<lastBuildDate>Thu, 02 Sep 2010 18:25:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Real Time Trader Desktop for Android Updated</title>
		<link>http://coenraets.org/blog/2010/09/real-time-trader-desktop-for-android-updated/</link>
		<comments>http://coenraets.org/blog/2010/09/real-time-trader-desktop-for-android-updated/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:10:40 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LiveCycle Data Services]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=1009</guid>
		<description><![CDATA[I updated my Real Time Trader Desktop for Android sample application to work with the latest AIR for Android build (8/26/2010). To make it easier to find the latest version of the application, I also created a project page for the application where you will always be able to download the lastest build. That way [...]]]></description>
			<content:encoded><![CDATA[<p>I updated my <em>Real Time Trader Desktop for Android</em> sample application to work with the latest AIR for Android build (8/26/2010). To make it easier to find the latest version of the application, I also created a <a href="http://coenraets.org/blog/air-for-android-samples/real-time-trader-desktop-for-android/">project page</a> for the application where you will always be able to download the lastest build. That way you won&#8217;t have to skim through blog posts to make sure you found the latest one.</p>
<p>Both the apk file and the source code are available for download on the project page.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/09/real-time-trader-desktop-for-android-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Employee Directory for &#8220;AIR for Android&#8221; Updated</title>
		<link>http://coenraets.org/blog/2010/09/employee-directory-for-air-for-android-updated/</link>
		<comments>http://coenraets.org/blog/2010/09/employee-directory-for-air-for-android-updated/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:03:07 +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=1000</guid>
		<description><![CDATA[I updated my Employee Directory on AIR for Android sample application to work with the latest AIR for Android build (8/26/2010). To make it easier to find the latest version of the application, I also created a project page for the application where you will always be able to download the lastest build. That way [...]]]></description>
			<content:encoded><![CDATA[<p>I updated my <em>Employee Directory on AIR for Android</em> sample application to work with the latest AIR for Android build (8/26/2010). To make it easier to find the latest version of the application, I also created a <a href="http://coenraets.org/blog/air-for-android-samples/employee-directory-for-android/">project page</a> for the application where you will always be able to download the lastest build. That way you won&#8217;t have to skim through blog posts to make sure you found the latest one.</p>
<p>Both the apk file and the source code are available for download on the project page.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/09/employee-directory-for-air-for-android-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-User Google Maps Collaboration on Android</title>
		<link>http://coenraets.org/blog/2010/08/multi-user-google-map-collaboration-on-android/</link>
		<comments>http://coenraets.org/blog/2010/08/multi-user-google-map-collaboration-on-android/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 13:26:23 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Froyo]]></category>
		<category><![CDATA[LiveCycle Collaboration Service]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=926</guid>
		<description><![CDATA[This application allows users in different locations to work together in Google Maps. The collaboration features in this application include: Video Chat Map Synchronization on move, zoom, etc. Whiteboarding Cursor sharing When running on Android, the application can use the device&#8217;s GPS to share your location. This is just another example of &#8220;built-in&#8221; collaboration (go [...]]]></description>
			<content:encoded><![CDATA[<p>This application allows users in different locations to work together in Google Maps.</p>
<p>The collaboration features in this application include:</p>
<ul>
<li>Video Chat</li>
<li>Map Synchronization on move, zoom, etc.</li>
<li>Whiteboarding</li>
<li>Cursor sharing</li>
</ul>
<p>When running on Android, the application can use the device&#8217;s GPS to share your location.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Xn7oAammGoM?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Xn7oAammGoM?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>This is just another example of &#8220;built-in&#8221; collaboration (go <a href="http://coenraets.org/blog/2010/07/video-chat-for-android-in-30-lines-of-code/">here</a> and <a href="http://coenraets.org/blog/2010/08/multi-user-video-tic-tac-toe-for-android/">here</a> for more). The point is really how easy it is to add these collaboration features to any application, and then to deploy these collaboration-enabled applications to multiple screens (browser, desktop, Android, and more devices soon).</p>
<p><strong>Experience the application in the browser</strong></p>
<p>Click <a href="http://coenraets.org/VideoMap/VideoMap.html">here</a> to experience the browser version of the application.</p>
<p>The application is written in Flex 4. The collaboration features are powered by <a href="https://www.adobe.com/africa/products/livecycle/collaborationservice/">LiveCycle Collaboration Service</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/08/multi-user-google-map-collaboration-on-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Multi-User Video Tic-Tac-Toe for Android</title>
		<link>http://coenraets.org/blog/2010/08/multi-user-video-tic-tac-toe-for-android/</link>
		<comments>http://coenraets.org/blog/2010/08/multi-user-video-tic-tac-toe-for-android/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:32:37 +0000</pubDate>
		<dc:creator>Christophe Coenraets</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LiveCycle Collaboration Service]]></category>

		<guid isPermaLink="false">http://coenraets.org/blog/?p=883</guid>
		<description><![CDATA[My previous post, “Video Chat for Android in 30 Lines of Code”, has generated a good level of interest. A slight twist on the same idea is to build collaboration into your applications. The use case here is slightly different: instead of enabling simple &#8220;video conversations&#8221; between remote users, this level of collaboration enables remote [...]]]></description>
			<content:encoded><![CDATA[<p>My previous post, “Video Chat for Android in 30 Lines of Code”, has generated a good level of interest. A slight twist on the same idea is to build collaboration <em><strong>into</strong></em> your applications. The use case here is slightly different: instead of enabling simple &#8220;video conversations&#8221; between remote users, this level of collaboration enables remote users to work together (or play together) within an application on their mobile device (or traditional computer).</p>
<p>To demonstrate this idea, I wrote a series of Flex applications with collaboration &#8220;built-in&#8221;. The same application can be deployed as an Android app, as a desktop app, or in the browser.</p>
<p>The first application in this series is a simple Tic-Tac-Toe game. The collaboration features built in this application are:</p>
<ul>
<li>Videochat</li>
<li>Shared cursors: follow the other player’s mouse position</li>
<li>Real time messages: a player’s move is immediately sent to the other player</li>
<li>Shared states: whose turn is it to play etc.</li>
</ul>
<p>These features are enabled by <a href="http://www.adobe.com/ap/products/livecycle/collaborationservice/">LiveCycle Collaboration Service</a>.</p>
<p><strong>Watch the video of the Android version:</strong></p>
<p>
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/EV7a6IWGOm8?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/EV7a6IWGOm8?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
</p>
<p><strong>Play Now!</strong></p>
<p>Click <a href="http://coenraets.org/tictactoe/tictactoe.html">here</a> to play (with the Browser version). This is obviously a simple application, but the same concepts can easily be applied to sophisticated social or business apps. My 6 year-old loves it, especially when I’m on the road :)</p>
<p><img src="http://coenraets.org/tictactoe/tictactoe.jpg"/></p>
<p><strong>Download the source code:</strong></p>
<p>Click <a href="http://coenraets.org/tictactoe/tictactoe.fxp">here</a> to download the source code.</p>
]]></content:encoded>
			<wfw:commentRss>http://coenraets.org/blog/2010/08/multi-user-video-tic-tac-toe-for-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<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>50</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>6</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>7</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>12</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="flashcontent1160" 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("flashcontent1160");
// ]]&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>10</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>
	</channel>
</rss>
