Intereting Posts
Как автоматически форматировать текстовое представление динамически в соответствии с длиной текста в android? Создание службы для совместного доступа к базе данных между всеми действиями в приложении Android? Почему имеет значение, где Toast производится в Android, если контекст один и тот же? Два вопроса о шаблоне Master / Detail Flow Интенсивность и повреждение вибрации Android Android, как отправить несколько контактов, подключен в один файл .vcf и отправляется по почте? Android: Есть ли хороший способ создать диалог, похожий на тост? Android лучший способ заставить катушку, кажется, вращаться Алгоритм Android SensorManager.java getOrientation и getRotationMatrix Потоковая передача видео через сокет и воспроизведение с клиента Группа сортировки Android Заменить текущую деятельность Любой, кто автоматизировал функционирование камеры мобильного телефона. Любые предложения, где я могу проверить изображение, снятое камерой? Андроид, как сохранить растровый – багги код Об утечках памяти и общих методах

Android: Как сохранить GPS активным до тех пор, пока не будет предоставлено более точное местоположение?

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

Мой вопрос заключается в том, как заставить провайдера местоположения GPS оставаться активным для каждого периодического запроса, который поступает из запроса LocationManagerLocationUpdates . Кто-нибудь знает как это сделать?

Solutions Collecting From Web of "Android: Как сохранить GPS активным до тех пор, пока не будет предоставлено более точное местоположение?"

Попробуй что-нибудь вроде этого. Я думаю, что это правильный подход

private void createGpsListner() { gpsListener = new LocationListener(){ public void onLocationChanged(Location location) { curLocation = location; // check if locations has accuracy data if(curLocation.hasAccuracy()) { // Accuracy is in rage of 20 meters, stop listening we have a fix if(curLocation.getAccuracy() < 20) { stopGpsListner(); } } } public void onProviderDisabled(String provider){} public void onProviderEnabled(String provider){} public void onStatusChanged(String provider, int status, Bundle extras){} }; } private void startGpsListener() { if(myLocationManager != null) // hit location update in intervals of 5sec and after 10meters offset myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, gpsListener); } private void stopGpsListner() { if(myLocationManager != null) myLocationManager.removeUpdates(gpsListener); } 

Если вы сохраняете активную функцию LocationListener, она должна продолжать получать обновления onLocationChanged (), если точность исправления сужается. И действительно location.getAccuracy () скажет вам текущую точность

Возможно, установите minTime и minDistance как на 0, чтобы получать обновления с большей частотой? Будет использовать больше батареи, но более преувеличен.

Пример получения GPS-местоположения с таймаутом.

http://sikazi.blogspot.com/2010/09/android-gps-timeout.html#more

Чтобы периодически получать местоположение GPS, найдите местоположение из метода onLocationChanged метода locationListener и в методе onResume укажите время в milliseconds для получения периодических обновлений

 onResume location_manager.requestLocationUpdates(provider, 1000, 1, MainActivity.this);