<?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>Luminis Software Development &#187; mobile</title>
	<atom:link href="http://lsd.luminis.eu/tag/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://lsd.luminis.eu</link>
	<description></description>
	<lastBuildDate>Wed, 28 Dec 2011 20:44:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GraniteDS and AIR for mobile</title>
		<link>http://lsd.luminis.eu/graniteds-and-air-for-mobile/</link>
		<comments>http://lsd.luminis.eu/graniteds-and-air-for-mobile/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 14:10:51 +0000</pubDate>
		<dc:creator>Walter Treur</dc:creator>
				<category><![CDATA[Flex / AIR]]></category>
		<category><![CDATA[iPhone/ iPad]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[graniteds]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[News Item]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1571</guid>
		<description><![CDATA[In this short article I will show how to resolve some obstacles I came across when I developed my first application with AIR for mobile and GraniteDS]]></description>
			<content:encoded><![CDATA[<p>In this article I will briefly show how to resolve some obstacles I came across when I developed my first application with <a href="http://www.adobe.com/devnet/devices.html">AIR for mobile</a> and <a href="http://www.graniteds.org">GraniteDS</a>. The most noteworthy reason of using AIR to create mobile applications is of course the <a href="http://lsd.luminis.eu/introduction-to-air-for-mobile/">multi-platform deployment using a single codebase</a>. Furthermore, with Granite you are able to disclose the services of an existing Java backend to a mobile platform without significant changes to the backend. This offers great potential for enterprises who are struggling with the fragmented mobile market and don’t want to completely rewrite their existing Java backend.</p>
<p>I will assume you have some familiarity with AIR for mobile and Granite. It’s mostly the same as for Flex but there are some things you have to take into account.</p>
<h3>1. Get the right version of Granite</h3>
<p>The latest version of Granite is 2.2.1 GA. However, in the most recent version of AIR and Flex Adobe made some changes in the API which breaks backwards compatibility for some features of Granite. Therefore this release of Granite won’t work using the newest SDK. Refer to <a href="https://groups.google.com/d/msg/graniteds/1avtq0rXezU/0JPcX0wTTWYJ">this post on the Granite form</a> for more info on how to make these changes yourself. If you don’t want be bothered with building Granite yourself just download <a href="http://lsd.luminis.eu/wp-content/uploads/2011/09/graniteds-mobile-air.zip">this version of GraniteDS</a> to get started immediately.</p>
<h3>2. Connecting to the right server</h3>
<p>A problem for AIR applications in general (both desktop and mobile) is setting the right server settings. It is quite simple when running within the browser: The server address is changed with a single reconfiguration of the swf-file and all clients are using the new address on a browser refresh. With AIR it is a bit different and you&#8217;re not always at liberty to ‘hardcode’ the service settings in the AIR distribution package.<br />
Granite offers a method for dynamic server configuration using the server initializer component:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">Tide.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addComponentWithFactory</span><span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">&quot;serviceInitializer&quot;</span>,
  DefaultServiceInitializer, <span style="color: #66cc66;">&#123;</span>
    contextRoot: <span style="color: #ff0000;">'/my-app'</span>,
    serverName: “10.0.0.1”,
    serverPort: “<span style="color: #cc66cc;">8080</span>”
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Note that once a connection is made, it is not possible to reconnect with another configuration, because the service initializer is only used once. You have to restart the application to enable the new connection settings or reset Tide’s RemoteObject. Unfortunately Tide’s API doesn’t support this reset. I came up with a small workaround which requires you to extend the EJB class with an extra reset method with the following body:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Ejb <span style="color: #0066CC;">extends</span> org.<span style="color: #006600;">granite</span>.<span style="color: #006600;">tide</span>.<span style="color: #006600;">ejb</span>.<span style="color: #006600;">Ejb</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">/**
   * Reset the Tide Connection to allow new server settings
   */</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> resetConnection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>_ro<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
      _ro.<span style="color: #006600;">disconnect</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    _ro = <span style="color: #000000; font-weight: bold;">null</span>;
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>This method resets Tide’s RemoteObject so the next remote call will force a reinitialization using the current settings of serviceInitializer. Refer to <a href="http://www.graniteds.org/jira/browse/GDS-913">Granite’s issue tracker</a> or <a href="https://groups.google.com/d/msg/graniteds/wITFxXyXTYw/3hMnwH76T6sJ">forum thread</a> for more details.</p>
<h3>3. Automatic logout</h3>
<p>Applications running on mobile platforms are always susceptible to unpredictable interruptions. For example when a phone call or text is received. Mobile AIR applications provide a <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/EventDispatcher.html#event:deactivate">deactivate event</a> which is dispatched when the application is halted somehow. The application I wrote was using Tide’s Identity class for user login. Therefore I added an event handler to automatically logout the user and push the LoginView on top of the navigator stack:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> deactivateHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>identity.<span style="color: #006600;">loggedIn</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    identity.<span style="color: #006600;">logout</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #66cc66;">&#125;</span>
  navigator.<span style="color: #006600;">popAll</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Purge the navigator history to disable back button usage</span>
  navigator.<span style="color: #006600;">pushView</span><span style="color: #66cc66;">&#40;</span>LoginView<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<h3>4. Build, build, build!</h3>
<p>This isn’t directly related to Granite or AIR for mobile. But since they can both be used for enterprise scale applications I thought I&#8217;d mention it shortly: Make sure you have a proper build script. Now, I’ve got an example from <a href="http://www.blackcj.com/blog/2011/04/04/ios-android-and-blackberry-in-a-single-click-with-ant/">Chris Black</a> which provides a good starting point. I’ve only added the metadata compiler options required for Tide and of course a reference to the Granite libraries and generated Actionscript classes.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">&nbsp;
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mxmlc</span> ... <span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!-- .... --&gt;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!-- location of generated as classes with gas3 --&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source-path</span> <span style="color: #000066;">path-element</span>=<span style="color: #ff0000;">&quot;${gen.src.dir}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;compiler.library-path</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${basedir}/libs&quot;</span> <span style="color: #000066;">append</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;granite-essentials.swc&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>   
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;granite.swc&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/compiler.library-path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Bindable&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ChangeEvent&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Destroy&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Id&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;In&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Inject&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Managed&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ManagedEvent&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Name&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NonCommittingChangeEvent&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Observer&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Out&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;PostConstruct&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Transient&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;keep-as3-metadata</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Version&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mxmlc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>One plus one</h3>
<p>I can imagine one must be thinking: ‘Everyone could have figured that out!’ And I totally agree, because that’s exactly what this article is about. With some experience with Flex, a developer can write a mobile application on top of a Java EE backend. It doesn’t take much to utilize an existing backend from a mobile platform. Since the latest release of AIR the performance for iOS and Android is pretty good and together with the <a href="http://www.granitedataservices.com/enterprise-platform-2011/">Granite Enterprise Platform</a> the barrier to emerge an enterprise application to a mobile platform has become much lower.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/graniteds-and-air-for-mobile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduction to AIR for mobile</title>
		<link>http://lsd.luminis.eu/introduction-to-air-for-mobile/</link>
		<comments>http://lsd.luminis.eu/introduction-to-air-for-mobile/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 15:21:25 +0000</pubDate>
		<dc:creator>Walter Treur</dc:creator>
				<category><![CDATA[Flex / AIR]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[Google Android]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[News Item]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1209</guid>
		<description><![CDATA[A couple of weeks ago, Adobe released a preview of the new Flash Builder and SDK. One of the new features is support for mobile devices using AIR. For now, only Android 2.2 is capable of running mobile AIR applications, but since Steve has changed the rules again, AIR on iOS is nearby, according to Adobe. Time to take a test drive with a tutorial.]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, Adobe released a preview of the new Flash Builder and SDK. One of the new features is support for mobile devices using AIR. For now, only Android 2.2 is capable of running mobile AIR applications, but since Steve has changed the rules again, AIR on iOS is nearby, according to Adobe. Time to take a test drive with a tutorial.</p>
<h3>Goal</h3>
<p>We will create a simple RSS reader. Not a very exciting example, but already shows some nice features of AIR for mobile. I’ll assume you have experience with Flex or AIR, but I think you will manage with some level of programming experience. If not, feel free to leave a reply if you have any questions or take a look at the <a href='http://lsd.luminis.eu/wp-content/uploads/2010/11/MobileRssReaderTutorial.zip'>full source</a>.</p>
<h3>Setup</h3>
<p><img src="http://lsd.luminis.eu/wp-content/uploads/2010/11/empty-project-contents.png" alt="Empty project contents" title="Empty project contents" width="269" height="196" class="alignleft size-full wp-image-1258" /></p>
<p>Download and install the preview release of <a href="http://labs.adobe.com/technologies/flashbuilder_burrito/">Flash Builder called Burrito</a> It provides a wizard to start an empty mobile application. By default the wizard creates two mxml files containing a MobileApplication and a View component.</p>
<p>The MobileApplication class is inherited from the Application class used for desktop AIR. The mobile version provides, among other things, an action bar and a navigator. Furthermore its firstView property points to the empty view component. The view component is a normal group, but optimized for mobile use as well.</p>
<h3>Article list</h3>
<p>Open the main view component (called <i>&lt;projectName&gt;</i>Home.mxml). Create a List component in the main view. Provide positioning constraints to let it occupy the whole screen.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span> left=<span style="color: #ff0000;">&quot;0&quot;</span> top=<span style="color: #ff0000;">&quot;0&quot;</span> bottom=<span style="color: #ff0000;">&quot;0&quot;</span> right=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>To retrieve the feed, create an HTTPService pointing to the RSS feed in the declaration section of the view. Add a resultHandler function to parse the feed-data. Parsing xml data is quite simple. You can just navigate to the DOM-tree as it were a normal ActionScript object. Use the data property of the view to store the articles locally. Using this property will provide some benefits with navigation, which will become clear in a bit.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
  <span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">    import mx.rpc.events.ResultEvent;</span>
&nbsp;
<span style="color: #000000;">    protected function service_resultHandler<span style="color: #66cc66;">&#40;</span>event:ResultEvent<span style="color: #66cc66;">&#41;</span>:void <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">      data = event.result.rss.channel.item;</span>
<span style="color: #000000;">    <span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">  <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HTTPService</span></span>
<span style="color: #000000;">    id=<span style="color: #ff0000;">&quot;service&quot;</span></span>
<span style="color: #000000;">    url=<span style="color: #ff0000;">&quot;http://lsd.luminis.nl/feed/&quot;</span></span>
<span style="color: #000000;">    result=<span style="color: #ff0000;">&quot;service_resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Now there are only a couple of things left to do. Invoke the server and provide the list with the articles and instructions to show them.</p>
<p>Both are quite simple. The feeds are retrieved by invoking the send() method of the service. To automatically retrieve them, this method should be invoked when the view is created so we will use the creationComplete handler.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:View</span></span>
<span style="color: #000000;">  xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">  xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">  title=<span style="color: #ff0000;">&quot;Home&quot;</span></span>
<span style="color: #000000;">  creationComplete=<span style="color: #ff0000;">&quot;service.send()&quot;</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Finally, bind the data property to the dataProvider of the list and set its labelField attribute to ‘title’.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span></span>
<span style="color: #000000;">  dataProvider=<span style="color: #ff0000;">&quot;{data}&quot;</span></span>
<span style="color: #000000;">  labelField=<span style="color: #ff0000;">&quot;title&quot;</span></span>
<span style="color: #000000;">  left=<span style="color: #ff0000;">&quot;0&quot;</span> top=<span style="color: #ff0000;">&quot;0&quot;</span> bottom=<span style="color: #ff0000;">&quot;0&quot;</span> right=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>Your view will probably look something like this.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:View</span></span>
<span style="color: #000000;">  xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">  xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">  title=<span style="color: #ff0000;">&quot;Home&quot;</span></span>
<span style="color: #000000;">  creationComplete=<span style="color: #ff0000;">&quot;service.send()&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">      import mx.rpc.events.ResultEvent;</span>
&nbsp;
<span style="color: #000000;">      protected function service_resultHandler<span style="color: #66cc66;">&#40;</span>event:ResultEvent<span style="color: #66cc66;">&#41;</span>:void <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">        data = event.result.rss.channel.item;</span>
<span style="color: #000000;">      <span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">    <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HTTPService</span></span>
<span style="color: #000000;">      id=<span style="color: #ff0000;">&quot;service&quot;</span></span>
<span style="color: #000000;">      url=<span style="color: #ff0000;">&quot;http://lsd.luminis.nl/feed/&quot;</span></span>
<span style="color: #000000;">      result=<span style="color: #ff0000;">&quot;service_resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span></span>
<span style="color: #000000;">    dataProvider=<span style="color: #ff0000;">&quot;{data}&quot;</span></span>
<span style="color: #000000;">    labelField=<span style="color: #ff0000;">&quot;title&quot;</span></span>
<span style="color: #000000;">    left=<span style="color: #ff0000;">&quot;0&quot;</span> top=<span style="color: #ff0000;">&quot;0&quot;</span> bottom=<span style="color: #ff0000;">&quot;0&quot;</span> right=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:View</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<h3>Emulator</h3>
<div id="attachment_1254" class="wp-caption alignleft" style="width: 172px"><img src="http://lsd.luminis.eu/wp-content/uploads/2010/11/emulate-hardware-buttons.png" alt="Emulate hardware buttons" title="Hardware buttons" width="162" height="138" class="size-full wp-image-1254" /><p class="wp-caption-text">Emulate hardware buttons</p></div><br />
Now it is time to run a first test. Click the Run button and select ‘On Desktop’ as launch method in run configuration dialog. Also choose a device to simulate and run the application.</p>
<p>When the emulator is launched it shows a list of articles after a couple of seconds. Now you can select Rotate Right from the Device menu to display the landscape view. You will also notice the list is able to scroll up and down when dragging your mouse pointer (Which of course is the emulated equivalent of a one-finger swipe)</p>
<h3>Article details</h3>
<p>Next is to create a detailed view showing the full content of an article. Close the emulator and return to Flash Builder. In the views package, create a new component and call it DetailView. Bind the title attribute to data.title. Add a label as well and bind the text property to data.description. Don’t forget to specify the positioning constraints.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:View</span></span>
<span style="color: #000000;">  xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">  xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">  title=<span style="color: #ff0000;">&quot;{data.title}&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span></span>
<span style="color: #000000;">    text=<span style="color: #ff0000;">&quot;{data.description}&quot;</span></span>
<span style="color: #000000;">    left=<span style="color: #ff0000;">&quot;20&quot;</span> right=<span style="color: #ff0000;">&quot;20&quot;</span> bottom=<span style="color: #ff0000;">&quot;20&quot;</span> top=<span style="color: #ff0000;">&quot;20&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:View</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>All view components provide a navigator object. We will use this in the change event handler of the article list. This event is fired when the user selects an article from the list. It looks as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> spark.<span style="color: #006600;">events</span>.<span style="color: #006600;">IndexChangeEvent</span>;
&nbsp;
protected <span style="color: #000000; font-weight: bold;">function</span> articleList_changeHandler<span style="color: #66cc66;">&#40;</span>event:IndexChangeEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
  navigator.<span style="color: #006600;">pushView</span><span style="color: #66cc66;">&#40;</span>DetailView, <span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#91;</span>event.<span style="color: #006600;">newIndex</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>It simply instructs the navigator to create a new DetailView and push it on top of of the navigation stack. Furthermore the selected item from the article list is passed on to the data property of the DetailView.</p>
<p>Add the change handler and assign it to the change event of the article list:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span></span>
<span style="color: #000000;">  dataProvider=<span style="color: #ff0000;">&quot;{data}&quot;</span></span>
<span style="color: #000000;">  labelField=<span style="color: #ff0000;">&quot;title&quot;</span></span>
<span style="color: #000000;">  change=<span style="color: #ff0000;">&quot;articleList_changeHandler(event)&quot;</span></span>
<span style="color: #000000;">  left=<span style="color: #ff0000;">&quot;0&quot;</span> top=<span style="color: #ff0000;">&quot;0&quot;</span> bottom=<span style="color: #ff0000;">&quot;0&quot;</span> right=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p><div id="attachment_1231" class="wp-caption alignright" style="width: 204px"><img src="http://lsd.luminis.eu/wp-content/uploads/2010/11/article-list-194x300.png" alt="Article list inside the emulator" title="Article list inside the emulator" width="194" height="300" class="size-medium wp-image-1231" /><p class="wp-caption-text">Article list inside the emulator</p></div>
<p>For performance optimization, AIR destroys the view when a user navigates away and recreates it when he returns. Only the contents of the data property is saved and passed into a recreated view of the same type. This is why we used it to store the articles. Otherwise the user has to wait for a reload when he returns to the main view.</p>
<p>When you launch the new version in the emulator, you will notice the application slides to the detail view when an article is selected. Click Back from the Device menu to simulate a click on the hardware back button.</p>
<h3>Last but not least: action buttons</h3>
<p>One thing our application is missing, is a button to go to the original webpage showing the full article. This button is placed inside the header of our detail view, next to the title.<br />
To achieve this, add the button inside the actionContent of the detail view. Give the button an icon (I used one from the <a href="http://tango.freedesktop.org/">Tango project</a>) and set the click handler to open the url of the article.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:actionContent</span><span style="color: #7400FF;">&gt;</span></span>
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span></span>
<span style="color: #000000;">    click=<span style="color: #ff0000;">&quot;{navigateToURL(new URLRequest(data.link))}&quot;</span></span>
<span style="color: #000000;">    icon=<span style="color: #ff0000;">&quot;@Embed('/assets/internet-web-browser.png')&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:actionContent</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Of course you might want an additional button to return to the article list instead of using the ‘hardware button’. Place this button inside the navigationContent. This will place the back button at the upper left corner. The click event of this button will invoke the navigation.popView() method to remove the current view from the stack and return to the previous one.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:navigationContent</span><span style="color: #7400FF;">&gt;</span></span>
  <span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span></span>
<span style="color: #000000;">    click=<span style="color: #ff0000;">&quot;navigator.popView()&quot;</span></span>
<span style="color: #000000;">    icon=<span style="color: #ff0000;">&quot;@Embed('/assets/go-previous.png')&quot;</span><span style="color: #7400FF;">/&gt;</span></span>		
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:navigationContent</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<div id="attachment_1237" class="wp-caption alignleft" style="width: 310px"><img src="http://lsd.luminis.eu/wp-content/uploads/2010/11/action-buttons-300x112.png" alt="Action and navigator buttons" title="Action and navigator buttons" width="300" height="112" class="size-medium wp-image-1237" /><p class="wp-caption-text">Action and navigator buttons</p></div>
<p>If you launch the application you will notice the buttons are nicely aligned at the top of the screen.</p>
<h3>What’s next?</h3>
<p>The next step will be to package the application to an apk file so you could install it on an Android device. This is done by the Export Release build wizard inside the Project menu of Flash Builder. It includes the ability to sign your application to allow distribution through the Android Market.</p>
<p>Another nice feature which I will not discuss in detail is to add gesture based navigation. Take a look at this <a href="http://www.adobe.com/devnet/flash/articles/multitouch_gestures.html">article from Adobe</a> to find out more. The approach discussed should be working for mobile AIR applications as well.</p>
<p>Unfortunately the most interesting benefit of using AIR for mobile didn’t become clear with this tutorial. It would be nice to deploy our application on other mobile plastforms as well. However the cross compiler for iOS isn’t available yet and the same goes for AIR on Windows Phone, BlackBerry or Symbian. We will just have to wait when Adobe is ready so we can fully benefit from the “Write once, run anywhere” promise.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/introduction-to-air-for-mobile/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PhoneGap, een alternatief voor native mobiele applicaties</title>
		<link>http://lsd.luminis.eu/phonegap/</link>
		<comments>http://lsd.luminis.eu/phonegap/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 06:55:32 +0000</pubDate>
		<dc:creator>Erik Sanders</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[Google Android]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=1005</guid>
		<description><![CDATA[PhoneGap, een alternatief voor native mobiele applicaties
PhoneGap is een interessante open source alternatief voor het schrijven van native applicaties voor elk (mobiel) platform dat er is. In het kort komt het erop neer dat PhoneGap zorgt dat je een HTML applicatie met javascript.  De specifiek API, zoals location, contact, e.d. worden afgeschermd door een standaard API [...]]]></description>
			<content:encoded><![CDATA[<h1>PhoneGap, een alternatief voor native mobiele applicaties</h1>
<p>PhoneGap is een interessante open source alternatief voor het schrijven van native applicaties voor elk (mobiel) platform dat er is. In het kort komt het erop neer dat PhoneGap zorgt dat je een HTML applicatie met javascript.  De specifiek API, zoals location, contact, e.d. worden afgeschermd door een standaard API van PhoneGap.</p>
<h3>iPhone</h3>
<p><span style="font-size: 13.3333px;">Voor de iPhone kan de HTML applicatie gewoon worden aangeboden via de appstore. Dit is dan ook direct de truc waardoor er voldoende rechten zijn om de hardware aan te spreken. Er zijn al vele applicatie geplaatst in de appstore (zie een selectie in<a href="http://www.phonegap.com/apps" target="_blank"> www.phonegap.com/apps</a>).  Er is tevens een <a href="http://phonegap.pbworks.com/Getting-Started-with-PhoneGap-(iPhone)" target="_blank">getting started</a> en er zijn  extra <a href="http://github.com/purplecabbage/PhoneGap-Plugins">plugins</a> beschikbaar</span></p>
<h3>Ondersteunde platformen</h3>
<p>Naast iPhone wordt zowel Android, Blackberry, Symbian, Palm, N900 en Windows Mobile. Ook Windows Mobile 7 is zodra dit uitkomt eenvoudig te ondersteunen en ze zullen ook geen blokkade opwerpen in het voordeel van silverlight. Interesante gedachte is natuurlijk ook de iets minder mobiele system met Linux, Windows MacOS hebben ook allemaal een browser.</p>
<table style="float:lefts" border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td></td>
<td>IPHONE</td>
<td>ANDROID</td>
<td>BLACKBERRY</td>
<td>SYMBIAN</td>
<td>PALM</td>
</tr>
<tr>
<td>GEO   LOCATION</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
</tr>
<tr>
<td>VIBRATION</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
</tr>
<tr>
<td>ACCELEROMETER</td>
<td>√</td>
<td>√</td>
<td>OS 4.7</td>
<td>√</td>
<td>√</td>
</tr>
<tr>
<td>SOUND</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
</tr>
<tr>
<td>CONTACT   SUPPORT</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>√</td>
<td>N/A</td>
</tr>
</tbody>
</table>
<p>Voor meer informatie zie <a href="http://www.phonegap.com" target="_blank">www.phonegap.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/phonegap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 Developer Hub</title>
		<link>http://lsd.luminis.eu/windows-phone-7-developer-hub/</link>
		<comments>http://lsd.luminis.eu/windows-phone-7-developer-hub/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 20:43:41 +0000</pubDate>
		<dc:creator>Erik Sanders</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[News Item]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=913</guid>
		<description><![CDATA[Ik heb vorige week de Windows Phone 7 Developer Hub bijgewoond met de verwachting in een keer een compleet overzicht te krijgen van de nieuwe Microsoft smartphone. Ik heb niet de intentie in deze blog alles even uit te leggen, dat kan Microsoft prima zelf. Ik wil hier alleen het beeld dat ik heb gekregen [...]]]></description>
			<content:encoded><![CDATA[<p>Ik heb vorige week de Windows Phone 7 Developer Hub bijgewoond met de verwachting in een keer een compleet overzicht te krijgen van de nieuwe Microsoft smartphone. Ik heb niet de intentie in deze blog alles even uit te leggen, dat kan Microsoft prima zelf. Ik wil hier alleen het beeld dat ik heb gekregen schetsen vanuit het perspectief van de gebruiker, ontwikkelaar en business.</p>
<h2>Gebruiker</h2>
<p>Ik heb de telefoon niet zelf bedient maar heb toch een redelijke indruk gekregen. Zelf ben ik een iPhone gebruiker en zie wel wat verbeteringen en interessante ontwikkelingen</p>
<ul>
<li>Het gebruik is opgezet rond hubs. Er is bijvoorbeeld een social hub, op deze hub komt alle sociale media bij elkaar en bieden ze mogelijkheden tot integratie. Er zijn dus geen aparte ingangen meer voor linked-in, contacts, facebook e.d. maar alle informatie wordt gebundeld weergegeven.</li>
<li>Drie verplichte toetsen op de telefoon waarbij naast de enige toets op de iPhone om applicaties te starten er ook een<strong> zoek<span style="font-weight: normal;"> toets</span> </strong>is die de standaard zoek functionaliteit heeft maar ook kan worden gebruikt voor zoeken binnen de applicatie. Daarnaast is er de <strong>back </strong>toets hiermee kan je terug naar de applicatie die een andere heeft aangeroepen. Een typisch voorbeeld waar ik mij vaak aan heb geërgerd is: Je leest je mail daar staat een link in die je opent en vervolgens zit je in safari. De enige manier om die te verlaten is stoppen en je mail opnieuw opstarten.</li>
<li>Het metro concept van de user interface (Kort samengevat: beperkt grafisch en meer tekst) aangevuld met een panorama view en pivot view is wel een verfrissende aanpak waarbij je direct informatie ziet die je nodig hebt en niet alleen een menu.</li>
</ul>
<h2>Ontwikkelaar</h2>
<p>Voor een .Net ontwikkelaar is er eigenlijk niets nieuws. Je kunt namelijk gewoon ontwikkelen met je opgedane kennis in XAML (WPF en Silverlight) in je vertrouwde ontwikkelomgeving. Ik wil echter wel een aantal punten benadrukken</p>
<ul>
<li><span style="font-size: 13.3333px;">Een virtuele machine met de phone OS op de ontwikkel PC dus g</span>een emulator of simulator dus betere test omgeving</li>
<li>Naast API&#8217;s die telefoonfunctionaliteit geven zijn er ook API&#8217;s voor bijbehorende services in de cloud</li>
<li>Er is een gratis omgeving bestaande uit visual studio express voor ontwikkelaars en Blend express voor designers</li>
</ul>
<p>Het lijkt mij een eitje om de look en feel van de quote eetgids (een iphone app gemaakt door luminis) te bouwen voor W7</p>
<h2>Business</h2>
<ul>
<li>Beperkt aantal modellen en veel verplichte onderdelen zoals een grafische processor en sensoren als GPS e.d. Dit maakt de herkenbaarheid groter</li>
<li>Geen exclusieve contracten met KPN&#8217;s en de TMobile&#8217;s</li>
<li>Vergelijkbare appstore als Apple waarin een applicatie gegarandeerd binnen dagen wordt geplaatst.</li>
<li>Office applicaties en zelf een sharepoint front-end</li>
</ul>
<h2>Het evenement</h2>
<p>Het evenement zelf was wat mij betreft teleurstellend. Op een developer event verwacht ik concrete presentaties met duidelijke concepten en voorbeelden. Helaas bleven de presentaties erg oppervlakkig ook al aangemoedigd door de vele bizarre vragen die gesteld werden. Wat mij wel duidelijk is geworden dat Microsoft serieus hun best doet om weer aansluiting te vinden of zoals ze zelf beweren een voorsprong te nemen maar dat ze nog  heel goed hun best moeten doen om alles in de winkels te krijgen voor de kerst.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/windows-phone-7-developer-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online video presentatie: Android &amp; Augmented Reality</title>
		<link>http://lsd.luminis.eu/online-video-presentatie-android-augmented-reality/</link>
		<comments>http://lsd.luminis.eu/online-video-presentatie-android-augmented-reality/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 14:16:38 +0000</pubDate>
		<dc:creator>Richard van der Laan</dc:creator>
				<category><![CDATA[mobility]]></category>
		<category><![CDATA[acrossair]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[EZDroid]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Android]]></category>
		<category><![CDATA[layar]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nljug]]></category>
		<category><![CDATA[robotvision]]></category>
		<category><![CDATA[wikitude]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=665</guid>
		<description><![CDATA[Op 11 november 2009 gaf Arjan Schaaf op de NLJUG een presentatie over Android en Augmented Reality. De video van deze presentatie is inmiddels online beschikbaar.]]></description>
			<content:encoded><![CDATA[<p>Op 11 november 2009 gaf Arjan Schaaf op de NLJUG een presentatie over Android en Augmented Reality. De video van deze presentatie is inmiddels online beschikbaar. De gehele presentatie van 50 minuten kan je <a href="http://lsd.luminis.nl/wp-content/uploads/videos/Android%20and%20Augmented%20Reality.mp4">hier (175mb)</a> downloaden. Maar de eerste tien minuten zijn hieronder gelijk op YouTube te bekijken.</p>
<p>English: The whole presentation can be downloaded <a href="http://lsd.luminis.nl/wp-content/uploads/videos/Android%20and%20Augmented%20Reality.mp4">here (175mb)</a>.</p>
<p><a href="http://www.youtube.com/watch?v=tmGZHV-DFYM&#038;fmt=18">http://www.youtube.com/watch?v=tmGZHV-DFYM</a></p>
<p>Augmented Reality op mobiele devices heeft een enorme vlucht genomen met de introductie van Google Android. Android biedt out-of-the-box de componenten om met augmented reality aan de slag te gaan. In deze sessie staan we stil bij de frameworks die beschikbaar zijn om augemented reality applicaties / content te deployen op Android. Aan de hand van een voorbeeld applicatie gaan we in op de mogelijkheden om zelf een augmented reality applicatie te ontwikkelen met de faciliteiten die door Android worden geboden. Praktische uitdagingen waarmee wij zijn geconfronteerd worden gedeeld en geven inzicht in de mogelijkheden en onmogelijkheden van het Android platform. Opbouw van de presentatie:</p>
<ul>
<li>Introductie over augmented reality: location based vs beeldherkenning;</li>
<li>Wat is te krijgen in de markt? Layar, Wikitude, etc;</li>
<li>Wat zijn de mogelijkheden om applicaties te ontwikkelen met de beschikbare frameworks;</li>
<li>Hoe ontwikkel je zelf een augmented reality applicatie op Android?</li>
</ul>
<p>De slides van de presentatie zijn te vinden op de <a href="http://www.nljug.org/pages/events/content/jfall_2009/sessions/00030/">NLJUG website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/online-video-presentatie-android-augmented-reality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building iPhone applications using MonoTouch, part 3 :  The Interface Builder</title>
		<link>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-part-3-the-interface-builder/</link>
		<comments>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-part-3-the-interface-builder/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 20:33:59 +0000</pubDate>
		<dc:creator>Richard de Zwart</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monotouch]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=391</guid>
		<description><![CDATA[Part 3, about the Interface Builder and how to hook up your GUI to your code.]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s about time I tell something about the Interface Builder. As I mentioned in <a href="http://lsd.luminis.nl/building-iphone-applications-using-monotouch-2/">my previous post</a>, I fled from the Interface Builder at first. I&#8217;m not a designer, so interfaces are hard for me anyway. But I built some in WinForms and in ASP.NET and I got used to the simple system of putting buttons and fields on forms and then hooking them up with the business-logic with things like click-events.</p>
<p>Interface Builder is different. I think the idea is that you use it for nothing else than your GUI. There is no way to put any code anywhere. All handling of UI-events is done in delegates and the trick is to learn how to link your GUI to your code.</p>
<p>I hope you will have a better insight in how to do this, after this post. I learned the most from one of the videos on <a href="http://monotouch.info" target="_blank">MonoTouch.Info</a>, by <a href="http://www.codesnack.com/storage/screencasts/uitabbarcontroller/part2/index.html" target="_blank">Code Snack</a>. I literally played it frame by frame, carefully watching what he did and what could be learned from the code on the background. Highly recommended.</p>
<p>So, let us build an interface with a tab-bar-controller. You might know this type of application from the default iPhone clock.</p>
<p>Start a new application in MonoDevelop, an &#8220;iPhone MonoTouch Project&#8221;. Double-click the MainWindow.xib and Interface Builder will start.<br />
The empty window you get is important because it is the window that is referenced from AppDelegate. You will add all your own stuff to it as subwindows. But for now you can ignore it.</p>
<p>Make sure the Library Window is open (Tools / Library) and selected like this:<img class="alignright size-medium wp-image-395" title="Library Window" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-24-at-11.11.13-PM-124x300.png" alt="Library Window" width="124" height="300" /></p>
<p>Now drag a Tab Bar Controller and drop it on the MainWindow (that looks a bit like a solution explorer) just below &#8220;Window&#8221;. The MainWindow will look like this:<br />
<img class="alignleft size-medium wp-image-396" title="Main Window" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-24-at-11.22.55-PM-300x250.png" alt="Main Window" width="150" height="125" /> And you get a new window looking like this:<br />
<img class="aligncenter size-medium wp-image-397" title="Tab Bar Controller" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-24-at-11.27.53-PM-191x300.png" alt="Tab Bar Controller" width="191" height="300" /></p>
<p>It is not to hard to change some of the settings of the tab bar. Open Tools/Inspector, select the Attributes tab, make sure you have the right part active in the Tab Bar Window and change the Identifier Pull-down to &#8220;Search&#8221;. You will get a default Search Tab, including the search image.</p>
<p><img class="alignleft size-full wp-image-400" style="margin-left: 5px; margin-right: 5px;" title="Search Tab" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-24-at-11.41.03-PM.png" alt="Search Tab" width="170" height="49" />Make the first tab a Search tab and the second a History tab. Now save the project and check the MainWindow.xib.designer.cs. Nothing interesting, except for a mapping to the window called &#8220;Window&#8221;. If you run your application now, nothing interesting.</p>
<p>That is because we have to add our new view as sub-views to the main window. In code like this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> FinishedLaunching <span style="color: #000000;">&#40;</span>UIApplication app, NSDictionary options<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #008080; font-style: italic;">// If you have defined a view, add it here:</span>
	window.<span style="color: #0000FF;">AddSubview</span> <span style="color: #000000;">&#40;</span>tabBar.<span style="color: #0000FF;">View</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
	window.<span style="color: #0000FF;">MakeKeyAndVisible</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
	<span style="color: #0600FF;">return</span> true<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>But we have no variable named &#8220;tabBar&#8221;. Well, now we&#8217;re coming to the very important part where we hook up our GUI to our code. Interface Builder does that with something they call &#8220;outlets&#8221;. And defining them is one of the weirdest experiences in your live as a programmer.</p>
<p>Ok, since I want to have a reference in my AppDelegate to the Tab Bar Controller, I go back to Inteface Builder, to the Library Window and select the Classes button. All the way on the top, there is a AppDelegate. Select it. Then look on the bottom of the window. Select the Outlets button. Now you see that the AppDelegate has an outlet called &#8220;window&#8221; which is mapped in the designer file in MonoDevelop to a property of type UIWindow with the name &#8220;window&#8221;. That is how the code above can reference a &#8220;window&#8221; object. We need to add an outlet by clicking the + button. Give it a name like &#8220;tabBar&#8221;. The change the type to UITabBarController.</p>
<p>Now we have a definition of an outlet. But it is not linked to any UI-element yet. So go to the MainWindow and select the AppDelegate there. Now go to the Inspector Window and select the Connections tab. You will see that the connection from the tabBar outlet is still open:<br />
<img class="alignleft size-full wp-image-401" style="margin-left: 5px; margin-right: 5px;" title="Defined Outlets" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-25-at-12.23.36-AM.png" alt="Defined Outlets" width="289" height="152" />Now comes the magic. You drag the open circle to the Tab Bar Controller window. While getting there you will notice that only windows that are of the right type (UITabBarController) will be an acceptable drop-target. Now drop it, save it and go to MonoDevelop. In the designer file you will see that a new mapping is made. If you change the code in your main.cs to reflect the code above and run your application, you will have your tab bars!</p>
<p>Ok, so far for this post. Next post I will add a search-bar to the search window on the search tab and try to hook them all up to each other and to the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-part-3-the-interface-builder/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Building iPhone applications with MonoTouch, part 2 : The AppDelegate</title>
		<link>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-2/</link>
		<comments>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-2/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:41:22 +0000</pubDate>
		<dc:creator>Richard de Zwart</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monotouch]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=376</guid>
		<description><![CDATA[Part 2 of  a series. About Twitter, the loading process and the AppDelegate]]></description>
			<content:encoded><![CDATA[<p>This is part 2 of a series. In the <a href="http://lsd.luminis.nl/building-iphone-applications-using-monotouch-1/" target="_self">first post</a> I said something about the application structure.</p>
<h3>A word about Twitter</h3>
<p>I&#8217;m going to digress a little before telling you more about iPhone application structure. It is not essential for this series, but it is essential to completely describe the adventure that this first application brought on me.</p>
<p>When I found out about the <a href="http://www.monotouch.net" target="_blank">MonoTouch</a> project, it was in Beta and you had to apply to be admitted. I filled in the form (from my iPhone, just to impress them) and then waited. Nothing for a couple of days. I applied again, just to make sure you know. Nothing. Now I&#8217;m a modern guy, so <a href="http://twitter.com/mountain1965" target="_blank">I tweet</a>. I tweeted my frustration (in Dutch), since I really wanted to get started. But hey, what where the 3 followers I have gonna do about that? Then it turned out that this guy <a href="https://twitter.com/JosephHill" target="_blank">Joseph Hill</a>, somehow monitors all tweets in the world for the MonoTouch keyword. Joseph is one of the people in the MonoTouch project that is really a Person. He pulled some strings and presto! I got my Beta-account.</p>
<p>For me, that&#8217;s just amazing. I didn&#8217;t think that Twitter would give me much more than just the latest tips from Scott Guthrie, but this is a totally new way to bring people together and build communities.</p>
<h3>The AppDelegate</h3>
<p>When you create a new iPhone solution in MonoDevelop, you get a couple of things:</p>
<div id="attachment_380" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-380" title="Screen shot 2009-10-20 at 8.49.38 PM" src="http://lsd.luminis.nl/wp-content/uploads/2009/10/Screen-shot-2009-10-20-at-8.49.38-PM-300x225.png" alt="New Solution" width="300" height="225" /><p class="wp-caption-text">New Solution</p></div>
<ol>
<li>A xib file called MainWindow.xib. This is where your user-interface is defined. It is an XML file that can be used by the Interface Builder. Simply double-click it and the Interface Builder opens up. More about the Interface Builder later. MonoDevelop monitors the file and regenerates the accompanying designer file when the XIB is changed by Interface Builder. The designer file maps the elements from the user-interface to the classes in your project.</li>
<li>A main.cs that contains the entry-point to your code. There is  a partial class called AppDelegate that is mapped to the main window of your UI. The most important method there is &#8220;FinishedLaunching&#8221;. It gets called when the iPhone is done with all the stuff it does when loading an application. The name is a bit misleading. Your application is definitely not done launching, at best it is done loading. All the stuff that you need to do yourself still has to happen. Like loading some files, initializing your controllers, setting-up your model classes.</li>
</ol>
<h3>Loading your application</h3>
<p>There&#8217;s more to say about the loading process. Since it takes some time before you even get control about what happens, you have the option to show an image while loading. Add a file to your project with the name &#8220;Default.png&#8221; and set it&#8217;s properties to &#8220;Build Action &#8211; Content&#8221; and it will be picked up by the loader. Your supposed (according to the designer guidelines) to use an image of your app in action, but it is often abused to show a company logo or something. Some applications make a screen-shot of themselves when the application closes and save that as Default.png. That way, the next time you start your app it looks like it quickly continues where it left off.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// The name AppDelegate is referenced in the MainWindow.xib file.</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">partial</span> <span style="color: #FF0000;">class</span> AppDelegate <span style="color: #008000;">:</span> UIApplicationDelegate
<span style="color: #000000;">&#123;</span>
	<span style="color: #008080; font-style: italic;">// This method is invoked when the application has loaded its UI and its ready to run</span>
	<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> FinishedLaunching <span style="color: #000000;">&#40;</span>UIApplication app, NSDictionary options<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Launched&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
		window.<span style="color: #0000FF;">AddSubview</span><span style="color: #000000;">&#40;</span>yourViewHere<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		window.<span style="color: #0000FF;">MakeKeyAndVisible</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF;">return</span> true<span style="color: #008000;">;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">// This method is required in iPhoneOS 3.0</span>
	<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> OnActivated <span style="color: #000000;">&#40;</span>UIApplication application<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>You should not be doing too much work in this method. The loader times the duration of this method and kills your application when it takes more than 10 seconds. Or so they say, I never tried it out.</p>
<p>You can use this method to build up your user-interface in code. I went that way first. I had such a hard time getting my head around the Interface Builder that I decided to drop it and build my interface by hand. That worked reasonably but caused unexpected crashes. I knew it had something to do with the way I hooked up the different views, so I went back to Interface Builder and tried and tried and tried. I got it, more or less, and my interface (using a tab-bar) is now stable. In the next episode I will dive into the Interface Builder.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building iPhone applications using MonoTouch, part 1 : Application Structure</title>
		<link>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-1/</link>
		<comments>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-1/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 20:25:37 +0000</pubDate>
		<dc:creator>Richard de Zwart</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[monotouch]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=365</guid>
		<description><![CDATA[This is the first in a series of posts on developing iPhone applications with .NET]]></description>
			<content:encoded><![CDATA[<p>I finished my first iPhone app this weekend. it is not a very impressing application, but it does what I meant it to do and that is to show movies with Dutch Sign Language coming from the website of the Dutch <a href="http://www.gebarencentrum.nl" target="_blank">Gebarencentrum</a>.</p>
<p>Developing for the iPhone is exciting. Well, let me re-phrase that: the result of your development for the iPhone is exciting. Mmmmh, let me re-phrase that again: it was a helluva job to build a working iPhone app, and now that I know how to do it I&#8217;m excited!</p>
<p>This post is the first of a couple of post I&#8217;m planning to do on development of iPhone applications with .NET. There&#8217;s simply too much to learn and to tell to do it all in one post. These posts will not only be about programming C#, but also about design principles, open-source programs, Twitter.</p>
<h3>Where do you start?</h3>
<p>As a .NET developer you have two choices to program for the iPhone:</p>
<ol>
<li>You learn the Objective-C programming language and the XCode development environment</li>
<li>You use MonoTouch and MonoDevelop</li>
</ol>
<p>I started out with the first option, since the second was not available at that time. I found it really hard. Using a c-like syntax is not the hardest thing, but I surely wasn&#8217;t used to manage my own memory any more! I got really frustrated since I also had to learn all the other things I&#8217;ll talk about in a minute.</p>
<p>The solution came in a podcast from <a href="http://www.dotnetrocks.com/" target="_blank">DotNetRocks</a> titled <a href="http://www.dotnetrocks.com/default.aspx?showNum=454" target="_blank">&#8220;Rory does iPhone&#8221;</a> in which Rory Blyth raved against Objective-C. In that podcast there was a short mention of an open-source initiative called MonoTouch.</p>
<h3>Mono</h3>
<p>That changed my world radically. I went out looking for the Mono guys and found a very mature platform and active community. if you don&#8217;t know: <a href="http://mono-project.com/Main_Page" target="_blank">Mono</a> is an open-source initiative that brings the .NET framework to a lot of other platforms, especially the Unix-look-a-likes.<br />
I had heard about Mono before, but always thought it was a project that was way behind the development of the .NET framework. You know, like Microsoft is releasing .NET 4.0 and the Mono guys are proud to announce they now support 2.0! Nothing like that! Mono is on .NET 3.5 and preparing for the changes that 4.0 will bring. They also have a very nice IDE called <a href="http://monodevelop.com/" target="_blank">MonoDevelop</a> that looks a lot like Visual Studio.</p>
<p>With MonoDevelop developing applications on the Mac is so straightforward that I never go back to my VMWare installation with XP and VS2008 to do some quick development. If you think about porting your application (since not all that is available on Windows is there on Linux too), install their <a href="http://www.go-mono.com/monovs/Moma.aspx" target="_blank">Mono Migration Analyzer</a> add-in.</p>
<p>And they have <a href="http://www.monotouch.net" target="_blank">MonoTouch</a>. On the surface it is just a wrapper around the <a href="http://developer.apple.com/technology/cocoa.html" target="_blank">CocaoTouch</a> library that you use to program UI&#8217;s on the iPhone.</p>
<p>But is is also a very special compiler that pre-JITs (the call it Ahead Of Time compilation) the entire application. Why? The iPhone OS will not allow you to run a virtual machine. Ever wondered why there is no Java or Flash on the iPhone? They cannot run since they depend on their own VM.<br />
MonoTouch circumvents this problem by generating native code, removing all the unused libraries, classes and methods and then building a Mac App package from that.</p>
<h3>What do I have to learn?</h3>
<p>When you want to build your own application, you will at least have to learn about:</p>
<ol>
<li>The structure of iPhone apps</li>
<li>The Cocao Touch library</li>
<li>The Interface Builder</li>
<li>Debugging in XCode</li>
<li>Signing your application</li>
<li>How to distribute your application</li>
</ol>
<p>I will try to tell you about all of these subjects in different installments.</p>
<h3>The structure of an iPhone app</h3>
<p>It is essential to know what the iPhone expects from you and how the Cocao Touch library supports that. It is probably  way different from the way you worked in C# and WinForms, and it takes some time to get used to finding out where to put your application logic.</p>
<p>The Cocao Touch library is full of Design Patterns, but the most pervasive, noticable, visible and wonderful is The Model View Controller. Below is an image from the <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html#//apple_ref/doc/uid/TP40002974-CH6-SW6" target="_blank">Mac Development Library</a>:</p>
<div class="wp-caption alignleft" style="width: 524px"><img title="MVC" src="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/Art/cocoa_mvc.gif" alt="MVC" width="514" height="186" /><p class="wp-caption-text">MVC</p></div>
<p>This post is not about Design Patterns, so I will not explain how the MVC pattern is supposed to work. The image is just their to help me explain which classes you will have to inherit from.</p>
<p>Cocao development is about inheriting from the classes that wire up the application for you. That means that you only have to override the methods that are of interest to you, but it also means that you essentially have no way to stray from this setup. You use the Cocao classes or you end up building your own library.</p>
<p>These are the classes that implement the MVC pattern for the often-used TableView:</p>
<ol>
<li>UITableView</li>
<li>UITableViewDataSource</li>
<li>UITableViewDelegate</li>
<li>UITableViewController</li>
</ol>
<p>The UITableView is in the NIB: the file that is generated for you by the Interface Builder and that holds all the GUI elements.</p>
<p>The UITableViewDataSource holds the data that is displayed in the table. It&#8217;s methods are called by the Controller to fill the cells in the table (e.g. GetCell, RowsInSection).</p>
<p>The UITableViewDelegate implements methods for dealing with user-actions that are performed on the view, like &#8220;RowSelected&#8221; when (yep) a row in the table is selected.</p>
<p>The UITableViewController is the man-in-the-middle. It sits between the DataSource and the TableView, and does things like passing the DataSource filtered data when some search criterion is entered and then telling the TableView to reload with this new data. The controller can use your own model to get this filtered data.</p>
<p>So far for this installment. Next time I will show some code and tell about the AppDelegate, the object that functions as the heart of your application since it receives a lot of interesting messages like &#8220;Hey you&#8217;re app is started!&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/building-iphone-applications-using-monotouch-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Nieuwe iPhone applicatie gelanceerd: Quote eetgids</title>
		<link>http://lsd.luminis.eu/nieuwe-iphone-applicatie-gelanceerd-quote-eetgids/</link>
		<comments>http://lsd.luminis.eu/nieuwe-iphone-applicatie-gelanceerd-quote-eetgids/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 07:03:12 +0000</pubDate>
		<dc:creator>Arjan Schaaf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[eetgids]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[luminis]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[quote]]></category>
		<category><![CDATA[quotenet]]></category>

		<guid isPermaLink="false">http://lsd.luminis.net/?p=284</guid>
		<description><![CDATA[luminis software development en luminis live hebben een nieuwe iPhone applicatie gelanceerd: de quote eetgids.]]></description>
			<content:encoded><![CDATA[<p>Op 1 oktober was het zover, de <a href="http://www.quotenet.nl">Quote</a> eetgids staat in de Apple Appstore! Met de Quote eetgids kan je op eenvoudige wijze restaurants in de buurt vinden en beoordelen. Dit op basis van je huidige lokatie die met behulp van GPS wordt vastgesteld. Heb je andere voorkeuren? Alleen met gelegenheden met michelinster? Of na een heerlijke dag varen, aanleggen bij de steiger met zicht op je blinkende jacht van een voortreffelijk menu genieten? Check de Quote eetgids!</p>
<table border="0">
<tbody>
<tr>
<td><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=331587849&#038;mt=8"><img src="http://lsd.luminis.net/wp-content/uploads/2009/10/app-store-badge-300x98.png" alt="installeer de Quote eetgids" title="installeer de Quote eetgids" width="300" height="98" class="size-medium wp-image-285" /></td>
<td>Ontwerp: <a href="http://www.luminislive.nl">luminis live</a><br />
Technische<br />
realisatie: <a href="http://lsd.luminis.nl">luminis software development</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/nieuwe-iphone-applicatie-gelanceerd-quote-eetgids/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EZdroid launched</title>
		<link>http://lsd.luminis.eu/ezdroid-launched/</link>
		<comments>http://lsd.luminis.eu/ezdroid-launched/#comments</comments>
		<pubDate>Fri, 29 May 2009 09:25:43 +0000</pubDate>
		<dc:creator>Arjan Schaaf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apache ACE]]></category>
		<category><![CDATA[Apache Felix]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[EZDroid]]></category>
		<category><![CDATA[Google Android]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[provisioning]]></category>

		<guid isPermaLink="false">http://lsd.luminis.net/?p=198</guid>
		<description><![CDATA[<p><img class="nieuws_post_image" src="http://blog.luminis.nl/roller/luminis/resource/arjan/EZdroid.png"/></p>
<p>The EZdroid initiative is launched: http://www.ezdroid.com
EZdroid is a platform where developers of component-based software for provisioning the Android platform collaborate and initiate business ideas.</p>
]]></description>
			<content:encoded><![CDATA[<p>
<img ALIGN=MIDDLE src="http://blog.luminis.nl/roller/luminis/resource/arjan/EZdroid_small.png"/><br />
The EZdroid initiative is launched: <a href="http://www.ezdroid.com/">www.ezdroid.com</a>
</p>
<p>
We are pleased to announce the launch of EZdroid, the world’s first open-source, collaborative platform for the safe deployment of component-based software applications and content across Android, and other Linux-based mobile devices.<br />
EZdroid was founded by two of Europe’s leading companies in the field of OSS technology; the platform consists of Android, Apache Felix and a number of their own enhancements (e.g. software license-, device- and integrated software-management). EZdroid supports the secure deployment of software applications and content (known as Provisioning) to Android phones and in the future, other Linux-based operating systems. It is available to any organization or individual wishing to make software and content available to Android users world-wide. Further information and a demonstration of the platform is now available and downloadable to Android phones at: http://www.ezdroid.com.
</p>
<p>
EZdroid’s founders: Luminis BV (www.luminis.nl/en) of The Netherlands and Akquinet GmbH (www.akquinet.com/en) of Germany are now inviting partners and collaborators to become part of the EZdroid community – whether these are developers, wishing to show-case their applications, business partners interested in co-development or an OEM relationship, or organizations which are interested in owning and controlling their own application repository/App Store.
</p>
<p>
The launch of EZdroid is very significant; it is the world’s first platform, built from open source components, which will allow the mass deployment of applications without proprietary licensing issues. The founders intend to supplement the platform with a validation and quality assurance system – to ensure that applications are safe and do not interfere with Android’s normal operations.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/ezdroid-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

