检测室内移动设备 (J2ME)
Posted
技术标签:
【中文标题】检测室内移动设备 (J2ME)【英文标题】:Detect mobile device indoor (J2ME) 【发布时间】:2010-01-16 12:41:19 【问题描述】:我正在尝试使用 J2ME 开发一个移动应用程序来检测室内设备。由于 GPS 无法检测到室内的移动设备。所以我正在研究使用带有小区 ID 的位置库。谁能给我一些关于这种方法的指导?
opencellid.org 提供了一个免费资源,用于使用小区 ID 检测移动设备。基于他们的API,它需要输入IMSI。但我无法检索 IMSI,因为它需要制造商/运营商域权限才能这样做。
顺便说一句,我来自新加坡,使用 Starhub 作为服务提供商并在 N97 mini 上测试我的程序。不使用它,任何这些信息都有帮助。
除了使用单元格 ID 的想法之外,还有其他方法吗?任何帮助将不胜感激......
【问题讨论】:
我没有看到 OpenCellId API 中记录了 IMSI 要求的位置。除了 HLR 和 SIM 卡,其他人都不知道 IMSI,那么它有什么用处? 您好,感谢您的回复。这是因为我从easywms.com/easywms/?q=en/node/3589 中找到了一个示例。从示例中,它基本上是从 IMSI 代码中提取 MCC 和 MNC。所以我想我需要IMSI。有没有其他方法可以获取 MCC 和 MNC 信息?? 【参考方案1】:没有简单的方法来检测某人是否在“室内”。
您可以使用 gps 通过信号丢失来检测某人何时在室内,但您仍然无法判断他们是否只是没有信号,或者他们是否真的在门内。
手机三角测量在这种情况下几乎毫无用处,因为它不够准确。看着我手机的谷歌地图,它甚至无法分辨我在哪条街上,只是粗略地知道我在 500 米内的位置。
如果大楼各处都有 Wifi 接入点,那么这些可能是检测某人何时在室内的最佳方式。如果符合给定建筑物中每个无线接入点的数据库,则 Wifi 接入点将工作......
查看http://www.skyhookwireless.com/ 了解更多信息!
【讨论】:
【参考方案2】:代码取自 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;
但这需要津贴,因此您必须使用诺基亚证书 afaik 签名。 并将 MiDLET-Permission 设置为 com.nokia.mid.mobinfo.IMSI
你可以试试
String mcc = System.getProperty("com.nokia.mid.countrycode");
String mns = System.getProperty("com.nokia.mid.networkid");
改为 iirc那些更容易阅读
【讨论】:
以上是关于检测室内移动设备 (J2ME)的主要内容,如果未能解决你的问题,请参考以下文章