Урок 138. Определение местоположения. GPS координаты.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
[syntax=java5]
@Override
protected void onResume() {
super.onResume();
Log.d("sample", "in");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, locationListener);
// locationManager.requestLocationUpdates(
// LocationManager.NETWORK_PROVIDER, 1000 * 10, 10,
// locationListener);
checkEnabled();
}
[/syntax]
Вот так я изменил ваш метод. Я просто выводил предлог in в консоль. У меня пару раз выводило in, что говорит о том, что работает. "1000 * 10, 10" я поставил на ноль, чтобы чаще выводило.
Проблемы:
1. Сделайте обработчик кнопки в коде, а не в XML
2. Сделайте определение местоположения в отдельном потоке.
@Override
protected void onResume() {
super.onResume();
Log.d("sample", "in");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, locationListener);
// locationManager.requestLocationUpdates(
// LocationManager.NETWORK_PROVIDER, 1000 * 10, 10,
// locationListener);
checkEnabled();
}
[/syntax]
Вот так я изменил ваш метод. Я просто выводил предлог in в консоль. У меня пару раз выводило in, что говорит о том, что работает. "1000 * 10, 10" я поставил на ноль, чтобы чаще выводило.
Проблемы:
1. Сделайте обработчик кнопки в коде, а не в XML
2. Сделайте определение местоположения в отдельном потоке.
Re: Урок 138. Определение местоположения. GPS координаты.
Спасибо, все сошлось. Вопрос, увидел у Вас тестирование приложения, пощелкал, у Вас не было случая что сервер возвращал разные координаты, хотя ты не двигаешься? У меня сервер возвращает разные координаты, причем разницей в 3 квартала, пробовал через GPS и интернет, разницы нет. В чем беда не в курсе?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
Плохой модуль GPS в телефоне. Или плохие карты. 3 квартала, это обычно могут быть координаты от Network провайдера, т.е. по сотовым вышкам. Надо выводить еще точность координат, чтобы понять (accuracy).
Re: Урок 138. Определение местоположения. GPS координаты.
Я понял, спасибо большое.
Re: Урок 138. Определение местоположения. GPS координаты.
Не ясно, где рыть: получаю координаты в своем приложении - accuracy меньше 90 не было. А 200, 300 а то и порядка 800 запросто. Тут же запускаю карты гугл (свое продолжает работать)- у них точность 30-50 метров. Падает до 10. И в моем приложении точность начинает расти. Примерно до таких же величин.
Мож кто сталкивался?
П.С. Пробовал Criteria. Ставил setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
Мож кто сталкивался?
П.С. Пробовал Criteria. Ставил setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
Там где-то есть метод getBestProvider, который вам выдаст лучшее местоположение.
Re: Урок 138. Определение местоположения. GPS координаты.
Вроде бы он должен сказать какой провайдер лучше GPS или интернет... И получается, что постоянно (если перемещаюсь) надо запрашивать лучшего провайдера. А если слабое покрытие или интернет вообще отсутствует. Тогда только ЖПС.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
Да, лучше запрашивать лучшего. Что в этом плохого?
Re: Урок 138. Определение местоположения. GPS координаты.
Да запросил. Говорит - ЖПС лучший... А других приемов повышения точности нету?
А по LocationClient есть соображения (точность, стабильность...)?
А по LocationClient есть соображения (точность, стабильность...)?
Re: Урок 138. Определение местоположения. GPS координаты.
Добрый день
у меня почему-то ни когда не срабатывает метод onProviderEnabled
[syntax=java]
@Override
public void onProviderEnabled(String provider) {
Log.d(TAG, "onProviderEnabled"+ provider);
checkEnabled();
showLocation(locationManager.getLastKnownLocation(provider));
}
[/syntax]
хотя включаю и получение данных по сети и по GPS
Log.d(TAG, "onProviderEnabled"+ provider); ни когда не срабатывает
хотя данные все таки приходят
то есть процедура showLocation срабатывает, но срабатывает она только из onLocationChanged
[syntax=java]
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "onLocationChanged");
showLocation(location);
[/syntax]
чехарда какая-то
как это поправить?
у меня почему-то ни когда не срабатывает метод onProviderEnabled
[syntax=java]
@Override
public void onProviderEnabled(String provider) {
Log.d(TAG, "onProviderEnabled"+ provider);
checkEnabled();
showLocation(locationManager.getLastKnownLocation(provider));
}
[/syntax]
хотя включаю и получение данных по сети и по GPS
Log.d(TAG, "onProviderEnabled"+ provider); ни когда не срабатывает
хотя данные все таки приходят
то есть процедура showLocation срабатывает, но срабатывает она только из onLocationChanged
[syntax=java]
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "onLocationChanged");
showLocation(location);
[/syntax]
чехарда какая-то
как это поправить?
Re: Урок 138. Определение местоположения. GPS координаты.
и вообще странности какие-то на телефоне все работает, и по GPS получает данные и по 3G и по WiFi (причем телефон дешевенький Fly IQ430 Android 4.1.1)
а на планшете Samsung Galaxy Tab 7.7 Android 4.0.4 вообще ни как не получает данные, хотя в Navitel находит спутники за несколько секунд.
на планшете метод onLocationChanged вообще не срабатывает
как сие можно вылечить?
и по ходу не у меня одного такие проблемы
http://stackoverflow.com/questions/1193 ... ver-called
http://stackoverflow.com/questions/9007 ... ver-called
http://stackoverflow.com/questions/1359 ... -locations
а на планшете Samsung Galaxy Tab 7.7 Android 4.0.4 вообще ни как не получает данные, хотя в Navitel находит спутники за несколько секунд.
на планшете метод onLocationChanged вообще не срабатывает
как сие можно вылечить?
и по ходу не у меня одного такие проблемы
http://stackoverflow.com/questions/1193 ... ver-called
http://stackoverflow.com/questions/9007 ... ver-called
http://stackoverflow.com/questions/1359 ... -locations
Re: Урок 138. Определение местоположения. GPS координаты.
вылечилось перезагрузкой устройства, хотя это странно очень, Navitel к примеру работал хорошо и без перезагрузки определял все
по ходу использует другой метод получения координат через Google Play Service Framework
если что можно почитать тут http://stackoverflow.com/questions/1574 ... never?lq=1
а тут по ходу примерчик
https://github.com/akhgupta/FusedLoctionTest
по ходу использует другой метод получения координат через Google Play Service Framework
если что можно почитать тут http://stackoverflow.com/questions/1574 ... never?lq=1
а тут по ходу примерчик
https://github.com/akhgupta/FusedLoctionTest
Re: Урок 138. Определение местоположения. GPS координаты.
и еще один глюк выявился, если были получены гео данные приложением, то если выйти из приложения, отключить wifi и 3g а потом снова войти, то будут показаны предыдущие данные. То есть сработает метод onLocationChanged и выдаст старые данные, хотя подключения к сети нет...
почему так происходит?
почему так происходит?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
А GPS отключать дополнительно не пробовали?то если выйти из приложения, отключить wifi и 3g а потом снова войти
Если используется поиск наилучшего провайдера, то возможно берется PASSIVE_PROVIDER, которые предоставляет последние успешные данные. Это что-то вроде lastKnownLocation.то будут показаны предыдущие данные.
О, да множество устройств имеет столько багов, что не удивляйтесь ничему. Мы во тсейчас не можем понять почему спустя некоторое время не приходят данные от WiFi. Лечится также перезагрузкой устройства.вылечилось перезагрузкой устройства, хотя это странно очень, Navitel к примеру работал хорошо и без перезагрузки определял все
Re: Урок 138. Определение местоположения. GPS координаты.
я его и не включал, речь идет именно о Network ProviderMikhail_dev писал(а): А GPS отключать дополнительно не пробовали?
нет поиск наилучшего не используется, используется код с сайтаMikhail_dev писал(а): Если используется поиск наилучшего провайдера, то возможно берется PASSIVE_PROVIDER, которые предоставляет последние успешные данные. Это что-то вроде lastKnownLocation.
зато веселоMikhail_dev писал(а): О, да множество устройств имеет столько багов, что не удивляйтесь ничему. Мы во тсейчас не можем понять почему спустя некоторое время не приходят данные от WiFi. Лечится также перезагрузкой устройства.
Спасибо за ответы.
Но так и не понятно почему Network Provider отдает старые данные даже если нет подключения к сети. GPS выключен. Сеть выключена. Из приложения вышел по клавише ОБРАТНО. То есть активность была задестроена. Вхожу снова и вижу старые данные и не только, в логах вижу что таки срабатывает метод onLocationChanged и выдает данные
придется бороться с этим логическими способами, то есть проверять если нет конекшена к сети, то просто не выводить данные, но это костыль, к сожалению
Re: Урок 138. Определение местоположения. GPS координаты.
сейчас проделал эксперимент... сделал вывод в лог с какого провайдера приходят данные и перезапустил ИЗМЕНЕННОЕ приложение, то есть оно переустановилось на устройстве и выдало мне старые данные, ну и показало провайдера это был Network
вообще чудеса! даже после переустановки сработал метод onLocationCanged и выдал мне старые данные
вообще чудеса! даже после переустановки сработал метод onLocationCanged и выдал мне старые данные
Re: Урок 138. Определение местоположения. GPS координаты.
но кстати вся эта свистопляска с взвращаемыми данными работает только тогда, когда разрешено получение данных через сеть (хотя WiFi и 3g выключены) , если эту галку в настройках Андроида в локейшенах убрать, то тогда старые данные не появляются, похоже сам Андроид при включенной этой настройке где то их хранит, собака злая....
интересно можно как то зачищать этот кэш гео данных?
интересно можно как то зачищать этот кэш гео данных?
Re: Урок 138. Определение местоположения. GPS координаты.
вот точно та же проблема... причем тайм штамп текущий возвращаемых данных
http://stackoverflow.com/questions/6719 ... -timestamp
http://stackoverflow.com/questions/6719 ... -timestamp
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 138. Определение местоположения. GPS координаты.
Так естественно! Вы если не хотите получать данные ВООБЩЕ, так выключайте всё. Естественно он кеширует последние полученные данные, и это очень и очень хорошо. Иначе как можно было бы получать данные такой вещи как PASSIVE_PROVIDER? Он задействует именно данные, которые были получены другими геолокационными приложениями.но кстати вся эта свистопляска с взвращаемыми данными работает только тогда, когда разрешено получение данных через сеть (хотя WiFi и 3g выключены) , если эту галку в настройках Андроида в локейшенах убрать, то тогда старые данные не появляются, похоже сам Андроид при включенной этой настройке где то их хранит, собака злая....
Если человек поставил галку что он хочет получать данные, но выключил запрос данных, то по сути он должен получить хоть что-то. Вот это что-то и приходит.
Да, есть такая беда. Я пока не копал в детали. Вот что мне пришло когда-то в onLocationChanged при старте приложения, а также еще несколько координат от GPS и еще что-то. Но интересны были именно этипричем тайм штамп текущий возвращаемых данных
а вот что выдавал getLastKnownLocation11-08 21:46:47.260 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ time = 08/11/2013 21:46
11-08 21:46:47.260 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ provider = network
11-08 21:46:47.260 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ lat = 53.2213822
11-08 21:46:47.270 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ lon = 50.1478159
Координаты одни, штамп времени разный.11-08 21:46:47.320 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ Service time = 06/11/2013 20:54
11-08 21:46:47.320 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ Service provider = network
11-08 21:46:47.320 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ Service lat = 53.2213822
11-08 21:46:47.320 27530-27530/ru.lab_m.whowhere:remote D/sample﹕ Service lon = 50.1478159
Re: Урок 138. Определение местоположения. GPS координаты.
а как-то можно очишать этот кэш перед запуском своей активности?