Vodafone 360 AppStar UK Developer Day

Vodafone 360 LiMo Samsung H1Recently a couple of us (Steve and I) attended the Vodafone AppStar UK Developer day.  It was a day of presentations, coding and free food + beers.  It was attended by 30 or so people, with around 10 of them being from Vodafone itself.

It started off with a few of the Vodafone folks presenting infromation about their Vodafone 360 platform and the new phones available on it.

The platform allows development, deployment and running of widgets on your 360-powered phone.  Although, if you are a consumer rather than a developer, then they are called apps rather than widgets.  These widgets tend to do things like give you the current news or weather, for example.

The good news, from a developers point of view, is that the widgets are an open standard driven mainly by Opera.  Widgets consist of a config.xml (which describes the meta data of the widget) and the content.  The content is your typical .html, .js and .css files that is the cornerstone of web development.  Which makes sense since that would allow developers to start working with a minimal learning curve.

After the presentations, the phones were distributed; the the LiMo-based Samsung H1 with the Vodafone 360 platform. It seemed like your everyday standard smartphone except the resolution on it was extremely high (800x480 265 PPI).

The first tool we were presented with was the Eclipse based development environment, which can be downloaded from the JIL website.  Apparently, this tool was meant to be able to work with Mac OS X, instructions were provided but no download.  There was also mention of an eclipse plugin pack but that wasn't able to be found either.  After quite a while of faffing, we decided to concentrate on the Windows version, which worked well.  We created a simple "hello world" application in no time.  But when we tried to run it in the emulator but after 10 minutes all we got was a black screen.  The problem turned out to be that we weren't leaving it running long enough, and after about 15 minutes it finally showed signs of life as what seemed to be the Android widget emulator appeared.  It took yet another 5 minutes to get my widget up.  This thing is slooooooooow!

JIL Eclipse

JIL Emulator

Obvisouly, this is a bit unworkable, and not everyone likes Eclipse for their web development so Vodafone has come up with another solution.  They have released a WidgetPackager, which runs on MacOS, Windows and Linux.  It isn't a development tool, but merely packages up your files so you can use your favourite editor.  It can also be used to generate the initial widget files based on some templates provided.  The backend, seems to be powered by a bunch of Apache Ant scripts, so adding new functionality seems pretty straightforward.

Widget Packager

So, we now have our "hello world" package built and want to deploy it to our device.  We copied it over to the device, but the thing wouldn't install.  Silly us - we forgot to input the secret code which lets you install files (it pays to read the docs sometimes).  The code is "*#35767#". Once we entered the code into the phone's dialer keypad and selected the relevant install option, we were ready to try again.  We could now launch our transferred file to install it and our "hello world" widget was up and running.

Another major issue we had was that the Samsung PC Studio tool that we were using it to transfer files over.  It seemed to be corrupting the package and it wouldn't install on the phone.  One other minor issue is that they gave us printouts of the xml schema, but it turned out that it was an old xml scheme, which is now out of date.  The example on the printouts showed the xml file as UTF-8 encoding, but the packager app created xml files that were ANSI encoded.  If you tried changing the encoding of the file to UTF-8 the packager app failed to read the file.  This will need to be fixed if they hope to reach a truly international market. 

Live Talkback vf360 widgetPart of the day was to submit an app/widget for judging by the end play, with the best widget winning a netbook.  Well, we had a think and we thought we would submit one that used one of our client's services, which we helped him develop, Live Talkback.  So, we contacted him and lucky us, he had a bunch of javascript libraries and assets already made.  We just had to tweak it, package it up and deploy it.  There were some additional points of integration we could have done like location-based services but we didn't get time due to the PC Studio issue described above.

In the first vote, our app came joint first with an E-Cards application. To break the deadlock, it came down to a clap-o-meter shoot-out but, alas, we didn't get enough cheers :(

Example

Here is an example of a Hello World widget. First the config.xml which describes it:

<widget id="helloworld" dockable="no" floatable="no">
  <widgetname>HelloWorld</widgetname>
  <width>320</width>
  <height>240</height>
</widget>

Now the index.html

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>HelloWorld</title>
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
  </head>
  <body>
    <div>Hello World</div>
    <script type="text/javascript" charset="utf-8" src="js/script.js"></script>
  </body>
</html>

The js and css files weren't changed and so aren't listed. But, here is the build.xml that the packager uses:

<?xml version="1.0"?>
<!-- This is an ANT build file -->
<project name="HelloWorld" default="dist" basedir=".">
  
  <description>
  Builds the PROJECT_NAME widget
  </description>

  <property name="dist" location="dist"/>
  <property name="src" location="src"/>

  <target name="clean">
    <delete dir="${dist}"/>
  </target>

  <target name="dist">
    <mkdir dir="${dist}"/>
    <zip zipfile="${dist}/${ant.project.name}.wgt">
      <fileset dir="${src}">
        <include name="**/*"/>
      </fileset>
    </zip>
  </target>
 
  <target name="deploy" depends="dist">
    <!-- this task is executed when autodeploy in Widget Packager is checked on this project -->
    <!-- here you can define your favorite deployment method.-->
    <!-- this example will run opera with the fresh built widget (keep in mind, that on windows you have to change opera to c:/program files/opera/opera.exe in order to run:
    <taskdef classpath="${widgetPackagerDir}/components/customtasks.jar" name="runprocess" classname="vf.customtasks.RunProcess"/>
    <runprocess command="opera" arg="${dist}\${ant.project.name}.wgt"/>
    -->
    
    <!-- this task redeploys the widget to a phone using obex (bluetooth). For this task to work you must deploy one widget to a phone. The task allways uses the last successfully used phone -->
    <taskdef classpath="${widgetPackagerDir}/components/obex.jar" name="redeploy" classname="vf.bluetooth.ReDeployObexTask"/>
    <redeploy fileName="${dist}\${ant.project.name}.wgt"/>
  </target>

</project>

You can add new tasks in here and can access them from the packager application.

If you found this interesting and useful, here is a page that gives a more in-depth example and more information.

In summary, I applaud the openness and standards used in the Vodafone 360 platform, the phones are good but still need a bit of polish as they feel a bit beta.  The development tools need the most work of all, but if you know what you are doing you can work around it.

Related tags: 360, limo, vf360, vodafone, widgets

Comments are closed.

Comments have been closed for this post.



Copyright © 2009-2011 Oppian Systems Ltd. All rights reserved.

Design by jonwallacedesign.com