Intereting Posts
Проблемы с Uri Разница между appcompat_v7 и android-support-v7-appcompat? Может ли кто-нибудь объяснить разницу между передачей контекста активности внутреннему классу и просто ссылкой на него с помощью MyActivity.this? Недостаток MVP над шаблоном проектирования MVVM в android Как получить направление текста в Android и динамически менять раскладку в соответствии с направлением? Общий охват Sonarqube не соответствует охвату отчета jacoco Нарушение правил StrictMode: StrictModeDiskReadViolation, WriteViolation на Android Как проверить, видимо ли AdView? Android Studio и Visual Studio Emulator для отладки Android Как программно установить drawableRight на Android Edittext? Android – отображать снимок изображения под изображениями в Gridview Android: сервер DrmManager умер Android: прямо запускайте деятельность / фрагмент, который находится в разработке Какой объект макета используется для создания всплывающего окна «bubble» в Android UI? (Not Toast или Dialog) Android terminal – telnet отсутствует команды, получая эту ошибку: KO: неизвестная команда, попробуйте 'help'

Android GPS занимает некоторое время, чтобы быть точным

Я сделал приложение для Android, которое получает местоположение по долготе и широте нажатием кнопки.

Сначала я получаю последнее известное определение местоположения, которое, ради аргумента, неточно, когда я впервые загружаю приложение / включаю gps.

Я хотел бы знать, как подождать, пока это будет точно, например, на картах Google, когда вы получите сообщение «Ожидание местоположения».

Если вы видите какой-либо способ, который может быть улучшен, он также будет полезен.

Код для справки:

public class Clue extends Activity { public static double latitude; public static double longitude; Criteria criteria; LocationManager lm; LocationListener ll; Location location; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.questions); criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); ll = new MyLocationListener(); lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, ll); } private boolean weAreThere() { location = getLocation(); longitude = location.getLongitude(); latitude = location.getLatitude(); return inCorrectPlace(param); } private Location getLocation() { lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, ll); return lm.getLastKnownLocation(lm.getBestProvider(criteria, true)); } } public class MyLocationListener implements LocationListener { public void onLocationChanged(Location loc) { Clue.longitude = loc.getLongitude(); Clue.latitude = loc.getLatitude(); } } 

Спасибо за чтение, все ответы будут оценены.

Бен

Если Location.hasAccuracy() возвращает true, вы можете вызвать Location.getAccuracy() чтобы получить точность в метрах, а затем отфильтровать те, которые вы не считаете достаточно точными.

Обратите внимание, что вы не используете LocationManager.GPS_PROVIDER чтобы ваши исправления могли быть получены другими способами (например, WiFi).

Обычно ожидают около минуты, чтобы чип GPS получил «горячий» * до получения GPS-исправлений (на открытом воздухе).

* По жаре я имею в виду наличие спутников. Некоторые чипсеты через некоторое время отключились («холодно»), чтобы сохранить батарею. Время до первого исправления (TTFF) больше, когда чип холодный.

Вот отличное объяснение,

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

Поможет вам точно понять, как его реализовать.

Изначально, вы должны исправить использование getlastknownLocation ()

Кроме того, U может использовать фоновый сервис, который обновляет местоположение с помощью NETWORK.PROVIDER …, который не должен истощать энергию ур-батареи при разумном использовании … и также работает, если GPS выключен

Если нет сетевого провайдера, тогда вы должны попросить пользователя включить GPS.

Если ур использует 2.2, попробуйте ПАССИВНЫЙ ПРОВАЙДЕР