Обнаружение мобильных устройств в помещении (J2ME)


Я пытаюсь разработать мобильное приложение, использующее J2ME для обнаружения устройства в помещении. Поскольку GPS невозможно обнаружить мобильное устройство в помещении. Поэтому я рассматриваю возможность использования базы данных местоположения с идентификатором ячейки. Может ли кто-нибудь дать мне какие-то указания относительно подхода к этому?

Opencellid.org предоставляет бесплатный источник для обнаружения мобильного телефона с помощью идентификатора ячейки. Основываясь на их API, он требует ввода IMSI. Но я не могу получить IMSI, так как для этого требуется домен производителя/оператора разрешения на это.

Кстати, я из Сингапура, использую Starhub в качестве поставщика услуг и тестирую свою программу на N97 mini. Не используйте его, любая из этих сведений помогает.

Любой другой способ обойти это, как в случае с идеей использования идентификатора ячейки?? Любая помощь будет очень признательна...

2 4

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 те, которые легче читать