Question

I am trying to develop a mobile application using J2ME to detect the device indoor. As GPS is impossible to detect the mobile device indoor. So i am looking into using location base with cell id. Can anyone gives me some guidance on the approach of this?

opencellid.org provides a free source for detecting the mobile using cell id. Base on their API, it requires the input of the IMSI. But i am unable to retrieve the IMSI as it requires the manufacturer/operator domain permissions to do so.

By the way, i am from Singapore, using Starhub as the service provider and testing my program on N97 mini. Not use it any of this information helps.

Any other way around it as in beside the idea of using cell id?? Any help will be greatly appreciated...

Was it helpful?

Solution

There is no easy way to detect if someone is 'indoors'.

You could use gps to detect when someone is indoors by loss of signal, but you will still have no way to tell if they just don't have signal or if they are actually in doors.

Cell phone triangulation is pretty much useless in this situation as it just isn't accurate enough. Looking at my phone's google maps it cant even tell the street I am on, just a rough idea of where I am within 500 meters.

If the building has Wifi access-points throughout then these probably would be the best way of detecting when someone is indoors. Wifi access-points would work if a database of every wireless access point in a given building was complied.....

Have a look at http://www.skyhookwireless.com/ for more info!

OTHER TIPS

code taken from developer.nokia.com

public String getIMSI() {
    String out = "";
    try {
        out = System.getProperty("IMSI");
        if (out == null || out.equals("null") || out.equals("")) {
            out = System.getProperty("phone.imsi");
        }
        if (out == null || out.equals("null") || out.equals("")) {
            out = System.getProperty("com.nokia.mid.mobinfo.IMSI");
        }
        if (out == null || out.equals("null") || out.equals("")) {
            out = System.getProperty("com.nokia.mid.imsi");
        }
        if (out == null || out.equals("null") || out.equals("")) {
            out = System.getProperty("IMSI");
        }
        if (out == null || out.equals("null") || out.equals("")) {
            out = System.getProperty("imsi");
        }
    } catch (Exception e) {
        return out == null ? "" : out;
    }
    return out == null ? "" : out;
}

but that requires allowance so you'll have to sign with a nokia certificate afaik. and set MiDLET-Permission to com.nokia.mid.mobinfo.IMSI

you might want to try

String mcc = System.getProperty("com.nokia.mid.countrycode");
String mns = System.getProperty("com.nokia.mid.networkid");

instead iirc those are easier to read

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top