Обновления местоположения не работают в помещении, как утверждают API-интерфейсы поставщика Fusion Location

Выпуск:

Обновления местоположения не работают в помещении, как утверждают API-интерфейсы поставщика Fusion Location.

Что случилось:

  1. Я попытался внедрить новейший API-интерфейс местоположения, чтобы получать обновления местоположения с помощью LocationClient в Android-приложении.
  2. Мое приложение для Android отлично работает с любой проблемой, пока я тестирую на открытом воздухе.
  3. Но при тестировании в помещении (внутри любого здания), никаких обновлений местоположения не происходит.

Ожидаемое поведение:

Согласно новым API, я ожидаю получить некоторое приблизительное местоположение вокруг здания, пока я нахожусь в помещении (поскольку GPS не находит спутниковый сигнал для точного местоположения).

Я вижу, что последнее приложение Android для Google Карт прекрасно работает в помещении с предполагаемым местоположением.

Вопрос:

Что еще мне нужно позаботиться, используя новые API-интерфейсы местоположения, чтобы получить обновление местоположения в помещении (точное местоположение не требуется, низкая точность также прекрасна).

Я реализую приложение Android с помощью API версии 4.2.2. Я тестирую HTC One X (OS v 4.1.1)

Ниже приведен код андроида, который я применил для получения обновлений местоположения с использованием новых API:

Шаг 1:

 mLocationClient = new LocationClient(this, this, this); 

Шаг 2:

 // Create the LocationRequest object mLocationRequest = LocationRequest.create(); // Use high accuracy mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // Set the update interval to 5 seconds mLocationRequest.setInterval(UPDATE_INTERVAL); // Set the fastest update interval to 1 second mLocationRequest.setFastestInterval(FASTEST_INTERVAL); 

Шаг 3: метод onStart() – добавляется строка ниже:

 // Connect the client. mLocationClient.connect(); 

Шаг 4: внутри onConnected() – добавлена ​​строка внизу:

 mLocationClient.requestLocationUpdates(mLocationRequest, this); 

Шаг 5: внутри onLocationChanged() – прослушивание обновлений местоположения. Этот метод не вызывается при тестировании внутренних объектов. Этот метод вызывается только при обнаружении сигнала GPS.

 double lat = location.getLatitude(); double lng = location.getLongitude(); 

Наконец добавлены ниже разрешения в Android Manifest:

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Solutions Collecting From Web of "Обновления местоположения не работают в помещении, как утверждают API-интерфейсы поставщика Fusion Location"

Основываясь на ваших фрагментах, ваш код отлично выглядит для получения внутренних мест.

Попробуйте сделать дамп, пока ваше приложение запрашивает местоположение, и вы находитесь в помещении (ожидая получения местоположений, но не): adb shell dumpsys activity service com.google.android.location.internal.GoogleLocationManagerService

Можете ли вы опубликовать вывод здесь?

Можете ли вы дважды проверить, что Настройки-> WiFi включены, и что Настройки-> Местоположение -> Wi-Fi и местоположение мобильной сети включены (оба они необходимы для внутреннего использования).

У вашего телефона есть сим-карта? Это позволит ячейкам, выведенным из ячейки, когда Wi-Fi недоступен.

Наконец, вы сказали, что Google Maps дает вам место в помещении в том же здании. Каков приблизительный размер круга точности (т. Е. Он ближе к 20 или 100 м)?

tinku! У меня такая же проблема с моими API-интерфейсами Galaxy Nexus и Fusion Location Provider.
Мое решение устанавливает приоритет для объекта LocationRequest.PRIORITY_LOW_POWER в LocationRequest.PRIORITY_LOW_POWER

  mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER); mLocationRequest.setInterval(UPDATE_INTERVAL); mLocationRequest.setFastestInterval(FASTEST_INTERVAL); mLocationClient = new LocationClient(this, this, this); 

Для меня он отлично работает в помещении (низкая точность) и на открытом воздухе (высокая точность). Надеюсь, это поможет вам.

Вы уверены, что не отключаете клиента? Как только вы отключите LocationClient, текущий запрос обновления местоположения исчезнет.

Фрагменты кода сами по себе не являются полным приложением. Образцовое приложение , однако, является полным рабочим приложением. Цель этих фрагментов – показать вам ключевые шаги, из которых вы можете вырезать и вставить. Пример приложения предоставляет больше материала.

После долгого тестирования и отладки на HTC One X (4.1.1) я решил попробовать те же тестовые примеры на любой другой модели телефона. К счастью, мое приложение работало в помещении также при тестировании с Samsung S3 моего друга (4.1.1). В то же время и место, когда я тестировал свой HTC One X, я не попадал в помещение. Оба телефона настроены с одинаковыми настройками (WiFi / GPS / Мобильная сеть все включено).

Чтобы подтвердить, что это проблема с конкретным устройством, я провел много тестов внутри здания в разных углах, используя мое приложение, и я вижу ту же проблему на моем HTC во всех помещениях (но в тех же местах S3 получает внутреннее местоположение).