Как использовать GPS в помещении на мобильном устройстве? - PullRequest
4 голосов
/ 10 января 2010

Я новичок в мобильных приложениях. В основном я хочу получить GPS-координаты пользователя в помещении. У меня нет проблем с обнаружением мобильного устройства на улице, только когда оно вызывает у меня проблемы Я попытался установить точность, но безрезультатно.

Есть ли решение для этого?

Вот мой код:

new Thread()
{

    public void run()
    {
        try
        {
            Criteria cr= new Criteria();
            cr.setHorizontalAccuracy(1000);
            LocationProvider lp= LocationProvider.getInstance(cr);

            Location l = lp.getLocation(60);
            Coordinates c = l.getQualifiedCoordinates();

            if(c != null )
            {
                lat = c.getLatitude();
                lon = c.getLongitude();
            }
        }
        catch(Exception e)
        {
            System.out.println("Error");
        }
    }
}.start();

Ответы [ 4 ]

21 голосов
/ 13 января 2010

GPS основан на оценках дальности от излучающих спутников до вашего приемника. Ваш GPS-приемник нуждается (в общем) в сигнале как минимум от 4 спутников, чтобы иметь возможность вычислить его местоположение. Уровни сигналов для полосы L1 в условиях открытого неба приблизительно достигают -130 дБм. Коммерческие приемники, такие как встроенные в мобильные телефоны, способны отслеживать спутники до -160 дБм. При этом пороговом значении приемник не может использовать сигнал. Этот запас 30 дБ допускает некоторое ослабление от препятствий, таких как листва, стеклянные окна, даже светлые стены, но несколько этажей здания полностью маскируют сигналы практически со всех направлений, что делает GPS полностью недоступным. И даже если затухание позволяет приемнику использовать сигналы для вычисления своих позиций, достигнутой точности, вероятно, будет недостаточно для вашего целевого приложения (точность ухудшается из-за затухания сигнала).

С другой стороны, системы определения местоположения Wi-Fi, такие как Skyhook (реализованные на многих мобильных платформах), часто могут вычислить местоположение внутри зданий, но у этого метода есть два основных недостатка:

  • Охват базы данных не включают внутренние сайты (AFAIK), поэтому возвращаемое местоположение очень приблизительное и непригоден для любого применения.
  • Алгоритмы определения местоположения Wi-Fi, основанные на оценке дальности до горячих точек с использованием уровней сигнала, очень сильно зависят от внутренних препятствий (людей, мебели и т. Д.). Это снижает точность позиционирования.

Существует третий вариант: интегрировать ускорение из набора микросхем MEMS в мобильном телефоне, из последней известной позиции GPS. Это может работать при определенных условиях ...

В заключение, не существует готового решения для определения местоположения внутри мобильных телефонов, но некоторые работают над этим вопросом (например, http://www.polestar.eu/en/node/111/y)

Редактировать: Я забыл упомянуть позиционирование на основе сотовой вышки, которое доступно, если в телефоне активная коррекция данных в сотовой сети. Этот метод достаточно точен, чтобы указать город, в котором находится мобильный телефон.

7 голосов
/ 10 января 2010

К сожалению, GPS никогда не предназначался для работы в помещении. На самом деле, большинство потребительских GPS-датчиков не способны получить корректное GPS-решение, если у них нет четкого обзора неба. Даже высотные здания и густые деревья могут вызвать значительные проблемы.

2 голосов
/ 10 января 2010

Я думал, что JSR 179 поддерживает сетевое позиционирование из коробки, так как Google Maps - это приложение Java, обладающее этой функциональностью. Но, согласно форуму разработчиков Sony Ericsson и некоторым сообщениям на форумах разработчиков Nokia, похоже, вам лучше всего самостоятельно найти идентификатор ячейки через системные свойства и использовать сервис поиска типа opencellid.org .

На Nokias представляется возможным заставить сетевое позиционирование работать напрямую через JSR 179, хотя это требует изменения настроек телефона.

Набор

Меню -> Настройки-> Настройки телефона. -> Общие сведения-> Позиционирование-> Позиционирование сервера

на supl.nokia.com (вставлено с форумы разработчиков nokia ). Это включит сетевое позиционирование. Для доступных методов определения местоположения см. Методы определения местоположения в S60 .

2 голосов
/ 10 января 2010

Существуют базы данных точек доступа WiFi, так что вы можете получить довольно хорошее представление о том, какие точки доступа находятся в диапазоне: http://gadgets.boingboing.net/2008/10/22/google-gears-adds-wi.html http://www.skyhookwireless.com/

...