Обнаружение мобильных устройств в помещении (J2ME)
Я пытаюсь разработать мобильное приложение, использующее J2ME для обнаружения устройства в помещении. Поскольку GPS невозможно обнаружить мобильное устройство в помещении. Поэтому я рассматриваю возможность использования базы данных местоположения с идентификатором ячейки. Может ли кто-нибудь дать мне какие-то указания относительно подхода к этому?
Opencellid.org предоставляет бесплатный источник для обнаружения мобильного телефона с помощью идентификатора ячейки. Основываясь на их API, он требует ввода IMSI. Но я не могу получить IMSI, так как для этого требуется домен производителя/оператора разрешения на это.
Кстати, я из Сингапура, использую Starhub в качестве поставщика услуг и тестирую свою программу на N97 mini. Не используйте его, любая из этих сведений помогает.
Любой другой способ обойти это, как в случае с идеей использования идентификатора ячейки?? Любая помощь будет очень признательна...
2 ответа:
Нет простого способа определить, находится ли кто-то "внутри".
Вы можете использовать gps, чтобы определить, когда кто-то находится в помещении по потере сигнала, но у вас все равно не будет возможности сказать, если у них просто нет сигнала или если они действительно находятся в дверях.
Триангуляция сотового телефона в этой ситуации практически бесполезна, поскольку она просто недостаточно точна. Глядя на google maps моего телефона, он даже не может сказать улицу, на которой я нахожусь, просто приблизительное представление о том, где я нахожусь в пределах 500 метров.
Если в здании есть точки доступа Wi-Fi на всей территории, то они, вероятно, были бы лучшим способом обнаружения, когда кто-то находится в помещении. Точки доступа Wi-Fi будут работать, если база данных каждой точки беспроводного доступа в данном здании будет соблюдаться.....
Взгляните на 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; }
Но это требует доплаты, поэтому вам придется подписать сертификат nokia afaik. и установите MiDLET-разрешение на com.нокиа.ср..mobinfo.IMSI
Возможно, вы захотите попробовать
String mcc = System.getProperty("com.nokia.mid.countrycode"); String mns = System.getProperty("com.nokia.mid.networkid");
Вместо этого iirc те, которые легче читать