
I recently got a Nokia N900. It is very fun device, but missing some of applications which I ran on my Nokia S60 devices. One of big thing is Mobile Google Maps. I would like to introduce how to utilize Web application version of Nokia Maps and Latitude option on Maemo Browser of Nokia N900.
If you are iPhone and Google Maps Latitude user, this is just same. I just enter the URL of Latitude web application on my iPhone to Maemo Browser. That’s it! And to enable My Location function, we just need to install small program from App Manager.
- Install ‘maemo-geolocation’ package from App Manager.
- Launch ‘http://maps.google.com/maps/m’ from Maemo Browser. This is Google Maps w/o Latitude option.
- Launch ‘http://maps.google.com/maps/m?mode=latitude’ for Latitude.
You may see following dialog when bring up Google Maps web application.

Hit ‘Share’ to enable ‘My Location’ function.
To enlarge maps, we need to enter ‘Manipulation Mode’. The operation to enter this mode is a little bit fuzzy. Please refer Maemo Browser page for the detail. After entered ‘Manipulation Mode’, you can zoom-in the map by double tapping on the map. I can not figure out how to zoom-out by screen operation. But you can modify ‘z=’ part of URL to change any zoom level. If you can not found ‘z=’ in the URL, please open and close ‘Menu’ of Google Maps.
Maemo
I am using Windows7 with bootcamp on my Mac mini. Currently, scroll function of Apple magic mouse is not supported on Windows environment formally. But following procedure enabled scroll function of the magic mouse on my Windows7.
- Obtain Bluetooth Update 1.0 for Windows from Apple web site. You can not install this package directly.
- Unpack this package using some kind of tool. I used Lhaplus. (I am sorry, this is Japanese tool. I hope that some other general unpack tool like a WinRAR may work for this)
- Find ‘AppleWirelessMouse’ packge in extracted files and install it. Then scroll function will be enabled.
Ordinary Life

I got a Apple Magic Mouse. This is cute.
It seems to me, there is only one mechanical switch on it. But the mouse recognizes left click and right click by which side of mouse surface is touched. This is very smart method. Horizontal and vertical scroll also can be done just like a track pad of MacBook. Swipe operation (move two finger horizontally) is acting as paging operation.
I hope that more operations will be available using touching surface.
One sad thing is bootcamp. We can not use scroll operation on Bootcamp Windows environment. The magic mouse becomes just two buttons mouse on the Windows environment.
Mac
According to Official Google Mobile Blog, Mail sync function was already added to Google Sync service.
I have used Google Sync on my Nokia E63 to sync Google Calendar for a few month. I just added Email setting to Mail for Exchange and got push mail from Gmail.
Official Google Sync document does not mention about Email service yet (2009/Sep/24). Current online document just mentions about Google Calendar and contact list synchronization. I suppose you can easily add Email setting to this.
For Nokia S60 devices, you just need to have Mail for Exchange application. It is free application and you can obtain it from Ovi.
Ordinary Life
There are some difficulties to get mouse pointer coordinates within web object by Javascript. We have to solve web browser differences and figure out complicated DOM hierarchy.
If you use jQuery (this is most popular Javascript library in recent days), things get easier.
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('img#test').click(function(e){
var x = e.pageX - $('img#test').position().left;
var y = e.pageY - $('img#test').position().top;
alert("X=" + x + " Y=" + y);
});
});
</script>
Then you just need start image tag like <img id="test".
Programming
Step Carousel is a jQeury plug in to show many images efficiently on web page. I liked it. But it does not work with jQuery.noConflict();.
I reviewed inside of the Step Carousel v1.6.1. Only one function of the Step Carousel was not worked with jQuery.noConflict(). I just need to add 2 lines of code to function addnuvbuttons.
Wrap up addnavbuttons:function(config, currentpanel) with ‘(function ($){ … })(jQuery);’ as follows.
addnavbuttons:function(config, currentpanel){
(function ($){ // Added for noConflict()
config.$leftnavbutton=$('<img src="'+config.defaultbuttons.leftnav[0]+'">').css({zIndex:50, position:'absolute', left:config.offsets.left+config.defaultbuttons.leftnav[1]+'px', top:config.offsets.top+config.defaultbuttons.leftnav[2]+'px', cursor:'hand', cursor:'pointer'}).attr({title:'Back '+config.defaultbuttons.moveby+' panels'}).appendTo('body')
config.$rightnavbutton=$('<img src="'+config.defaultbuttons.rightnav[0]+'">').css({zIndex:50, position:'absolute', left:config.offsets.left+config.$gallery.get(0).offsetWidth+config.defaultbuttons.rightnav[1]+'px', top:config.offsets.top+config.defaultbuttons.rightnav[2]+'px', cursor:'hand', cursor:'pointer'}).attr({title:'Forward '+config.defaultbuttons.moveby+' panels'}).appendTo('body')
config.$leftnavbutton.bind('click', function(){ //assign nav button event handlers
stepcarousel.stepBy(config.galleryid, -config.defaultbuttons.moveby)
})
config.$rightnavbutton.bind('click', function(){ //assign nav button event handlers
stepcarousel.stepBy(config.galleryid, config.defaultbuttons.moveby)
})
if (config.panelbehavior.wraparound==false){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
this.fadebuttons(config, currentpanel)
}
return config.$leftnavbutton.add(config.$rightnavbutton)
})(jQuery); // Added for noConflict()
},
Programming

Google Maps My Location w/o GPS
I am using Nokia E63 for my main mobile phone currently. E63 does not have internal GPS unit. So, I bring bluetooth GPS unit most of time. But it takes time to use a GPS unit. As a result, I use ‘My Location’ function of Google Maps mobile application without GPS when I do not need precise location.
Amazing! ‘my location’ without GPS shows the location with quite good accuracy. When I tried Google Maps on Nokia E61 first time, accuracy of ‘my location’ without GPS was about 1500m. I heard that ‘my location’ function of Google Maps application without GPS unit used location information of mobile phone base station. So, 1500m is a reasonable result, I guess. Latest version (probably version 3 or later) of Google Maps application for Nokia S60 3rd shows 100m or 200m accuracy at Shanghai center area most of time. I am not sure how it does come. Triangulation using multiple mobile phone base stations or using some other information? Anyway, it is very useful.
If I need to navigate to a building or I need to know moving direction time by time, I will still use a GPS unit. Otherwise, I just use Google Maps ‘my location’ without GPS.
Note: This would only be valid in metropolitan area.
Ordinary Life

Secrect Room of iPhone Game Underwordls
I found secret room in iPhone RPG underworlds. You can talk to monsters in this room.
You will be done ‘Altar’ quest in early phase of the game. After completed the all quest on this floor, please return to the Altar room. You will find a chest and touch it. You will teleport to the secret room.

iPhone RPG Underworlds - Altar's Room
Underworlds is action RPG of iPhone and iPod Touch. This is very similar to PC RPG Diablo. If you played the Diablo before, you will be able to enjoy Underworlds also.
iPhone/iPod Touch
StarDict dictionaries are mostly lightweight and very handy dictionaries. They are distributed as free dictionaries.
There are so many dictionaries at StarDict web site. So, let me introduce my favorite dictionaries I found while testing my iPhone application ptsDict.
EJ-GENE95 57369words. (English-Japanese)
EDICT 112867words. (Japanese-English)
English Thesaurus 20003wrods.
Japanese/English Life Science Dictionary 34286words.
朗道汉英字典5.0 405719words. (English-Chinese)
朗道英汉字典5.0 435468words. (Chinese-English)
Ordinary Life
There is some difficulties running some of MIDP applications on Nokia 5800XM. Because 5800XM only has a few hardware keys. Native S60 5th applications utilize touch screen of 5800XM, but ordinal MIDP applications do not.
Standard UI components on 5800XM support touch screen event naturally. The problem is when MIDP applications uses 10keys for specific application behavior. We may utilize low level touch events instead of 10keys.
I just tested how we can use touch events of 5800XM on MIDP2.0 applications.
Canvas class of MIDP2.0 has call back API entries pointerPressed(int x, int y), pointerReleased(int x, int y) and pointerDragged(int x, int y). And also boolean hasPointerEvents() to check those event APIs on the device. Those API entries are designed for any kind of pointing devices. Touch screen is just one of them.
Those call back API entries are very easy to use…
public void pointerReleased(int x, int y)
{
iPointX = x;
iPointY = y;
this.repaint();
}
This is very simple, but effective. I setup the code to write iPointX and iPointY values to the screen in paint routine. This works fine on S60 5th emulator.
Therefore, if we draw virtual keys or buttons on the screen and MIDP program can recognized them by touch event API like pointerReleased. We can use this mechanism to start specific application behavior instead of 10 keys.
Nokia, Programming
Recent Comments