В нашем приложении мы использовали Fused Location Provider (FLP) для отслеживания местоположения. Мы заметили, что иногда приложение может попасть в состояние, когда обратный вызов местоположения перестает вызываться. Рассматриваемое приложение используется в основном на двух планшетах (Nexus 7 и LG G-Pad 8.3). Мы видели, что проблема возникла на обоих устройствах. В целом сброс устройства, похоже, решает проблему. Мы считаем, что следуем большинству передовых практик использования FLP. Но на всякий случай мы собрали этот пример кода, который иллюстрирует, как мы используем FLP.
Получите клиент API Google и вызовите connect:
m_googleApiClient = builder
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
m_googleApiClient.connect()
После подключения мы начинаем прослушивать обратные вызовы местоположения:
@Override
public void onConnected(Bundle bundle) {
m_fusedLocationProviderApi.requestLocationUpdates(m_googleApiClient, m_locationRequest, this);
}
Запрос местоположения выглядит так:
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
Затем мы реализуем обратный вызов следующим образом:
@Override
public void onLocationChanged(Location location) {
// set location member var and record timestamp.
}
Когда возникают проблемы, мы не получаем никаких обратных вызовов об ошибках. Мы попытались также вызвать reset () в клиенте Google API, когда мы обнаружили, что не получали GPS в течение длительного времени. Мы также отслеживаем доступность местоположения с помощью таймера каждые 2 секунды (используя getLocationAvailability). Обычно мы обнаруживаем, что сброс пользователем своего устройства (включение, выключение) решает проблему.
Наши вопросы:
- Кто-нибудь еще заметил эту проблему с FLP?
- Есть ли что-то еще, что мы можем сделать, чтобы решить эту проблему, за исключением сброса настроек пользователя? Удалит ли добавление помощи при добавлении обновлений местоположения?
- Есть ли дополнительная информация, которую мы можем / должны собрать для диагностики проблемы?