• Issues with OTA Update for Google Nexus One (2.2 Froyo)

    Yesterday I finally got the very anticipated Android 2.2 (Froyo) on my Google Nexus One. I got the update OTA (Over the Air). This is a great feature because you don’t need to download anything by yourself or use your PC to do the update.

    However it was not without problems, so here I am sharing my experience and how I solved my issues.

    Accepting the update

    Yep, it’s that simple. I just needed to accept the update on a system pop-up and was good to go. I got a warning that the phone would restart a couple of times and that’s it.

    Waiting for the phone to boot up again

    This was where I got my problem. The phone just got stuck in the boot animation (the “X” animation). It was like this a whole morning, and just kept there. Once in a while, the animation restarted and that was it. The phone was apparently bricked.

    ”Clear Storage” to the rescue

    I thought that maybe something went wrong with some application I had, and as such, I did a quick search to discover how we could do a factory reset without the need of booting up the phone (cause I was unable to do it…)

    I discovered this useful guide, and that was it!

    After the clear storage operation, the phone was up and running again. My applications and settings went away, but at least the phone is ok.

    Why did it happen?

    Later that day, I came across this post from Tim O’Reilly.

    There I came to know that the update process saves all the user information on the cloud and then restores it back from the cloud again.

    Because I started the update and went to work, I got off WiFi and stayed on 3G connectivity only. This was why the update process was so slow and the system remained in the “X” animation forever.


    Maybe google should add some information about this… It would certainly save some people these kind of trouble…

  • Trackie – Making of (Part 2 of 2)

    This post is from a series of posts about a widget developed for the Vodafone 360 platform. Click here for the previous post.



    From the start, we had a list of features we would like to have in the widget. We wanted a full featured application, and for that matter, we had some high requirements which we think need to be present in such an application in order for it to become useful. Some of them were relatively simple to implement, while others simply could not be implemented without the help of the Server side services.


    Save tracks

    Ok, this is a relatively simple one. We could even use the local storage of the device (via Widget.preferenceForKey), for a limited amount of data. However, since we don’t want to impose any limits to our users, we implemented this feature on the server side. This means that we need to upload the track points to the server. This proved to be a needed effort to support other features.

    saved activities


    Save or export GPX / KML files

    This is a tricky one. Since we don’t have any file system access from within the widget, we needed to be creative here.

    Taking advantage of the fact that we have all the points stored in the server, we can then generate a KML/GPX file on the fly, when a user requests it. This is then a “simple” link to a server component with the arguments identifying the correct track. When we request the link to be opened in the browser, we will trigger the download of the generated file. The user can then import this file in Google Earth and browse the track in his/her personal computer.


    Show GPS Status

    This is a simple one. Sometimes, I just want to check my heading, speed or coordinates. This feature will get GPS information, perform the required calculations and present them in the screen in a clean way.



    Display maps of the saved activities

    One thing that I was certain that we needed to have in an application like this is the ability to browse the map with the saved track overlayed on it. This is great because we can show the tracks to our friends anywhere and at anytime.

    This is also supported by our server side components. The widget manages zoom and pan parameters, and then shows the generated image.


    We are using the Google Maps static API for this feature, and as such, we support the following types of maps:

    • Roadmap
    • Satellite
    • Terrain
    • Hybrid.

    You can change the map type in the settings menu.



    You can Zoom In, Zoom out and pan around all directions using the application.


    Display graphics (elevation and altitude)

    This is also a tricky feature to implement in the Vodafone 360 Platform (or any other Widget based platform for this matter). We have access to the HTML5 canvas element. However, it would be rather tricky to do the drawing in real-time on the device. More: we would need all data to be stored locally or be obtained from the server on demand, which would give a less than optimal user experience. So how to solve this issue? Once again, the server side components are the answer: we use the Google Charts API to draw the graphics from the data stored on the server. The Google charts API draws the graphic and hands them to our server, which in turn will handle it to the application, via a simple asynchronous image loading technique.


    altitude graph


    Share with friends

    When I share my tracks with my friends, I usually send them the GPX or KML file. This is ok if they are at their home PCs and have a tool installed which allows them to open the track information. But if they are on the move or in a place where they cannot access a offline tool, wouldn’t it be great to use for example, a service like Google Maps to show the track in a browser? Well we believe it would and we implemented a share feature in our application: After a track is submitted, we generate a link to a page where you will be able to browse the current activity. We then shorten that URL (using the bit.ly API) and allow you to send the link to your friends via SMS, e-mail, and share it on Twitter or Facebook.

    This page also shows the elevation and speed graphs, and allows you to download the KML and GPX files to your desktop computer.




    When you send a link to your track, you are actually sending a link to a page like this one (for your own track):




    Multi-language support

    Given that we were targeting an international contest, this is a must. We currently support Portuguese and English, but we have the foundations to add other languages in an easy way.



    Design rules and usability

    We were to great extents to provide a “Vodafone 360” experience to our users. This included the navigation controls, iconography, and general experience rules, such as the loading screen with the flipping panels. This ensures that the user is already “educated” on how to use our application from the previous knowledge he or she has from the platform.

    This was when my friend Teresa Carvalho hopped in and gave us her valuable help:




    Final thoughts

    We are very happy with the final result of the application/service.

    We hope that you enjoy using the application as much as we did developing it.

    Please let us know your thoughts about Trackie in the comments, below.

  • Trackie – Making of (Part 1 of 2)


    One of the things I often do after any outdoor activity with my friends is to share the track with them. I got used to this “ritual” ever since I got my GPS enabled Sony-Ericsson W715, which was bundled with an application for this purpose. This is very handy as we can then discuss and share this information with other friends and let them experience the same course.

    We can then import this data to Google Earth or any other application supporting GPX or KML files. This is great to discuss the track with someone.

    Mobile Widgets to the Rescue

    One of the problems of my new Vodafone 360 Samsung H1 is the fact that I don’t know about the existence of such an application for this platform.

    So with this in mind, I started developing a Vodafone 360 enabled Mobile Widget which leverages the GPS API in the M1 and H1 devices. The widget is not targeted to a specific sport. We want the application to be as flexible as possible so that you can use it in any type of outdoor activity.

    Building up a team

    Since the idea came up, I was aware that I was going to need some help.

    For the server-side services, I asked a good friend of mine (Ricardo Gregório) if he wanted some amusement for his spare time :)

    These server-side services include: Elevation and Speed Graphics, mapping services, and of course some JSON enabled WebServices to allow the information to be stored and retrieved.

    This information goes mostly around tracks, and some other stuff like statistics and user management.

    Because I think that we (programmers) should take the design and usability into account as one of the key aspects of our applications, I brought in another good friend of mine (Teresa Carvalho) to help out in this field.

    As I was aware of the AppStar contest, we had some extra motivation to start the project.

    So, with the team in place and three weeks to go until the contest deadline, we started the development of our Widget…

    Trackie Icon

    (to be continued…)

  • Hello Mobile world

    Ok, so I finally found some time to set up my new domain and blog server.

    As you can understand by the title of this blog, I’ll be using this blog to post things mostly related to the mobile world, but also for other things I might find useful.


    Lets get this thing started :)


Switch to our mobile site