2010-01-16 135 views
4

我正在尝试开发使用J2ME来检测室内设备的移动应用程序。由于GPS无法在室内检测到移动设备。所以我正在寻找使用位置基地与细胞ID。任何人都可以给我一些关于这个方法的指导吗?检测室内移动设备(J2ME)

opencellid.org提供了一个免费的来源,用于使用小区ID来检测移动设备。基于它们的API,它需要输入IMSI。但我无法检索IMSI,因为它需要制造商/运营商域权限才能这样做。

顺便说一句,我来自新加坡,使用星和作为服务提供商和测试我的N97的迷你程序。不使用任何这些信息都有帮助。

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

+0

我看不到的地方IMSI要求记录在OpenCellId API中。除了HLR和SIM卡之外,任何人都不知道IMSI,那它有什么用处? – Tobu 2010-01-16 14:11:41

+0

嗨,感谢您的回复。 这是因为我从 http://www.easywms.com/easywms/?q=en/node/3589找到了一个例子。 从示例中,它基本上从IMSI代码中提取MCC和MNC。所以我认为我需要IMSI。是否有另一种获取MCC和MNC信息的方法? – Nivek 2010-01-17 03:17:24

回答

2

有没有简单的方法来检测,如果某人是'室内'。

你可以使用GPS来检测,当有人在室内通过信号的损失,但你还是没有办法知道,如果他们根本没有信号,或者如果他们实际上是在门。

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

如果建筑物内有Wifi接入点,那么这些可能是检测人在室内的最佳方式。如果某个建筑物中的每个无线接入点的数据库都得到了编译,Wifi接入点就可以工作.....

有关更多信息,请参阅http://www.skyhookwireless.com/!从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; 
} 

采取

0

代码,但是这需要津贴所以你有AFAIK与诺基亚证书来签名。 和设置的MIDlet-权限com.nokia.mid.mobinfo.IMSI

你可能想尝试

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

代替 IIRC那些更容易阅读