我正在尝试使用J2ME开发移动应用程序来检测室内设备。由于GPS无法检测室内移动设备。所以我正在研究使用带有单元ID的位置库。任何人都可以给我一些指导方法吗?
opencellid.org提供了使用cell id检测移动设备的免费源。根据其API,它需要输入IMSI。但我无法检索IMSI,因为它需要制造商/运营商域权限才能这样做。
顺便说一句,我来自新加坡,使用Starhub作为服务提供商并在N97 mini上测试我的程序。不使用任何此类信息有帮助。
围绕它的任何其他方式,如旁边使用单元格id的想法?任何帮助将不胜感激......
答案 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那些更容易阅读