Here is my first Nokia S60 Platform Services API test with Adobe Flash Lite. This demo is designed to run 360x640 screens (like Nokia 5800 and N97). Application first loads contacts name, phone number, work and home addresses and shows all informations nicely in interactive scrollable menu.

// create contacts service object var contact = new Service("Service.Contact","IDataSource"); var inParams = {Type:"Contact"}; // get contacts from phone var outParams = contact.GetList(inParams); if (outParams.ErrorCode == 0) { var outList = outParams.ReturnValue; var outputEntry = null; var i:Number = 0; var step:Number = 40; do { outputEntry = outList.next(); if (null != outputEntry) { // add a new contact to container list i++; var mc:MovieClip = container_mc.attachMovie("ContactItem","Contact"+i, container_mc.getNextHighestDepth()); container_mc.addMC(mc); container_mc["Contact"+i].init(outputEntry, container_mc, i, contactheader_fmt, contactdata_fmt); container_mc["Contact"+i]._y = (i-1)*step; } else { break; } } while (true); // show contact list gotoAndStop("show"); } else { info_txt.text = outParams.ErrorCode; }
Details of contact information are displayed when user presses contacts name. Multiple contacts can be open at the same time. If contact has work or home address, this demo applications can load static JPG from Google Maps to show address in a map.

// data objects to server and back var sendDataLV:LoadVars; var loadDataLV:LoadVars; // show map loading info to user var info_mc:MovieClip; //start loading request function showInMap(street:String,city:String,country:String):Void { sendDataLV = new LoadVars(); loadDataLV = new LoadVars(); info_mc = _level0.attachMovie("info","info_mc", _level0.getNextHighestDepth()); info_mc._x = 5; info_mc._y = 70; loadDataLV.onLoad = latLonLoaded; sendDataLV.address = street+" "+city+" "+country; _level0.info_mc.text_txt.text += "street : " + street + "\n"; _level0.info_mc.text_txt.text += "city : " + city + "\n"; _level0.info_mc.text_txt.text += "country : " + country + "\n"; // send lat and lng request to server sendDataLV.sendAndLoad(phpUrl,loadDataLV,"POST") _level0.info_mc.text_txt.text += "Get lat and lng...\n"; back_mc._visible = true; } // lat and lng returned from server function latLonLoaded(ok:Boolean):Void { if (ok) { if (loadDataLV.latitude != undefined && loadDataLV.longitude != undefined) loadMap(); else _level0.info_mc.text_txt.text += "No Lat and Lng!\n"; } else { loadDataLV = null; sendDataLV = null; _level0.info_mc.text_txt.text += "Can't connect server to get Lat and Lng!\n"; } } // start loading map from Google function loadMap():Void { // show info _level0.info_mc.text_txt.text += "Loading map...\n"; _level0.info_mc.text_txt.text += "Latitude: "+loadDataLV.latitude+"\n"; _level0.info_mc.text_txt.text += "Longitude: "+loadDataLV.longitude+"\n"; // map size var mapWidth = 350; var mapHeight = 520; // lat and lng var lat = loadDataLV.latitude; var lng = loadDataLV.longitude; var apiKey = 'API_KEY'; // JPG loader var loader:MovieClipLoader = new MovieClipLoader(); // url var mapUrl:String = 'http://maps.google.com/staticmap?center=' + lat + ',' + lng + '&format=jpg&zoom=15&size=' + mapWidth + 'x' + mapHeight + '&key=' + apiKey + "&markers="+lat+","+lng+","+"greena"; // start map load loader.loadClip(mapUrl, _level0.info_mc.map_mc); _level0.info_mc.text_txt.text += "Loading, please wait...\n"; }

Look more detailed informations in source codes:
- ContactsDemo_PTM.zip (include CS4 FLA, AS class files and PHP files)
- ContactsDemo_PTM.zip (includes only CS3 FLA):
- ContactsDemo.fla
- Contact.as
- Menu.as
- and a few PHP files to get Lat and Lng values from Google Maps.
















