Error message

Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; GeSHi has a deprecated constructor in require_once() (line 915 of /var/www/

Syncing a Google Nexus One (Android) with Mac iCal (calendar service)

I just got a Nexus One and am going through the rigamaroles of setting it up to serve the purpose I wanted my prior phone to do. My prior phone was a frustratingly bad Sony Ericsson "feature phone" and I want to have an enjoyable phone that's a thing of beauty and power rather than the supreme frustration of the other one. It's an open question whether 'tis nobler to buy an iPhone or an Android.

In any case the method to set up calendar sync is pretty simple. My desire is to use iCal on the Mac and/or Google Calendar and/or my phone to enter events and have them easily synchronized. I haven't yet verified the "easily synchronized" part but it does work and seems to work smoothly enough.

The key is this help text on Googles website:

Turns out that iCal is already prebaked with knowledge of how to sync itself into Google Calendar. Google's calendar service is simply a CalDAV service, and iCal can handle CalDAV, and it has a specific "Google" choice to do with ease. However the details in iCal 4.x are slightly different than Google's help page (which covers iCal 3.x). So let's go through the steps.

Google's help says to open iCal preferences, click on Accounts, then click on the '+' button at the bottom of the list. What you want to do is make an 'Account Type' choice that matches the calendar service. In this case the service is Google Calendar and if you are on iCal 3.x you tell it the CalDAV setup specifics as described on Google's help page. With iCal 4.x specifying a CalDAV account results in errors saying it cannot log in. However there is a "Google" account type. Simply enter your gmail address (so-and-so [at] gmail [dot] com) and password.

On a side note, if you're using Google Apps for your Domain your gmail address is "so-and-so [at] your-domain [dot] com" rather than "so-and-so [at] gmail [dot] com". Nicely enough it works fine in iCal to specify the Google Apps based gmail account.

I suppose with the CalDAV support that iCal will be able to sync with any calendar system that supports CalDAV. Obviously why would they give this CalDAV choice if it doesn't work, eh?

Once you have the account set up an important bit of factoidness is the refresh frequency. This determines how often iCal will send updates to or retrieve them from Google's copy of the calendar.

It's useful at this point to test synchronization between the calendars. That's simply a matter of entering an event in one calendar, clicking Refresh on the other, and seeing what happens. Try this in both directions. It should work.

Now let's turn to the Nexus One (or other Android phone). It's approximately as simple. During the setup of the phone you will have tied it to a Google Account. The services on that Google Account will be synchronizable with the phone including calendar. A displeasing feature of the Android is that it does not support connection with a Google Apps based account. It only supports connection with ones under the "" domain. My preference is to use my own domain for email and other services because that helps with my personal branding. I'm using Google Apps to provide the email and other services under my domain name. But because the Google phone won't connect with the Google Apps for my domain I can't use the phone to do email or calendar using the domain name that helps my personal branding. Oh well.

In any case to access the calendar associated with your phone, use a web browser to access and login to the "so-and-so [at] gmail [dot] com" account associated with your phone. At the top of the page is a Calendar link. You should be able to enter events on the phone, see them on that calendar, and vice versa.

On my phone it didn't automatically set up calendar synchronization. It's simply a matter of going to the Settings page on the phone, click on "Accounts and Sync settings". Clicking on 'Auto-Sync' makes it automatically sync back to Google. You can also manually sync by clicking on your account, then in the account page tapping the Calendar row.

Oh.. interesting.. The Accounts and Sync page has an 'Add Account' button at the bottom. I clicked it and entered the information for one of my Google Apps based accounts and that account is now in my phone. It would appear the phone supports limited sync to a Google Apps based account (only for gmail and contacts, not calendar).

Obviously in the step above one should configure iCal to synchronize with the calendar on this same Google Account.