检测室内移动设备(J2ME)

时间:2010-01-16 12:41:20

标签: java java-me mobile gps nokia

我正在尝试使用J2ME开发移动应用程序来检测室内设备。由于GPS无法检测室内移动设备。所以我正在研究使用带有单元ID的位置库。任何人都可以给我一些指导方法吗?

opencellid.org提供了使用cell id检测移动设备的免费源。根据其API,它需要输入IMSI。但我无法检索IMSI,因为它需要制造商/运营商域权限才能这样做。

顺便说一句,我来自新加坡,使用Starhub作为服务提供商并在N97 mini上测试我的程序。不使用任何此类信息有帮助。

围绕它的任何其他方式,如旁边使用单元格id的想法?任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:2)

没有简单的方法来检测某人是否在“室内”。

你可以使用gps来检测某人是否因为信号丢失而在室内,但你仍然无法判断他们是否只是没有信号,或者他们是否真的在门口。

手机三角测量在这种情况下几乎没用,因为它不够准确。看着我手机的谷歌地图,它甚至无法告诉我所在的街道,只是粗略地了解我在500米范围内的位置。

如果建筑物中有无线接入点,那么这些可能是检测某人何时在室内的最佳方式。如果符合给定建筑物中每个无线接入点的数据库,则Wifi接入点将起作用.....

请查看http://www.skyhookwireless.com/以获取更多信息!

答案 1 :(得分:0)

代码来自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;
}

但这需要津贴,因此您必须使用诺基亚证书才能签名。 并将MiDLET-Permission设置为com.nokia.mid.mobinfo.IMSI

您可能想尝试

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

代替 iirc那些更容易阅读