Урок 138. Определение местоположения. GPS координаты.

Обсуждение уроков
Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Mikhail_dev » 15 май 2014, 09:21

[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. Сделайте определение местоположения в отдельном потоке.

Errorpro
Сообщения: 10
Зарегистрирован: 12 май 2014, 23:43

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Errorpro » 16 май 2014, 02:01

Спасибо, все сошлось. Вопрос, увидел у Вас тестирование приложения, пощелкал, у Вас не было случая что сервер возвращал разные координаты, хотя ты не двигаешься? У меня сервер возвращает разные координаты, причем разницей в 3 квартала, пробовал через GPS и интернет, разницы нет. В чем беда не в курсе?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Mikhail_dev » 16 май 2014, 09:08

Плохой модуль GPS в телефоне. Или плохие карты. 3 квартала, это обычно могут быть координаты от Network провайдера, т.е. по сотовым вышкам. Надо выводить еще точность координат, чтобы понять (accuracy).

Errorpro
Сообщения: 10
Зарегистрирован: 12 май 2014, 23:43

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Errorpro » 16 май 2014, 14:38

Я понял, спасибо большое.

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Vovich » 19 май 2014, 14:49

Не ясно, где рыть: получаю координаты в своем приложении - accuracy меньше 90 не было. А 200, 300 а то и порядка 800 запросто. Тут же запускаю карты гугл (свое продолжает работать)- у них точность 30-50 метров. Падает до 10. И в моем приложении точность начинает расти. Примерно до таких же величин.
Мож кто сталкивался?
П.С. Пробовал Criteria. Ставил setHorizontalAccuracy(Criteria.ACCURACY_HIGH);

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Mikhail_dev » 19 май 2014, 15:33

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

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Vovich » 19 май 2014, 16:18

Вроде бы он должен сказать какой провайдер лучше GPS или интернет... И получается, что постоянно (если перемещаюсь) надо запрашивать лучшего провайдера. А если слабое покрытие или интернет вообще отсутствует. Тогда только ЖПС.


Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Vovich » 19 май 2014, 16:55

Да запросил. Говорит - ЖПС лучший... А других приемов повышения точности нету?
А по LocationClient есть соображения (точность, стабильность...)?

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 27 май 2014, 17:20

Добрый день

у меня почему-то ни когда не срабатывает метод 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]

чехарда какая-то

как это поправить?

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 10:18

и вообще странности какие-то на телефоне все работает, и по 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

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 11:18

вылечилось перезагрузкой устройства, хотя это странно очень, Navitel к примеру работал хорошо и без перезагрузки определял все

по ходу использует другой метод получения координат через Google Play Service Framework

если что можно почитать тут http://stackoverflow.com/questions/1574 ... never?lq=1

а тут по ходу примерчик

https://github.com/akhgupta/FusedLoctionTest

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 11:39

и еще один глюк выявился, если были получены гео данные приложением, то если выйти из приложения, отключить wifi и 3g а потом снова войти, то будут показаны предыдущие данные. То есть сработает метод onLocationChanged и выдаст старые данные, хотя подключения к сети нет...

почему так происходит?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Mikhail_dev » 29 май 2014, 12:18

то если выйти из приложения, отключить wifi и 3g а потом снова войти
А GPS отключать дополнительно не пробовали?
то будут показаны предыдущие данные.
Если используется поиск наилучшего провайдера, то возможно берется PASSIVE_PROVIDER, которые предоставляет последние успешные данные. Это что-то вроде lastKnownLocation.
вылечилось перезагрузкой устройства, хотя это странно очень, Navitel к примеру работал хорошо и без перезагрузки определял все
О, да множество устройств имеет столько багов, что не удивляйтесь ничему. Мы во тсейчас не можем понять почему спустя некоторое время не приходят данные от WiFi. Лечится также перезагрузкой устройства.

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 18:30

Mikhail_dev писал(а): А GPS отключать дополнительно не пробовали?
я его и не включал, речь идет именно о Network Provider
Mikhail_dev писал(а): Если используется поиск наилучшего провайдера, то возможно берется PASSIVE_PROVIDER, которые предоставляет последние успешные данные. Это что-то вроде lastKnownLocation.
нет поиск наилучшего не используется, используется код с сайта
Mikhail_dev писал(а): О, да множество устройств имеет столько багов, что не удивляйтесь ничему. Мы во тсейчас не можем понять почему спустя некоторое время не приходят данные от WiFi. Лечится также перезагрузкой устройства.
зато весело :D

Спасибо за ответы.

Но так и не понятно почему Network Provider отдает старые данные даже если нет подключения к сети. GPS выключен. Сеть выключена. Из приложения вышел по клавише ОБРАТНО. То есть активность была задестроена. Вхожу снова и вижу старые данные и не только, в логах вижу что таки срабатывает метод onLocationChanged и выдает данные

придется бороться с этим логическими способами, то есть проверять если нет конекшена к сети, то просто не выводить данные, но это костыль, к сожалению :(

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 18:35

сейчас проделал эксперимент... сделал вывод в лог с какого провайдера приходят данные и перезапустил ИЗМЕНЕННОЕ приложение, то есть оно переустановилось на устройстве и выдало мне старые данные, ну и показало провайдера это был Network

вообще чудеса! :shock: даже после переустановки сработал метод onLocationCanged и выдал мне старые данные :?

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 18:40

но кстати вся эта свистопляска с взвращаемыми данными работает только тогда, когда разрешено получение данных через сеть (хотя WiFi и 3g выключены) , если эту галку в настройках Андроида в локейшенах убрать, то тогда старые данные не появляются, похоже сам Андроид при включенной этой настройке где то их хранит, собака злая....

интересно можно как то зачищать этот кэш гео данных?

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 29 май 2014, 18:47

вот точно та же проблема... причем тайм штамп текущий возвращаемых данных

http://stackoverflow.com/questions/6719 ... -timestamp

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение Mikhail_dev » 30 май 2014, 07:04

но кстати вся эта свистопляска с взвращаемыми данными работает только тогда, когда разрешено получение данных через сеть (хотя WiFi и 3g выключены) , если эту галку в настройках Андроида в локейшенах убрать, то тогда старые данные не появляются, похоже сам Андроид при включенной этой настройке где то их хранит, собака злая....
Так естественно! Вы если не хотите получать данные ВООБЩЕ, так выключайте всё. Естественно он кеширует последние полученные данные, и это очень и очень хорошо. Иначе как можно было бы получать данные такой вещи как PASSIVE_PROVIDER? Он задействует именно данные, которые были получены другими геолокационными приложениями.
Если человек поставил галку что он хочет получать данные, но выключил запрос данных, то по сути он должен получить хоть что-то. Вот это что-то и приходит.
причем тайм штамп текущий возвращаемых данных
Да, есть такая беда. Я пока не копал в детали. Вот что мне пришло когда-то в onLocationChanged при старте приложения, а также еще несколько координат от GPS и еще что-то. Но интересны были именно эти
11-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
а вот что выдавал getLastKnownLocation
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
Координаты одни, штамп времени разный.

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 138. Определение местоположения. GPS координаты.

Сообщение n0tb0dy » 30 май 2014, 17:11

а как-то можно очишать этот кэш перед запуском своей активности?

Ответить