AirInformation Blog

Keeping technology fun

Archive for February 2010

Android Calendar Widget Released

leave a comment »

As a result of some people asking, I have released the Android calendar widget I created to replace the one supplied with my HTC Hero.

The screengrab shows both the HTC widget (top) and my replacement widget (bottom).

The HTC calendar only show the next event while mine will display up to 3 events (if they all occur the same day). As events pass, the widget will update (every half hour) to show the next three from the current time.

Note that the HTC (top) widget has a bug with all day events that causes it to display the event one day early. This screengrab was taken on Saturday 27 February but the HTC widget incorrectly lists the all day event on Monday 1 March as “Tomorrow” when in fact it should list “Monday 1 March”.

I’m making my alternative calendar widget available free of charge.

I don’t have any plans to add it to the Android Marketplace, so if you want it, please visit my Android Calendar Widget page and download it from there.

I hope you find it useful if you decide to install it.

Written by airinformation

February 27, 2010 at 1:16 pm

Posted in Android, development

Tagged with , ,

Droidbox – Dropbox on Android

leave a comment »

Dropbox have already released a mobile app for iPhone but Android users are still waiting… Dropbox does provide a mobile web interface which allows you to download files to your phone but it doesn’t provide any kind of sync functionality.

Mobile phone users generate content (photos and video) and make changes to their contacts, calendars and todo lists. There’s a real need to ensure that these changes are both backed up and available on the other devices (computers) in our lives. Users of both Android and Dropbox will understand the need for a Dropbox sync client on Android.

For some reason, Dropbox seem to be dragging their feet on producing a client. However an enterprising developer, Berdon Magnus has stepped up to the mark and produced an app called Droidbox.

It appears that Droidbox is only available for Android 1.6 upwards which means that I can’t install it on my HTC Hero to try it out, although I hope to be test it on the emulator. I’m guessing that it works by making HTTP/AJAX requests from the phone to the Dropbox service over the wire simulating a user with a browser – although I haven’t been able to confirm this one way or the other.

Anyway, until Dropbox releases their own Android client, this is probably the best option for accessing your files on Dropbox with Android.

The other interesting fact is that the Droidbox app is available in two flavours; free and paid for at US$1.99 – this means that Dropbox may struggle to convince users to pay a whole lot more for their own brand app if a cheaper alternative is available and it works. Then again, people may prefer to pay for a Dropbox app on the basis that they know who created it and that their login credentials and files are safe from third parties.

Written by airinformation

February 25, 2010 at 1:16 pm

Android iCal parser

with 6 comments

Testing on the parser is going well as you can see by the screenshot to the left. Although the app currently exists only as a test harness it will be used to test each component and aspect of the iCal sync service.

You can see that the iCal information is coming from a Zimbra Collaboration Server. The ics datastream includes events defined in three timezones (with two seemingly similar ones). It also contains 94 events; some of which date back to 2007 in this particular calendar.

The eventual sync app will be designed to filter out events that don’t feature within a current time window (maybe today + 7/14/30 days). Why a time window? Well, I have a feeling that this may be required in order to reduce the amount of work that the app has to perform each sync – if you can discard redundant events without having to process them that has to be good, no?

As far as I can work out, the steps to get to a working ical sync app or background service are:

  • get the ics (iCal) file from a remote server
  • support self-signed certificates
  • handle timezone conversions for event entries (see below)
  • write events from the ics file into the Android calendar
  • develop a synchronisation algorithm between the ics source and the internal calendar
  • provide a configuration activity to create, edit and remove calendars
  • support different schedules and modes for synchronization
  • deal with recurring events
  • … and whatever else I haven’t yet foreseen!

I’m currently working on converting event date/times between timezones and UTC. iCal event entries are (normally) stored in their local timezone whereas Android calendar entries appear to be stored in UTC (universal coordinated time).

Written by airinformation

February 21, 2010 at 9:05 pm

Posted in Android, development

Tagged with , , , ,

Keeping things in sync with Dropbox

leave a comment »

DropboxIf you haven’t heard of Dropbox, then you’ve probably been living under a shell for the past year. Dropbox is a cloud-based service that syncs folders on your computer(s) via its servers in the cloud.

You can use it to:

  1. backup your important files
  2. see the same view of your files on different computers
  3. shares files and folders (privately or publicly)
  4. see and edit previous versions of saved documents


Once you start using Dropbox, you’ll wonder how you ever managed without it. I know that this is a pretty bold claim but I’ll explain how it works for me.

I use a laptop when working at clients but need the same view of my documents and files when back at the office. Dropbox allows me to do this and keep my files in sync in real-time. As I create and edit a document on my laptop, the same document with the latest changes is (immediately) available on my office computer. When I make changes in the office, those changes are also available on my laptop when I next fire it up.

How this achieved?

On each computer where you install Dropbox, you create a Dropbox folder. This is a normal folder which is just like any other on your computer. What’s magical about it is that the Dropbox client software keeps this folder in sync with the Dropbox service in the cloud whenever you’re connected to the internet… and it does the same for all your other computers linked to the same account.

Unlike a networked or shared volume which is no longer available when you’re not connected to the network or internet, the files and folders in your Dropbox folder still exist when you’re not connected. The next time you connect, they re-sync again automagically! Dropbox also keeps versions of your document changes for the past 30 days. Wonderful if you need to see or restore a previous version.

All you need to do is go Dropbox and sign up for a free account. Then you install the software on each of your computers – they have versions available for Windows, Mac and Linux… oh and iPhone.

When you sign up for Dropbox you get 2Gb of free storage. If you refer friends and colleagues you can get up to another 3Gb free (250Mb for each referral). They also offer a paid for service which gives you lots more storage if you intend backing up your photos, music or video files.

What’s amazing about Dropbox is that it just works. Try it, you’ll never look back.

Disclaimer: I am in no way affiliated with Dropbox. There are two alternate services that I know of which may also be of interest to you; Sugarsync and SpiderOak.

Written by airinformation

February 20, 2010 at 10:40 am

Posted in security

Tagged with , ,

Android ical sync development underway

with 4 comments

I have started developing an ical sync for Android and things seem to be going well.

For my initial testing I used the iCal4j library, however I’ve found the library too heavy for my needs mainly because it appears to work by building a complete calendar in memory as it processes the .ics datastream (much like dom4J for XML).

02-14 10:34:13.523: DEBUG/AndICalTest(838): Start ics parse
02-14 10:34:13.683: DEBUG/dalvikvm(838): GC freed 2293 objects / 341920 bytes in 67ms
02-14 10:34:13.784: DEBUG/dalvikvm(838): GC freed 1055 objects / 482560 bytes in 61ms
02-14 10:34:13.894: DEBUG/dalvikvm(838): GC freed 1214 objects / 548456 bytes in 68ms
02-14 10:34:14.004: DEBUG/dalvikvm(838): GC freed 1181 objects / 494336 bytes in 60ms
02-14 10:34:14.104: DEBUG/dalvikvm(838): GC freed 1247 objects / 525192 bytes in 65ms
02-14 10:34:14.194: DEBUG/dalvikvm(838): GC freed 674 objects / 486128 bytes in 63ms
02-14 10:34:14.284: DEBUG/dalvikvm(838): GC freed 597 objects / 467456 bytes in 66ms
02-14 10:34:14.373: DEBUG/dalvikvm(838): GC freed 698 objects / 573776 bytes in 60ms
02-14 10:34:14.473: DEBUG/dalvikvm(838): GC freed 577 objects / 466944 bytes in 70ms
02-14 10:34:14.563: DEBUG/dalvikvm(838): GC freed 625 objects / 539280 bytes in 65ms
02-14 10:34:14.643: DEBUG/dalvikvm(838): GC freed 638 objects / 544392 bytes in 66ms
02-14 10:34:14.723: DEBUG/dalvikvm(838): GC freed 577 objects / 441784 bytes in 58ms
02-14 10:34:14.834: DEBUG/dalvikvm(838): GC freed 861 objects / 664328 bytes in 65ms
02-14 10:34:14.914: DEBUG/dalvikvm(838): GC freed 621 objects / 480840 bytes in 55ms
02-14 10:34:14.934: DEBUG/AndICalTest(838): End ics parse
02-14 10:34:14.934: DEBUG/AndICalTest(838): VCALENDAR: 1
02-14 10:34:14.934: DEBUG/AndICalTest(838): VTIMEZONE: 3
02-14 10:34:14.944: DEBUG/AndICalTest(838): STANDARD: 3
02-14 10:34:14.944: DEBUG/AndICalTest(838): DAYLIGHT: 3
02-14 10:34:14.944: DEBUG/AndICalTest(838): VEVENT: 91

I have taken a different approach with a parser that processes and returns one single entity at a time as they are encountered similar to a Sax parser for XML. The log output above is from my test harness running in the Android emulator processing an ics inputstream with 91 events in it.

This approach allows the parser to rip through the ics file quickly and with a minimal memory footprint. Apart from speed and low memory usage, another advantage of this approach is that the parser class can be wrapped with a filter which discards events that are not required; for example those that have occurred in the past.

My plan is to use this ical parser as the core component of a background sync process. The sync will read a configuration setting to determine which calendars to update from their specified ics sources.

In building my test harness, I have already encountered one difficulty. This is the problem of getting the Android HttpClient library to accept SSL certificates when the ics file is served from a webserver using a self-signed certificate. However, this shouldn’t be an issue for servers using certificates from a recognised authority. I do plan on fixing this soon as I need to be able to access my Zimbra Collaboration server over SSL (with self-signed certificates) in order to keep my username and password protected.

I’ll keep this blog updated with progress reports as I work to release a beta in the (hopefully) near future.

Written by airinformation

February 14, 2010 at 9:20 am

Posted in Android, ical

Tagged with , , , ,

No ical support on Android… What was Google thinking?!

with 2 comments

This comment from the Android issues list really sums up the situation:

For being such a technically advanced platform, this oversight is laughable. iPhone OS
3.0 does this so beautifully, I was downright embarrassed when I discovered my brand-
spankin'-new Nexus One didn't support CalDAV. I have numerous Google Apps
domains, as well as Zimbra servers, that I use with my iPhone, calendaring to the
fullest. We need this BUILT INTO THE OS as a basic function.

Now why is such a critical feature missing from Android?

I have a theory that …

It’s just low down on Google’s priority list because Google feels that users can should must be forced to use Google’s calendar services to subscribe to remote ical services and then sync those calendars with the phone.

As you can see from this issue on Google, this just isn’t an option for some users, especially business users who cannot have their data accessible to Google.

I have been researching ical and caldav, and believe that it should be possible to create a background service that syncs remote (non-Google calendars) on an Android handset.

It looks as though it is also possible to create, delete and update calendars (and events) via the calendar content provider even though it is still relatively undocumented.

Through a preference activity the user could choose which calendars to sync to remote ical servers, to create new calendars and to associate colours with the (new or existing) calendars.

I think that the first stage would be to support read of remote calendars (ical), and once that is working to support remote updates (caldav) too.

If anyone is interested in collaborating on this, leave a comment with some contact details and I’ll come back to you.

This is an issue that seriously need sorting out and quickly!

** UPDATE ** As yet I haven’t received any offers of help but I have started to build the ical/ics sync on my own – you can keep abreast of its progress via this blog.

Written by airinformation

February 7, 2010 at 7:45 pm

Posted in Android, ical

Tagged with , , ,

Wavesecure… for when your phone is gone!

leave a comment »

I’ve been fortunate enough to only have had one mobile phone of mine lost or stolen in the past few years.

But if someone got my phone, they would have access to my calendar, email accounts, photos and whatever documents I have on my SD card.

While searching for something online, I came across an Android app called WaveSecure. It promised to track your phone, lock it on demand or when the SIM card was changed. It also allows you to backup certain things like your photos or contacts to their service.

You can install it from Google Market. At the moment WaveSecure is free (until end of Jan 2010) but I believe that it will be chargeable soon.

The service is pretty clever. After installing the software on your phone, you create an account on their service. All you need to give is your phone number and a pin code (of your own choosing). The WaveSecure service sends you a text message which is intercepted by the WaveSecure app on your phone and confirms that you gave the correct details and enables itself.

WaveSecure appears to embed itself at quite a low level in the software / operating system stack. But I doubt that it would survive a factory reset – although I can’t confirm this one way or other as I haven’t actually tried it.

Now is when the fun begins…

If you log into the WaveSecure service online using the same credentials that you gave when registering, you’ll be able to do a number of things including:

  • Back up your phone
  • Restoring your contacts, SMS messages and media
  • Find out the location of your phone
  • Lock your phone
  • Wipe your phone

WaveSecure communicates with your phone via SMS. The SMS messages are intercepted by the WaveSecure app (usually before you have a chance to even see them). The SMS messages contain specific commands to make your phone do the actions above.

If you’re unfortunate to lose your phone, the tracking function should be able to help you locate it again. If it gets lost, then you have the option of locking it, or even wiping it clean if you’re not certain that you’re going to get it back.

Presumably if your phone is lost and you replace it, reinstating the data is just a matter of restoring using the Restore option from WaveSecure. As I still have my phone, I can’t yet tell you how well this bit works!

However, the remote lock function works really well. As does the lock function when you change SIM cards. To unlock the phone, you can either enter your pin card on the handset, or send an unlock code from WaveSecure’s site.

While it’s worth noting that this isn’t a comprehensive backup/restore utility. It should protect your data in the event that you end up losing your phone.

All in all, I’d say that this was a pretty essential piece of software to have installed.

Written by airinformation

February 4, 2010 at 10:18 pm

Posted in Android, security

Tagged with , , ,

Android Calendar Widget

with 10 comments

I love my HTC Hero phone along with its Sense UI which provides a sophisticated polish to the Android OS.

What I don’t like is that some of the apps and widgets provided are what I consider to be substandard.

Take the Calendar widget for example. HTC’s widget only shows the next appointment that you have. It doesn’t really give you a sense of what is coming up that day. And please don’t get me started on how clunky the calendar application is…

Anyway, I thought I’d build myself a widget that did give me the calendar information that I wanted.

The widget refreshes itself every half hour by default. But if you click on the calendar icon, then it refreshes immediately. This is useful if you make a change to your calendar and want to see it reflected in the widget.

The widget offers a maximum of three lines of event information in contrast to the standard HTC widget which only offers one.

I don’t normally have more than 4 events in a day so the next three events is fine for my needs. I also don’t need to know when the event ends – I can just launch the calendar to see that information.

The widget looks ahead 7 days and will list as many events as it can within the 4 lines of space that is available.

I’ve only tested the widget on my own Hero. But if anyone is interested I might make it available for others to try.

Let me know via the comments and I’ll arrange a download link.

UPDATE I have added a new Android page where you can download this widget which is free.

Written by airinformation

February 2, 2010 at 6:52 pm

Posted in Android, HTC, widget

Tagged with , ,

HTC Hero – First Impressions

leave a comment »

HTC HeroI’ve been using various Palm Treo phones for a few years now but decided to upgrade to a new phone after the Palm refused to sync with my desktop anymore.

Actually selecting a new phone wasn’t simple. I looked at many of the different offerings from Palm, Nokia, Apple, Blackberry and Android devices.While the phone itself was important in the selection process, probably a bigger factor was the underlying operating system.

Windows Mobile didn’t even factor in the run-off. I don’t use Exchange, Office and have no need to remain within Microsoft’s ecosystem.

Apple just doesn’t do it for me either. I don’t like the AppStore approval process, I hate iTunes and in my humble opinion, Apple’s products are overpriced and underwhelming.

I loved my Treos and I really liked the Palm Pre… but I don’t think Palm are going to survive as a business in the long term. I wish them well, but I’d rather go with a platform that has more momentum behind it.

Blackberry requires the use of a server (or additional service) to get proper syncronization. So that was out too. I use a lot of open source software (including mail and calendering) and I needed low cost access to my existing services.

Nokia looked interesting with its Symbian OS but I really couldn’t get that excited about it enough. Sorry.

That led me to select Android as my preferred mobile OS. It’s open source (which I really like). There’s no approval process for apps, and being Java based I can attempt to write my own apps when I have the time and inclination.

Having selected the OS – Android… I needed to chose a phone. After several days research, I decided on the HTC Hero. I ordered the phone online with high hopes and low expectations. I was really prepared to be disappointed by it. The phone arrived next day and I can honestly say that I have been absolutely delighted by it. In fact, after 24 hours of playing with it, I mentally gave it a 12 out of 10!

The Android OS is a delight. The multi-tasking (running several apps simultaneously) works really well. Installing and removing apps from Google’s Marketplace was simple too. HTC’s Sense UI is beautiful. In fact it’s much better than the standard Android theme.

Is all rosy in the land of Android?

Unfortunately, not.

Android is quite heavily tied into Google (at the moment). The phone expects you to make use of a Google account to synchronize your contacts and calendars. And because I don’t use Google for this, getting my contacts and calendars onto the phone (and keeping them backed up) has been a battle. In fact this is still an issue that I have yet to fully resolve but I’ll elaborate more on that in another post.

After using a Treo which had great intregration between Contacts, Calendar and Notes (tasks), I’m really noticing the relatively underdeveloped (or poorly thought out) integration of these on Android. But I think that these are issues that will get resolved soon. Either by Google, HTC or independant developers.

If you’re undecided about Android I suggest you give it a try. I think Android is going to overtake Apple within 18-24 months. As for the HTC Hero. I can honestly say that it is one of the best devices that I have purchased recently. HTC have done a fantastic job with the phone. The design is good. The ergonomics are good. The call quality is great.

Written by airinformation

February 1, 2010 at 9:20 pm

Posted in Android, HTC

Tagged with ,