Updates from February, 2009 Toggle Comment Threads | Keyboard Shortcuts

  • pit 4:24 pm on February 23, 2009 Permalink | Reply
    Tags: , , , gestures, ,   

    Handling touch gestures in Flash Lite 

    With the release of many touch-enabled devices, as the latest Nokia 5800 XpressMusic and the forthcoming Nokia N97, applications can benefit from new ways of touch-based interactions. A typical example of these new patterns is represented by gestures: simple finger/stylus actions that allow the user to perform specific task, without the need of a precise interaction (e.g.: identify and press a specific button).

    This article will explain how to implement basic touch gestures in Flash Lite. Specifically, we’ll see how to detect both horizontal (left-to-right and right-to-left) and vertical (up-to-down and down-to-up) gestures.

    In the above video it’s possible to see a simple Flash Lite photo viewer, where the user can go from a photo to the next/previous just sliding finger or stylus.

    The source code

    Step 1. Detect touch events

    First thing to do is to detect and handle touch-based events, and this can be done by implementing a MouseListener, and its onMouseDown() and onMouseUp() methods. We also define 4 Number variables to hold the x and y coordinates associated to the mouse up and down events: these will be used to detect if the touch interaction was actually a gesture or not.

    So, take a new and empty FLA, and add this code on your first frame:

    var startX:Number;
    var startY:Number;
    var endX:Number;
    var endY:Number;
    var gesturesListener:Object = new Object();
    gesturesListener.onMouseDown = function()
    	startX = _root._xmouse;
    	startY = _root._ymouse;
    gesturesListener.onMouseUp = function()
    	endX = _root._xmouse;
    	endY = _root._ymouse;

    The onMouseDown() function just sets the starting coordinates values, while the onMouseUp() also calls the checkGesture() function, defined below, that will check if the touch interaction was actually a gesture.

    Step 2. Identify a gesture

    Before trying to identify a gesture, let’s define some variables used to identify and define specific gesture types:

    // minimum length of an horizontal gesture
    var MIN_H_GESTURE:Number = Stage.width / 3;
    // minimum length of a vertical gesture
    var MIN_V_GESTURE:Number = Stage.height / 3;
    // flags for each kind of gesture
    var UP_TO_DOWN:Number = 1;
    var DOWN_TO_UP:Number = 2;
    var LEFT_TO_RIGHT:Number = 4;
    var RIGHT_TO_LEFT:Number = 8;

    The MIN_H_GESTURE and MIN_V_GESTURE variables define the minimum horizontal and vertical distances that must exist between the onMouseDown() and the onMouseUp() event to have, respectively, a horizontal or a vertical gesture.

    Now, we can easily implement the checkGesture() function, by getting the horizontal and vertical length of the touch interaction, and comparing them with the minimum distances defined above.

    function checkGesture()
    	var xDelta:Number = endX - startX;
    	var yDelta:Number = endY - startY;
    	var gesture:Number = 0;
    	if(xDelta > MIN_H_GESTURE)
    		gesture |= LEFT_TO_RIGHT;
    	else if(xDelta < - MIN_H_GESTURE)
    		gesture |= RIGHT_TO_LEFT;
    	if(yDelta > MIN_V_GESTURE)
    		gesture |= UP_TO_DOWN;
    	else if(yDelta < - MIN_V_GESTURE)
    		gesture |= DOWN_TO_UP;
    	if(gesture > 0)

    Step 3. Handling the detected gesture

    Once identified a gesture, we have to actually handle it in some way. To do it, we’ll implement the handleGesture() function, that will check the passed argument to find which is the specific identified gesture.

    In this example, we’ll simply trace the kind of identified gesture(s).

    function handleGesture(gestureFlags:Number)
    	if(gestureFlags & LEFT_TO_RIGHT)
    		trace("left to right gesture");
    	if(gestureFlags & RIGHT_TO_LEFT)
    		trace("right to left gesture");
    	if(gestureFlags & UP_TO_DOWN)
    		trace("up to down gesture");
    	if(gestureFlags & DOWN_TO_UP)
    		trace("down to up gesture");

    Further development

    A lot of improvements can be done to the code presented in this article. Just some example:

    • Detect diagonal gestures: by checking the appropriate gesture flags, it’s already possible to identify mixed diagonal gestures. So, basically you need to extend a bit the handleGesture() method
    • Define a maximum time to perform a gesture: basically, accept a gesture only if the time elapsed to perform it is below a certain limit. This could be useful in some scenarios, to avoid detecting fake gestures.

    Download source code

    You can download the full source code used in this article here:

    Rate this article!

    If you like this article, please vote it on Forum Nokia Wiki. Thanks :)

    • joy 5:08 am on April 7, 2009 Permalink

      this is a joss tutorial

    • Rich 3:10 pm on July 20, 2009 Permalink

      Thanks for the tutorial. It’s great!

    • Aj 3:59 pm on August 18, 2009 Permalink


      This is an awesome tutorial and it’s much appreciated.

      I was having some trouble assigning the gestures to soft keys.
      In this tutorial, you are displaying the gestures, However for example could you please tell me how I would be able to assign the “right to left” gesture to the right key?

    • Supriya Tenany 11:18 am on December 21, 2010 Permalink


      A really good tutorial. I am only waiting for the practical implementation now. How can I check the touch functionalities on the device central? It provides me ‘Multitouch’ but I am unable to use it.

  • pit 1:43 pm on February 19, 2009 Permalink | Reply
    Tags: , , , ,   

    Building a dynamic fisheye menu in Flash Lite 

    Some time ago, we’ve seen how to build a fisheye menu with J2ME. Now, it’s time to see how to create the same component with Flash Lite.

    The FisheyeMenu source code

    Step 1. The menu MovieClip and external class

    Let’s create the FisheyeMenu ActionScript class, that will extend MovieClip, that will be used to implement the actual menu logic:

    class FisheyeMenu extends MovieClip

    Then, create an empty movie clip in your library, export it, and associate it with the FisheyeMenu class.

    Step 2. Initializing the menu

    First, define these 4 menu properties, that will hold some useful values:

    // focus index of the selected menu item
    var focusedIndex:Number;
    // total number of menu items
    var itemsNum:Number;
    // width of single menu items (in pixels)
    var itemWidth:Number;
    // the MovieClip that will contain the menu items
    var itemsContainer:MovieClip;

    Let’s also define an utility function that returns the currently focused item index:

    public function getFocusedIndex()
    return this.focusedIndex;

    And then, implement a function that will be used to initialize the menu with the items you want.

    public function initializeMenu(itemIds:Array, itemWidth:Number)
    	this.itemsNum = itemIds.length;
    	this.focusedIndex = 0;
    	this.itemWidth = itemWidth;
    private function initItems(itemIds:Array)
    	this.itemsContainer = this.createEmptyMovieClip('itemsContainer', this.getNextHighestDepth());
    	for(var i:Number = 0; i < itemIds.length; i++)
    		var item:MovieClip = itemsContainer.attachMovie(itemIds[i], 'item_' + i, itemsContainer.getNextHighestDepth(), {_x: itemWidth * i, _y: 0});
    		if(i > 0)
    			item._xscale = 50;
    			item._yscale = 50;

    The initializeMenu() function is the function you will call to initialize your fisheye menu with the items you want. Its arguments are:

    • an Array containing the id of MovieClip symbols to be used as items
    • the width of single menu items

    Once called, initializeMenu() initializes the menu properties and then calls the initItems() function, that will actually attach the item instances, scaling down the unselected items and translating the menu itself to its starting position.

    The getMenuLeft() function returns the x position to be used for the itemsContainer MovieClip, and depends on the focused item index:

    private function getMenuLeft():Number
    	return - itemWidth * focusedIndex;

    Step 3. Implement sliding funcionality

    When the user presses LEFT and RIGHT keys, you want the menu to perform these steps:

    • change the focused item, scaling down the previously focused one, and scaling up the new
    • translate the menu to be centered on the new focused item

    In ActionScript, you can do it this way:

    public function shiftItem(itemDelta:Number)
    	var nextIndex:Number = focusedIndex + itemDelta;
    	if(nextIndex >= 0 && nextIndex < itemsNum)
    		scaleItem(focusedIndex, true);
    		focusedIndex = nextIndex;
    		scaleItem(focusedIndex, false);
    private function moveMenu():Void
    	new Tween(itemsContainer, "_x", None.easeNone, itemsContainer._x, getMenuLeft(), .50, true);
    private function scaleItem(itemIndex:Number, scaleDown:Boolean):Void
    	var item:MovieClip = itemsContainer['item_' + itemIndex];
    	var fromScale:Number = scaleDown ? 100 : 50;
    	var toScale:Number = scaleDown ? 50 : 100;
    	new Tween(item, "_xscale", None.easeNone, fromScale, toScale, .50, true);
    	new Tween(item, "_yscale", None.easeNone, fromScale, toScale, .50, true);

    In this code snippet, there are 3 functions:

    • shiftItem() is the function called to change the focused Item index by the passed delta argument. It checks if the change is ok, and then calls the following 2 functions:
    • moveMenu() actually translates the items container, to have the new focused item horizontally centered
    • scaleItem() scales up or down, depending on the scaleDown argument, the item corresponding at the index passed as argument

    Since here we use the Tween class, we have to add these 2 import lines at the beginning of the ActionScript file:

    import mx.transitions.Tween;
    import mx.transitions.easing.*;

    How to use the fisheye-menu

    Step 4. Create the menu items symbols

    Take back your FLA, and create 3 symbols that will be used as items within the fisheye menu. Also, remember to check the “Export for ActionScript” option, to have them actually usable from ActionScript itself.

    Step 5. Attach and initialize the menu

    Now, attach a FisheyeMenu istance directly to the _root, and initialize it with the ID of the symbols created in the previous step:

    var menu:MovieClip = _root.attachMovie('FisheyeMenu', 'main_menu', _root.getNextHighestDepth());
    var items:Array = new Array('Item0', 'Item1', 'Item2');
    menu._x = 120;
    menu._y = 120;
    menu.initializeMenu(items, 50);

    Step 6. Create a KeyListener to interact with the menu

    The KeyListener will be really simple, since it will simply call the shiftItem() function when the user press LEFT or RIGHT keys, and will call a custom function when the user press the ENTER key, to trace the index of the current focused item:

    var keyListener:Object = new Object();
    keyListener.onKeyDown = function()
    	var key:Number = Key.getCode();
    	if(key == Key.RIGHT)
    	else if(key == Key.LEFT)
    	else if(key == Key.ENTER)
    function menuFireAction()
    	trace("MENU ITEM PRESSED: " + menu.getFocusedIndex());

    Downloads and related resources

    You can download full source code (FLA + ActionScript file) of this example here:

    If you like this article, feel free to vote it on Forum Nokia Wiki.

  • pit 11:50 am on February 19, 2009 Permalink | Reply
    Tags: , ,   

    Gcal 0.3.2: fix for GMT timezone issue 

    Small update for Gcal, that fixes some bugs reported by users, as:

    • “All day” wrongly shown for all events, for some particular timezones (e.g.: GMT)
    • Right softkey not working on popups on some specific Nokia devices

    You can download the latest version from the download button here, or directly updating from inside Gcal itself.

    • Julie 1:52 pm on February 23, 2009 Permalink

      Thanks Pit.

      I’m now correctly getting timed entries in gCal. Only showing the Calendars which had entries is great, but it does have one slight issue. If no calendars have entries, you just see a blank page. It would be helpful to have a message that says “No entries for today”, as otherwise you’re left wondering whether it’s finished (or even started) searching.

      Also, it would useful to have the day name in the header for the page (e.g. Mon 23/02/09 instead of just 23/02/2009).


    • pit 1:10 pm on February 24, 2009 Permalink

      Hi Julie,

      thanks for the tips, they’ll be surely included in next Gcal update :)


    • Stella 8:56 am on March 13, 2009 Permalink

      Hey how did you get the form elements to have colors, can u give me an insight on that. i’ve been trying to set the background color of forms and form elements in j2me for a long time now

      thanks in advance

    • Dirk 7:28 am on March 16, 2009 Permalink

      I am struggling to get GCal working on my phone. I have a Samsung L760i. When I launch the app on my phone, I usually get a ‘There was an error while loading calendars data.’ After a number of Retrys my calendars start to load, but then I get an ‘Error while retrieving events’ error, leaving me with no calendar information to browse. Any suggestions? Thanks

    • pit 5:21 pm on March 16, 2009 Permalink

      Hi all,

      @Stella: I’m not using forms within Gcal, but low level graphics (e.g.: Canvas)

      @Dirk: I’ve just released a new Gcal version, that will hopefully solve this kind of issues. Give it a try and, if you still encounter this error, please report to me the exact error message that you get (now it should be more meaningful)


    • Cliff 3:22 am on March 29, 2009 Permalink

      Sorry to report I’m still getting the “Error: Login exception (400)” message many Samsung Instinct users have reported.

      Any plans for a fix to this?

    • Guillaume 2:00 pm on April 21, 2009 Permalink

      I use GCal on my LG and i have a 2 hours error on times between real times and times on my screen in GCal

    • pit 4:54 pm on April 30, 2009 Permalink


      @Cliff: thanks for your feedback, you help would be surely useful. I should be able to setup a test version in the next days, so that you can test it

      @Guillame: check out version 0.3.5, where you can manually specify your timezone (or simply pickup the timezone sent by Google Calendar itself), and check if it helps with your timezone issue :)


    • John 10:55 pm on May 7, 2009 Permalink

      Hi Pit,

      Do you think there’s any way of caching events that have already been loaded? Currently when you change day and then go back again it seems to re-download all the information.


  • pit 10:11 am on February 17, 2009 Permalink | Reply
    Tags: , ,   

    Flash Lite Distributable Player: public beta available! 

    The public beta of Flash Lite Distributable Player is finally available!

    What does it mean? In few words: no more worries about Flash Lite versions on users’ devices, more distribution opportunities for developers, and more applications for users!

    In Adobe’s words:

    Since the distributable player solution mimics the successful Adobe Flash® Player desktop model of content-triggered downloads, you can be confident that your users’ devices will always have the latest Flash Lite runtime.

    Plus, the distribution model enables you to deliver free or paid applications to millions of open OS smartphones, through direct-to-consumer distribution or your existing distribution channels, or via Adobe’s aggregator partners, which include GetJar, Thumbplay, and Zed.

    Finally, this solution gives end users a better experience by providing intuitive discovery and installation of Flash Lite applications. Consumers using supported Windows Mobile and S60 phones in India, Italy, Spain, UK, and the U.S. can easily download applications. (Additional countries will be added over time.) After downloading an application, consumers see its user-friendly icon in the device menu.

    Just great!

  • pit 3:44 pm on February 16, 2009 Permalink | Reply
    Tags: , , , ,   

    Gcal version 0.3: touch support, local events, and a bunch of fixes! 

    Version 0.3 of Gcal, the J2ME Google Calendar client, is finally out!

    Most of the work was done to improve device compatibility and fix bugs on specific handsets (e.g.: BlackBerry devices, Nokia E61, and many more).

    Release details

    New cool features are introduced:

    • Touch-screen support: if you have a device supporting touch, now you can easily interact with Gcal with stylus/fingers!
      Touch gestures are also implemented: go from a day to another simply swiping!
    • Event saving on local calendar: you can now save an event on your local calendar. If you’re creating a new event, just check the “Save on local calendar” option. Instead, if you’re viewing a saved event, choose “Actions” -> “Save locally” from the options menu.

    New settings are also available:

    • Font size: introduced to improve readability, and to allow users with touch-screen to have larger touchable areas
    • Alternative soft-keys: devices without hardware soft-keys can now use ‘*’ and ‘#keys to substitute them, and so use Gcal without any more problems
    • Show only calendars with events: this will allow users with a lot of calendars to show only the ones actually selected in the “Filter calendars” screen, greatly improving events readability

    Among the fixed bugs:

    • Calendar loading errors on various handsets
    • Filters scrolling and selection in calendar filtering screen
    • Screen size/orientation changes are now better handled

    Give your feedback

    A lot of new features are still under development, and surely a lot are the missing features that you would like to see into your Gcal. Just leave your comment here, and your feedback will be surely considered for the next Gcal releases!

    • aston 4:11 pm on February 16, 2009 Permalink

      I do not know why.

      I can not use on blackberry 7290 .just said:Error while connecting to Google.

      help me.

    • pit 4:48 pm on February 16, 2009 Permalink

      Hi aston,

      I’ve sent you an email about your issue, please give it a look.


    • Stefan 6:01 pm on February 16, 2009 Permalink

      good job, both bugs (wrong sorting of recurring and once only events, limitation on calendar filter) fixed in 0.3!
      Thanks a lot – this app definitely makes my handset a more valuable companion.

    • Danik 2:20 am on February 17, 2009 Permalink

      Hey pit, two news, the good one is that I managed to run GCal 0.3 on my E61 no prob, everything working like a charm, the bad one is that from the first run I encounter this strange bug – anytime an information popup goes off, by no means on Earth I can confirm it and continue whatever I was doing with the app… Actually the only way I was able to work this out was to restart the app. Of course I tried switching the Emulate Soft Keys setting and of course I know that I should press the very bottom left button in order to access the */# keys. Also I know that some Java apps require the bottom left and the * or # button pressed together and some require the bottom left button pressed prior to the * or # button. I tried all those options, none worked for me.
      By all other means, this app is a charm, i love it! Gonna make my everyday easier. Thank you for all your effort! Hope my bug report will be of any use for you. Keep a-rollin’! :o)

    • Chris 6:39 am on February 17, 2009 Permalink

      Think I might have left my last message in the wrong forum. Downloaded the 0.3 version today, still getting the cannot connect to google message on my Helio Ocean (Pantech PN-810), looking forward to the diagnostic version when you have it ready, thanks:)

    • pit 9:55 am on February 17, 2009 Permalink

      Hi all,

      @Stefan: I’m happy to know it works now :)

      @Danik: I’ve fixed the popup issue, a new version (0.3.1) is available, just update Gcal and it should work!

      @Chris: I’m working on it, It’ll be ready soon.

      Thanks again for your feedback!


    • aston 10:27 am on February 17, 2009 Permalink

      Fix for the blackberry version?

    • Danik 12:58 pm on February 17, 2009 Permalink

      @pit: thanks man! Downloading right away, looking forward to the experience :o) Keep up.

    • Wael Nabil 3:00 pm on February 17, 2009 Permalink

      Dear pit,
      Thanks it work fine in E71.
      i have one issue
      Creating Event and pressing fire key while selecting any text control to edit it like name and details and open and close immediate so i can’t write event..it work when i start to write while selecting it “it open and i start write after that.”
      i have feature request.
      Sync my current saved calendar event to google calendar.


    • pit 3:52 pm on February 17, 2009 Permalink


      @aston: working on that :)

      @Danik: hope it works now!

      @Wael: really strange :-\ I have not a Nokia E71 to test right now, but I’ll do it really soon.


    • Ethan 9:04 pm on February 17, 2009 Permalink

      Thanks! This app just keeps getting better

      Any chance of alerts of upcoming events with vibration
      or sound?
      It would be a nice feature, but I don’t
      even know if it is possible with google’s
      API and it requiring the gcal app to be
      running in the background.

    • aston 3:13 am on February 18, 2009 Permalink

      @Pit can login now. but can not create new event.

    • Julie 8:51 am on February 18, 2009 Permalink

      Hi Pit

      Have installed the new version (on my Nokia E90), and here’s my feedback:

      I had trouble connecting the first couple of times I tried and had to re-enter my loging details, but all now seems to be fine.

      Only calendars with events are displayed, which is great. Thanks for that.

      However, all appointments are still showing as All day, even when they’re not.

      In Filter Calendars options (in which I couldn’t get to the calendars near the end of the list in the previous version), the first time I tried it (and ticked/unticked boxes as I went), I saw Unhandled Exception Error part way down the list. By choosing to ignore it I could continue. I can’t now reproduce this, so maybe it’s a “first run only” error?


    • pit 11:10 am on February 18, 2009 Permalink


      @Ethan: something similar can be surely done and, since it’s definitely useful, next releases will surely include this ;)

      @aston: I’ll send you an update asap

      @Julie: I will make some checks for the bugs you’ve reported. About the “All day” issue, can you tell me your timezone, and the start and finish date&time of some of the problematic events?

      Thank you,

    • Julie 3:49 pm on February 18, 2009 Permalink

      Hi Pit

      Re “All day” events, nothing controversial, I’m afraid.

      TimeZone is GMT (maybe that’s TOO easy?)

      One appt yesterday, 9:30-10:30am
      One recurring “appt” today, 8:00am, zero duration
      One appt tomorrow, 2:30-3:30pm
      One appt on 28th, 9pm-11:30pm

      There are no doubt others, but these seem pretty straight-forward with nothing in common – nothing crossing midnight, for instance, one repeating but the other three are non-repeating. Tomorrow’s gets regularly copied (duplicated), but yesterday’s was a one-off meeting.

      All show as All Day in gCal. Much as I’d like to be out horse riding all day tomorrow, I can’t really afford it ;-).


    • pit 4:24 pm on February 18, 2009 Permalink

      Thanks Julie, your reply actually helped me a lot! Expect a new version later today, that should definitely fix this issue :)


    • Julie 4:31 pm on February 18, 2009 Permalink

      Don’t tell me: it was the “TOO easy” bit?

    • pit 10:18 am on February 19, 2009 Permalink

      Yes, it was (at least, I hope :) )

      Version 0.3.2 is now available, this should solve the “All day” problem.


    • Chris 6:28 pm on February 19, 2009 Permalink

      FYI, tried 0.3.2 on my Helio Ocean (Pantech PN-810) just in case, still get the cannpt connect to Google error… Chris

    • aston 7:36 am on February 20, 2009 Permalink

      Can I set up the * and #, I meanse i do not use * or # key ,but I can config it. For example,the fist time I run Gcal,I can set up the key that what I want. After set up , I can use at the next time.

      The default event create on Google calendar can make the default alert is alert by sms?

      now have no alert option. I must go to google calendar edit the event and make the alert option. thanks.

      and a bug: when I create a new event,it said some error create false. but actually it has been create success.

      I use blackberry .thank u.

    • Tim 5:31 pm on February 20, 2009 Permalink

      Doesn’t work on my LGVu. Says that it cannot download calendars.

    • pit 1:13 pm on February 24, 2009 Permalink

      Hi all,

      @Chris, @Tim: I’ll release a new version to do more accurate tests as soon as possible, to identify the cause of these problems, so stay tuned :)

      @aston: reminders will be added in a next release. About the bug, I’ll send you another debug version with some little modifications.


    • Lucas 6:49 pm on February 24, 2009 Permalink


      This is an awesome program, however I am having an issue. I have the Samsung Instinct, the software loads fine and logs in OK. When it starts downloading from Google it crashes and says “uncaught exception, exiting application”.

      I would love to have this on my phone, can you please fix this?

      Thanks for all the hard work!

    • Lucas 11:02 pm on February 27, 2009 Permalink

      As I have tired to use the program, I have found that the exception does not always occur right away. Sometimes I can be in the program for a few minutes before it crashes. Also, all of my events show up as all day, as posted in another comment. The download circle is continuously spinning, don’t know if that is related. just being as detailed as possible.

      I am excited to start using this program to it’s potential, keep up the good work!


    • Marcus 3:29 pm on March 1, 2009 Permalink


      This is a fantastic tool – thanks very much.

      I am using this on a Nokia E51, but here are the problems I have faced :
      1. All day calendar entries continue until the day after (ie. if its a 1 day event then it shows up as 2 days, if its a 2 day event, it shows up as 3 etc.)
      2. If I create an event on Gcal I get an ‘Error while saving the new event’ message. If I then doscard this addition it has saved it anyway.
      3. If I create an event on Gcal and tick save a local copy, it works fine, but puts the time in 2 hours after the correct time. I live in GMT+2 so that might be the reason ?

      Some other suggestions for future improvements :
      1. Ability to sync all existing events with phone – and the chocei of which calendars to sync (ie. not all).
      2. Ability to have sync on an ongoing basis ie. every hour, day, week etc.

      Thanks again for making this app !

    • JamesS 11:20 pm on March 4, 2009 Permalink

      I keep getting the “Wrong username/password” error on sony ericsson c510 on 3 network.

    • Julie 12:30 am on March 9, 2009 Permalink

      “Some other suggestions for future improvements :
      1. Ability to sync all existing events with phone – and the choice of which calendars to sync (ie. not all).”

      This is already available (although you’ll have to pay for multiple calendar synching) from http://www.goosync.com/. It works well for me.

      You can use (free) Swim from the Bergamot Project (http://code.google.com/p/bergamot/wiki/Swim) to automatically do any of your synchronisations on a Symbian S60 3rd edition phone (5th edition to follow, it appears). These can be set to happen:

      • Manually
      • Every 15 minutes
      • Every hour
      • Every 4 hours
      • Every 12 hours
      • Daily
      • Weekly

      … for each Sync that you have set up on your device.


    • mike 5:15 am on March 13, 2009 Permalink

      I downloaded this for my instinct. I cant seem to log on. I have tried using name with @gmail and without…no luck

    • rich 2:56 pm on March 13, 2009 Permalink

      Firstly, thank you for this great little app. Does a great job for me as Google Calendar website appears awful on my Nokia 6500c.

      As feature suggestions:

      • Change view between Day/Week/Month
      • Cache calendar events (a bit like the new Gmail mobile simple java app) so that you can use the program when there’s no data connection. Maybe a “refresh” button to download appointments when required.
      • Download more than one day to speed up scrolling through days.

      Once again, thank you!

    • pit 5:25 pm on March 16, 2009 Permalink

      Hi all!

      @Lucas: unhandled exceptions should be now fixed, check out latest Gcal version!

      @Marcus: All day issue, the “fake” error on event saving, together with the local event time issue should be all fixed by Gcal v0.3.3: give it a try and let me know if it correctly works. About future improvements: sync is surely on the plan ;)

      @JamesS, @mike: give a try to latest Gcal version (0.3.3) and let me know if it works. If it don’t, please report to me the exact error message that you get in this last version. Thanks!

      @rich: thanks for the precious suggestions! They’re surely on the plans, I have just to find the time to do them all :)


    • Lucas 7:59 pm on March 16, 2009 Permalink

      Thanks pit!

      I am noticing that “all day” events are overlapping the day before and day after.

      I am on Pacific Time GMT -08:00 if that helps, not sure if it is a time issue or not. Other than that the program is working great now!

      Thanks a bunch!

    • Chris 11:36 pm on March 16, 2009 Permalink

      Thanks Pitt, well I am a little closer with the Helio Ocean, when I try to connect with GCal 0.3.3, I get the following error message:

      java.lang.Exception: Error while connecting to Google (javax.microedition.pki.CertificateException: Root CA’s public key is expired)

      I have experienced a similar error when trying to install the GMail j2me client. Have tried to copy the PCA3ss_v4.cer file to many locations on my phone, but none of them took. It seems Snaptu was able to build the certificate in to their application as I can access my Google calendars from there app, but the implementation is not nearly as useful as yours. Please let me know if you have any ideas, thanks… Chris

    • pit 10:01 am on March 17, 2009 Permalink


      @Lucas: I have to to some tests about this. Do you have the same timezone (GMT-08:00) set on both Google Calendar and on your phone?

      @Chris: I’m not totally sure, but if Snaptu solves this problem, then it’s likely that it uses a proxy server to forward your requests to Google Calendar servers and get the responses back. This way, the certificate problem would be solved by the proxy server itself. Anyway, I’ll dig inside it a bit more and let you know!


    • K. 6:40 pm on March 27, 2009 Permalink

      On a Samsung Instinct – still getting login exception (400). Tried both with and without @gmail.com in the username.

    • Sorin 11:12 pm on March 29, 2009 Permalink

      I am using gCal on my G1 through the “Android J2ME MIDP RUNNER” (http://www.netmite.com/android/) because Google “forgot” to ad a search function to its Android Calendar application (and many other applications for that matter).
      How about a native gCal Android application?!
      Anyway, very nice application, quite speedy and functional. Thank you for it!

    • John 9:50 am on April 28, 2009 Permalink

      Hi Pit,

      I’m running this successfully on a SE K800i. However, I have one issue:
      > I don’t think the app is adjusting for DST (I’m in the UK and we’re currently on a daylight savings offset +1 from GMT). As a result all the times given are 1hr behind.

      Other than that I just have some suggestions (you’ve probably had these all before):
      > Sync back to Google
      > Week/Month view (week view in Google Calendar is my favorite)

      Overall, thanks so much for developing this – I have looked for similar for a long time and I’m sure others have too. Keep up the good work.


    • pit 4:58 pm on April 30, 2009 Permalink

      Hi all,

      @K.: still working around the Instinct issue. I should be able to setup a test version in the next days, so that you can test it

      @Sorin: thanks for the hint! I have to check out the official Android app, and then see if there’s still room for some “unofficial” good version :)

      @John: about the timezone issue, you can check out version 0.3.5, that allows you to manually specify the preferred timezone. Your 2 suggestions are already on the todo-list, so stay tuned ;)


    • John 10:56 pm on May 7, 2009 Permalink

      Awesome – I look forward to it. Have added a post about caching on the 0.3.5 thread, but I suspect you’ve got that on your to-do list as well!


    • Steve Seyler 12:51 am on June 1, 2009 Permalink

      Just downloaded the 3.5, which someone on the internet said it worked on his Instinct, but I can’t get to work on my Instinct S30 (Says Uncaught Exception – Exiting Application) …. HELP !!!
      I thought this program would save me from the ridiculous calendar built into the S30.
      Did I do something wrong or is it really not compatible with the S30?
      If it’s not compatible, do you know of any calendar program that IS compatible with my Instinct S30?
      Thanks so much !!!

    • Anders Westlund 12:14 pm on July 24, 2009 Permalink

      Nice! Worked like a charm on a touch-screen Nokia 5800 XM.

    • Anders Westlund 12:29 pm on July 24, 2009 Permalink

      Second impression: “Like a charm” could use a bit of qualification. Time input when creating a new event is a little rough ’round the edges, requires arrow keys to switch from hours to minutes. (Available when using ITU touchpad, so no real show-stopper.)

      And it say “You cannot create an event that ends before it starts,” when From date is 2009/07/24 18:30, and To date is 2009/07/24 19:00. If I write 18:30 as end time, and 19:00 as start time, I get an event that starts AND ends at 19:00.

      Promising app, though. Thanks!

    • Vinz 8:42 am on August 21, 2009 Permalink

      Hello !
      That’s really seems to be a great application, but it does not pass the Initializing page, Loading calendars. I am using a LG KP501.
      However thanks for your work !

    • hokus 12:08 am on August 29, 2009 Permalink

      Very nice application!!!
      It would be great if i can see more than one day on the screen at the same time. Maybe you can add a setting to chose the number of days to display.

      Thank you.

    • Didier 2:04 pm on August 30, 2009 Permalink


      I tested your application on an Samsung GT-S5230 Star but like the Vinzn it doesn’t pass initializing page.

      Any idea what I could check to make it work?

      Thanks in advance,


    • Stefano 2:37 pm on October 15, 2009 Permalink

      did you plan to support ‘tasks’ ?
      thanks for great work (from Italy :)

    • Hugh 4:12 pm on November 10, 2009 Permalink

      Hello, I’m using this on an N95, great app, thanks.

      I am able to view,create and delete events in all my calendars, but am unable to edit events. Is it possible to edit events?

    • Chad 2:36 pm on December 2, 2009 Permalink

      Your product is great and I love it but I have two bugs in the 3.5 version I am running. I am running it on a sumsung impression.

      1. If I have an “all day” (single day) event it shows up on the correct day and the day before that.

      2. Is there a way to get “other calendar” support? Google Calendar has “other” calendars such as Holiday calendar and your favorite sports team.

      Keep up the good work! Thanks!


  • pit 5:36 pm on February 13, 2009 Permalink | Reply
    Tags: , , ,   

    New Gcal version almost ready: last call for new features! 

    I’ve been working hard on the new Gcal version, that will be hopefully released in the very next days.

    Since there is still some available time, if you would like to see some new features in the next version, this is your chance to say it!

    Meanwhile, let me thank you all for your precious feedbacks and suggestions, that helped me a lot in debugging and improving Gcal! Yet a lot needs to be done, so keep it up :)

    • aston 7:25 pm on February 13, 2009 Permalink

      I have no idea for the new feafure. But I think it can support the blackberry.

    • Julie 9:19 am on February 14, 2009 Permalink

      Perhaps you could let us know what features are already included in the new version so that we know what NOT to ask for ;-)?

    • Peter 10:03 am on February 14, 2009 Permalink

      Scheduled Online Sync between Google Calendar and the Internal Calendar of the Phone!

    • aston 5:34 pm on February 15, 2009 Permalink

      When is the release?

    • Wael Nabil 10:45 am on February 16, 2009 Permalink

      really nice effort and waiting for next version

    • Chris 9:08 pm on February 16, 2009 Permalink

      Just downloaded the 0.3 version, unfortunately I still get the “Error while connecting with Google” message on my Helio Ocean (Pantech PN-810). Please let me know when you have a diagnostic version available, thanks:)

    • Jason 2:43 am on February 22, 2009 Permalink

      Just downloaded 0.3.2 version onto my Samsung Instinct. Can’t get past the login page. Whenever I enter my password, it gets changed to only five characters and I get a wrong username/password notice.

    • Chris 2:43 am on March 10, 2009 Permalink

      Hey, great app
      i just downloaded this to my Samsung Instinct. I cant get past the Loading Calendars….Please Wait, page.
      there is box at the bottom that says “There Was An Error While Loading Calendars Data”
      please fix this, thanks

compose new post
next post/next comment
previous post/previous comment
show/hide comments
go to top
go to login
show/hide help
shift + esc