April 19, 2010 | by Ed Clark
Back in November of 2009, I interviewed Beat Forster, managing partner at Synthesis AG, about his plans to create a SyncML client for Android to go along with his company’s client offerings for iPhone, Palm, RIM, and WinMo. Beat has good news for Android users in corporate calendaring/groupware environments: Synthesis is releasing the first Android SyncML client very soon, possibly this month. Synthesis is currently setting up a temporary license manager which allows users to test the release version of the client for free for 30 days.
The client will work with most versions of Android (1.5, 1.6, 2.0, and 2.1), and syncs SyncML-capable calendars and contacts with the built-in Gmail calendar (or other calendars of your choice–see Beat’s comments below) along with the associated Google applications. The compatibility list includes any compliant SyncML server, such as Toffa.com, SyncWise, Oracle Collaboration Suite, Open-Xchange, Teamware, eGroupware, DeskNow, ScheduleWorld.com, cixonline.com, neopim.com, and many others.
As one of the lucky beta testers, I can report that the client works very well. It has greatly improved my life at work, since I no longer have to reconcile two incompatible calendars on a daily basis (Oracle and Google Calendar) and I can see changes in my schedule after each sync. In fact, many folks have contacted me over the past few weeks to get information on when the client will be available to the public. Beat’s team has been extremely responsive as I worked through some issues, most of which ended up being fixable on my side. (Thanks for being so patient with me, guys.) The short summary: Anyone that has been wondering how to deal with unsyncable calendaring systems because of Android’s missing SyncML functionality should find the Synthesis client to be a fine solution.
Purchase and Download
The application can’t be downloaded via the Market because Switzerland is not yet on the list of countries approved for sales in the Android Market. Instead, Synthesis will deploy the client through its web site and sell licenses via Kagi, which is the same distribution method it uses for other clients. Pricing is set at the same rate as the Standard version of its Windows client (18 Euros). (Licenses can be be purchased today, as this system has already been set up.)
I also asked Beat for a few interesting items his team found while developing SyncML for Android. Here are some of the things he had to say:
Discoveries and New Features
- One of the differences from the Windows Mobile or iPhone client is that an Android device can have more than one address book and more than one calendar, so they can be individually switched on and off for syncing. The information about which address book or calendar should be synced is stored in the categories field.
- Another discovery was that there is a new way of accessing the address book in Android 2.0 and higher. So Android 1.5 and 1.6 are using a completely different way of accessing the contacts database than 2.0 and 2.1, which are using the ContactsContract model. Users can visually see which address book adapter is used–the old one appears as green icon, the new one as a red book. Handling more than one contacts account is only possible with the new address book, as the current Android account manager was introduced in Android 2.0.
- The app allows access to SyncML servers using https (SSL). Even self-signed certificates at the server are possible. To use this feature, the “Ignore SSL errors” setting must be activated.
- To facilitate troubleshooting, the Android client is able to send session log files to Synthesis for inspection. It is also possible to inspect these log files on the device. If “Keep logs” is used (instead of “Yes, send logs”), it will be stored in the SD card’s “download” directory as an html file. There are several free applications available for Android which allow the user to display internal file contents. The log file is called “sysynclib_android:….”
Issues and Challenges
- The close connections between GMail and the Google Calendar caused e-mails to be sent out automatically to the organizer and all attendees when synced to the device by default. This also happened every time afterward with a “Reload Device” sync. To fix this problem, Synthesis added a switch which ignores synchronization of organizer/attendees (off by default). The organizer/attendee information will be kept by the Android SyncML client locally, but not stored in the calendar. Thus, a “Reload Server” will copy the organizer/attendee information correctly back to the server.
- There is a serious bug in the Android Calendar concerning “all-day” events, which causes these events to move to the day before when saved. This only happens in time zones east of UTC, as it is caused by setting hour and minutes to zero and then rounding to the wrong day. To avoid this issue, events can be stored without the all day flag in the Android calendar.
- A major challenge was providing support for Android versions 1.5 up to 2.1 with the same app. Going lower than 1.5 wasn’t possible because the Synthesis Android client uses the Synthesis SyncML engine (written in C++) as the core. Code written in C++ can be used only together with the NDK (native development kit) which was first added in Android version 1.5.
Thanks again Beat, you’ve made many folks–including me–very happy.