fioricet tablets cheapest fioricet brand name fioricet on line pharmacies for fioricet 100 count c o d order fioricet no prescription fioricet c o d discount fioricet fioricet information fioricet overnight fioricet cash on delivery purchase fioricet online order fioricet buy cheap generic fioricet fioicet firoicet cheap fiorcet buy generic fioricet fioricet picture fioricet tab fioricet saturday delivery name brand fioricet impact health care name brand fioricet buy fioricet cheap buy the drug fioricet online discount fioricet overnight prescriptions fiorcet how to buy fiorcet cheap generic fioricet online fioricet withdrawal info fioricet

Archive for the 'J2memap' Category

MyOpenPos: Open Source positionnig

Tuesday, July 8th, 2008

In the first part, we’ve introduced CellID, and OpenCellID – the OpenSource database of CellID - and we have created a small program to retrieve position from CellID information.

This time, we will go on step further and display a map, based on open source data OpenStreet map, on your mobile phone, based on your location.

This will be close to the experience of Google Map “MyLocation” on mobile, and will run on top of JavaME.

So to achieve this, we will use J2memap component. J2memap is a library that we have created to develop our flagship product, a mobile tourist guide. But the purpose of this library is to easily create mobile application based on a Map. This library is free for non commercial use.
This component can display map based on any tile provider, like Google, MSN or others, but also OpenStreetMap. On top of this, you can add extra layers as bitmap or KML, GeoRSS, GPX and much more.
A complete description of the feature is available at http://j2memap.8motions.com .

The HelloMap program!

So how to use it? It’s very simple, you can use MapDisplay. The simplest J2memap program is like this one:

import com.eightmotions.map.MapDisplay; import com.eightmotions.util.UtilMidp; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMap extends MIDlet { public void startApp() { UtilMidp.checkMIDP(this); //Initialise the utility library… Display.getDisplay(this).setCurrent((new MapDisplay()).getCanvas()); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} }

You see, just create a MapDisplay and display the related Canvas. Now, you can play with a map, move it, etc…

The result looks like good already:

Using OpenStreeMap as a Map provider

So, we need now to do two things: integrate OpenStreetMap, and use OpenCellID feature.
The OpenStreeMap integration is quite easy: you can implement or replace layers, by implementing the MapOverlay interface.
But even better, there is the “GenericOverlay” classes, which take care of most of the hard complex, and just need an URL, and a few settings:

MapOverlay openStreeMap=GenericOverlay(“OpenStreeMap”,”http://tile.openstreetmap.org/!z!/!x!/!y!.png”);

The URL contains some special token, the ones between ‘!’ like ‘!x!’,’!y!’, and ‘!z!’.
These are dynamically replaced by the corresponding value at run time, they are related to lon, lat and zoom level.
I will not go into detail of these values, they are beyond the scope of this article, but you should know that you
have others values, like !minLon!,!minLat!, etc…. In other words, this could be very easily used to connect to a WMS server….
Then we just tell the engine to display it:

myMap.setMapProvider(0,openStreeMap);

Retreiving results of OpenCellID

At this level, we will already a map application where we can zoom in /out connected to OpenStreeMap. We just reuse the code of our last week sample, and add the following at the end of the treatment of the OpenCellID result:

…. int pos=res.indexOf(‘,’); String latStr=res.substring(0,pos); int pos2=res.indexOf(‘,’,pos+1); String lonStr=res.substring(pos+1,pos2); myMap.setInfoOnScreen(latStr+ +lonStr); float lat=Float.parseFloat(latStr); float lon=Float.parseFloat(lonStr); // If we are in a lower zoom mode, go into an higher mod if(myMap.getZoom()<10)myMap.setZoom(14); // If the ‘current location’ is not yet created, do it, and add it in the current track if(lastLoc==null){ lastLoc=new MyLoc(); t.addLoc(lastLoc); } lastLoc.setLonLat(lon,lat); myMap.goTo(lastLoc);

Adding a custom Marker: using Marker

What is this MyLoc element? Using the libray, you can add element on top of the map, like pins, markers, etc… You can use picture to do your own marer, but in this example, we will create our own custom marker, an empty circle
To do this, we just extends the default Marker, add the size field/

Note: at this stage, the range value returned by the API is wrong, so we won’t use it and we will set a predefined size for your cell range….

class MyLoc extends Marker{ public int range=1000; public MyLoc(){ super(); } public void paint(Graphics g,int inpx,int inpy,int offx,int offy,int w,int h,int zoom){ int x=offx+w/2+(px-inpx)/(1<<zoom); int y=offy+h/2+(py-inpy)/(1<<zoom); g.setColor(0x8080A0); g.fillArc(x-6,y-6,12,12,0,360); g.setColor(0x0000C0); g.drawArc(x-50,y-50,100,100,0,360); } }

Conclusion

The result is the following: when you press the “LocateMe” button on your phone, a request will be sent to the OpenCellID server, trying to see if we find a correspondence between this CellID and a location. If this is found, then, we move the map to this location.

A few shortcuts are available:

1 to zoom in, 3 to zoom out, 5 to change of map provider

Important: as discussed in the first article, only latest SonyEricsson provides access to CellID on JavaME. On others phone, if you attempt to use this feature, the program will warn you through a “this phone does not support CellID”.

The complete source code is available here.The compiled program is available here, with jad and jar.

If you have any questions, remarks, comment, feel free to ask: t.landspurg@8motions.com

Zemanta Pixie

8Motions: another wins!

Monday, July 7th, 2008

8Motions was a winner of the latest french contest for innovative companies! Once again, this is a proof of the interest of 8Motions project, both on technology part but also on business part! So thanks to the jury for selecting us…..

http://blog.landspurg.net/wp-content/pics/oseo.pnghttp://blog.landspurg.net/wp-content/pics/recherche.png

Another J2memap based client: Teoo

Sunday, July 6th, 2008

Teeo.Fr
is a new Website based on the J2memap library, and which is a social application helping you to display your friends on your mobile phone.

Nice works from Medhi, the developer, which will share some informations with us about his experience of J2memap soon….

Interview for Telematicsupdate about OpenCellID

Friday, June 27th, 2008

Following conference Telematicsupdate conference about LBS, I’ve been interviewed by Thomas about OpenCellid and impact on the industry. Result is here: Towards free location on all devices.

Adding location to a non GPS phone : using OpenCellID

Thursday, June 26th, 2008

1) Introduction

In this two parts article, we will introduce mobile positioning with CellID, and the open source database of CellIDs: OpenCellID. We will see how to use it through a simple sample. The second part will demonstrate how to use OpenCellID with OpenStreeMap and the 8Motion library to create a full interactive mobile mapping experience in JavaME, each of these examples being less than 100 lines of code.

2) What is CellID

We all know that GPS will be deployed in the vast majority of phones in the future. But now, only a few high end handsets are GPS enabled.
An alternative, available since a long time, but gaining momentum recently is CellID based location. What is CellID? A CellID is the number given to a specific cell (the radio tower to which your handset is connected) . In most of the case, it’s the closest tower to your location. So by knowing this tower, you know where the user is. But a tower can cover a huge area: from a few hundred meters, in high density area, to several kilometers in lower density area. That’s why CellID accuracy is lower than GPS accuracy, but this present a very good alternative.

CellID has become recently more popular, mainly thanks to his nice integration into GoogleMap mobile.

3) OpenCellID

So this sounds great, let’s just get the phone cellID, so we will have his location. The issue is that the location of cells is not a public information. Operators keep this private, for many reasons:

  • They don’t want to give tower location to their competitors
  • They use this as an extra revenue income, as they provide paying services to retrieve cell location.

That’s why we have set up a service called “OpenCellID”. OpenCellID.org is an open source database of CellID, serving two purposes:

  • Everybody can create an application gathering information about cell locations, and send these information to the OpenCellID server, improving the coverage
  • The database can be used by other applications to get the location of a cell, according to his cell id.

How to use OpenCellID (http://www.opencellid.org/api )

The API is a simple REST api. There are only two relevant calls: measure/add and get/cell

measure/add to add a measure of cell. This is used to by application which wants to add information to the database. These application produce content for the OpenCellID database. To use it, you need to require a key to OpenCellID.org. The key is used to track applications providers, and ensure that no fake data are inserted into the system.

Examples:

http://www.opencellid.org/measure/add?key=myapikey&mnc=1&mcc=2&lac=200&cellid=234&lat=3.42&lon=3.12

Replace myKey with the key that you received while registering at OpenCellID. This will tell the serveur that a client found a cell of id 234, for mcc=1, mcc=2 and the position 3.42,3.12 …Be careful: all informations are in decimal, while some handsets (sonyericsson for instance) provides lac and cellid in hexa, so you will need to convert them before calling the API.

Cell/get is used to get the position associated with a cell. You just need to give mcc,mnc,cellid and optionnaly lac.

http://www.opencellid.org/cell/get?mcc=250&mnc=99&cellid=29513&lac=0

You need to provide at least mcc, mnc (mobile country code, and mobile network code of the operator), and cell id. Lac (location area code) is an optional parameter, and will help to find an alternate position if cell is not found.
In return, the API will return a simple XML, like this one:



<rsp stat=“ok”>
<cell lat=“57.8240013122559″ lac=“0″ lon=“28.00119972229″ mcc=“250″ nbsamples=“38″ range=“0″ cellid=“29513″ mnc=“99″>
</cell></rsp>

Lat and lon are the coordinate of the cell, based on 38 samples…

If needed, you can use the optional parameter “fmt” to specify an output format,:

http://www.opencellid.org/cell/get?mcc=250&mnc=99&cellid=29513&lac=0&fmt=txt

will return something like this:

57.8240013122559,28.00119972229,250,99,0,29513,100,38

Same informations than before, but in a much compact form (see the API description for a complete description).

Others API are under development, to retrieve operators from mcc/mnc for instance.

4) Sample program:

So let’s use OpenCellID to create a small program, written in JavaME, which will just get the CellID of the phone , do a request to the OpenCellID server and display the results.

First, let’s get the CellID:

We use SonyEricsson specific properties. There properties are non standard, and only available on some devices.

// These properties are implemented on latest SonyEricsson phone // This does not work on others (Nokia, etc…) String cellid=System.getProperty(“com.sonyericsson.net.cellid”); String mcc = System.getProperty(“com.sonyericsson.net.cmcc”); String mnc = System.getProperty(“com.sonyericsson.net.cmnc”); String lac = System.getProperty(“com.sonyericsson.net.lac”);

Cellid is of course the cell id, mcc is mobile country code, mnc is mobile network code and identify the operator and the country (cmcc stands for current mcc). That’s all we need to find our location.

Then, verify if theses properties are supported:

String info=“This phone does not support CellID”; if(cellid!=null){ info=“Cell:”+cellid+ mcc:”+mcc+ mnc:”+mnc+ lac:”+lac; url=“http://www.opencellid.org/cell/get?cellid=”+Integer.parseInt(cellid,16)+ “&mcc=”+mcc+“&mnc=”+mnc+“&lac=”+Integer.parseInt(lac,16)+“&fmt=txt”; cellInfo.setString(info); Thread t=new Thread(this); t.start(); posInfo.setString(“Requesting position…”); }

In this part, we have created the URL to request information on the server, and start the fetch of the information in a separate thread:

public void run(){ try { HttpConnection cnx = (HttpConnection)Connector.open(url); InputStream is=cnx.openInputStream(); StringBuffer b=new StringBuffer(); int car; while( (car=is.read())!= -1){ b.append((char)car); } is.close(); cnx.close(); String res=b.toString(); if(res.startsWith(“err”)){ posInfo.setString(“Cell not found!”); }else{ int pos=res.indexOf(‘,’); String lat=res.substring(0,pos); int pos2=res.indexOf(‘,’,pos+1); String lon=res.substring(pos+1,pos2); posInfo.setString(lat+ +lon); } } catch (IOException ex) { ex.printStackTrace(); posInfo.setString(ex.toString()); } }

If the API call return something starting with err, we are probably in error. Otherwise, we will have our current cell id positioning.

And that’s done. The complete source code is available here.The compiled program is available here, with jad and jar.

So, what happens if the CellID is not in the database? Then the program will display an error. You can improve the accuracy of OpenCellID by discovering more cells. Check OpenCellID to know how to do it.

Next part will improve this first version, by creating an interactive program displaying the location on a map, using J2memap free component…

Tutorial: loading a KML file using the J2memap library

Wednesday, April 16th, 2008

Ok, following some requests, here is another tutorial on how to use the J2memap library. First, note that if you just want to display a KML file on mobile, you can use 8Motions directly, no need to create your own application.

Anyway, here we are going to show you how to create a very simple app that display a KML file on a cell phone. First, download the J2memap library (you need to be registered to download it), and put thelibraryCLDC11.jar (or 10.jar) as a library of your project. In netbeans, you do Properties,add jar/zip,select the jar file.

Here I take a KML file, but it could be also a GPX file, LOC or GEORSS file….

Then, here is the code:

package com.eightmotions.LoadTrack;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import com.eightmotions.util.*;
import com.eightmotions.map.*;
/**
 *
 * @author tlandspurg
 * @version
 */
public class LoadTrack extends MIDlet implements TrackNotifier {

    MapCanvas m_map;
    Display m_display;
    public void startApp() {
        UtilMidp.checkMIDP(this); //Initialise the utility library…

        // Initialize the map, get the display, and put the map on it
        m_map=new MapCanvas();
        m_display=Display.getDisplay(this);
        m_display.setCurrent(m_map);     

        // Load a track, and display this track to a map
        Track track=Track.getTrack(m_display,“http://www.8motions.com/map/showKml/107″,“Loading Track”,m_map);
        // Listen for track loaded event…
        track.setNotifier(this);
    }

    public void pauseApp() { }

    public void destroyApp(boolean unconditional) {   }

    /* When the track has been loaded, display it… */
    public void onTrackLoaded(Track tr) {
        m_map.displayTrack(tr,true);
    }

    public void onTrackCreated(Track t) { };

    public void onTrackSaved(Track t) {};
}

Here is the result:

New design for j2memap dev website

Monday, March 31st, 2008

Just put in place a better design for the j2memap developer web site. Let me know if you have any issue….

New version of the J2memap SDK available

Monday, March 10th, 2008

Hello dear J2memap developer,

We’ve just put on line a new version of the SDK.

Beyon some small improvment, there is a major (but easy to handle) change:

  • Tha package name has changed, to follow our company organisation. It moved from net.landspurg to com.eightmotions. So just replace it in your source code
  • There was also&nbsp; some cleanup on what is included and what what is not, to reduce library size

As a reminder, this SDK allows you to easily create mobile mapping application, and is freely available for non commercial application at http://j2memap.8motions.com

Let us now if you have any issue!

Navizon now integrate J2memap library

Monday, January 14th, 2008

Navizon integrate the J2memap library from 8Motions…. Navizon, a well know provider of geolocation software uses the J2memap library to display on line maps… See more on the Navizon blog.

If you want to add easily maps in your j2me app, just contact us, or check directly the SDK .

Identificateurs Technorati : , , , ,

8Motions on the N95

Wednesday, December 19th, 2007

8Motions just run perfectly well on my latest N95 8Gb. The screen orientation is supported, as well as taking picture and uploading them to the flickr directly.

Other very interesting info, is the fact that the landscape mode is well supported by 8Motions, like this:



TIP
: put the software in the internal memory, not the 7GB one. This one is extremely slow, and will slow done applications like 8Motions which use local storage for caching.

TIP2: if you want to upload directly to flickr, remember to put ask a flickr token on the mobile. It will be asked the first time that you try to do it, so you need to be close to your computer and type the required URL. I know that this could be better, and we will improve this later on.

Also thanks to nokia 95 user blog for linking the app…