Android locationlistener onlocationchanged не работает

LocationListener не работает в фоне

Всем мира!
Вопрос следующий: я создал сервис который каждые 10 секунд опрашивает местоположение и отправляет данные на сервер и в активити для обновления textview. Первую минуту locationListener работает правильно, а потом он просто отваливается и не вызывается метод onLocationChanged(). В чем проблема работы locationListener’a в фоне. Язык Kotlin, но ответ на Java пойму.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

GPS. Слушатель LocationListener
Изменения текущего местоположения сохраняю в файл, сохраняя время и координаты. Потом просматриваю.

GPS. Слушатель LocationListener
Изменения текущего местоположения сохраняю в файл, сохраняя время и координаты. Потом просматриваю.

Скрипт не работает в фоне
есть скрипт #!/usr/bin/python import os, time f = open(‘pid.loadcurses’, ‘w’) f.close() .

Не работает Location в фоне
Подскажите пожалуйста, что нужно сделать, что бы в фоне обновлялся Location? import.

SendKeys если приложение работает в фоне
Добрый день! Создал webBrowser1, открыл нужную страницу. Мне нужно, чтобы программа постоянно.

Apk диктофон на одном Lenovo работает в фоне, а на другом нет?
На кафедре попросили организовать запись лекций. Установил диктофон на двух телефонах Lenovo P780.

Рисование на фоне
Пытаюсь рисовать на форме, не на pickture box, напишите пример как добавить фоновую картинку.

анимация на фоне
как сделать анимацию на фоне. и как лучшк всего сделать музыкальное сопровождение?

Форма в фоне
Всем привет! Такая проблема, пишу курсовую, в общем дали задание, чтоб одна форма была в фоне и при.

Источник

Обратный вызов OnLocationChanged никогда не вызывается

Я пытаюсь узнать текущее местоположение пользователей с помощью LocationManager . Я провел много исследований и не могу найти никого с такой же проблемой. Обратный вызов OnLocationChanged , кажется, никогда не вызывается. Ниже мой код и файл logcat.

Мой OnCreate() метод

Мой registerLocationUpdates метод

Мои разрешения в AndroidManifest

И, наконец, логарифм после запуска приложения

И части местоположения пакета SDK для Android в logcat продолжают повторяться сами по себе. Я перепробовал все, что мог придумать, и видел в Google и stackoverflow. Также в качестве примечания я смог заставить его работать на устройстве 2.3, используя requestSingleUpdate , который доступен в API 9, и следуя руководству Подробное описание местоположения, но мне нужно, чтобы он работал на версии 2.1 или 2.2 и выше с использованием старого SDK. Итак, если у вас есть какие-либо подсказки или вы хотите узнать больше, дайте мне знать. Заранее спасибо.

15 ответов

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

Таким образом, вы получите ВСЕ возможные обновления. И закомментируйте часть о получении последнего известного местоположения. Пока это не нужно.

Тогда в onLocationChanged() просто оставьте

Закомментируйте остальное, чтобы ваш слушатель оставался активным. Это должно дать вам поток обновлений на реальном устройстве. В эмуляторе вам нужно использовать DDMS, и вы будете получать одно обновление GPS каждый раз, когда нажимаете кнопку «Отправить».

В моем случае даже после написания правильного кода я не получил местоположение с помощью client.requestLocationUpdates(locationRequest, this, it) . В телефоне GPS также был включен с помощью

Потратив время на переключение эмуляторов, сборок и т. Д., Наконец выяснилось, что режим определения местоположения был «Только устройство», и он не давал результата на эмуляторе. Переключился на «Высокая точность» и заработал.

Читайте также:  Как настроить телевизор vsvno

Это случилось со мной, когда локацию отключили. Не разрешение местоположения для приложения, а местоположение самого устройства Android. Запрос, чтобы пользователь активировал GPS, исправил это для меня:

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

Это должно происходить из-за настроек вашего телефона. В настройках местоположения телефонов, если для режима службы определения местоположения установлено значение «Только GPS», функция обратного вызова OnLocationChanged вызывает функцию «Исправление GPS». При выборе параметров «Использовать GPS», «WI-FI и мобильные сети» местоположение будет определяться с использованием этих трех провайдеров. Это займет меньше времени, чтобы определить местоположение вашего устройства. *** Путь к доступу к службам определения местоположения может быть изменен с устройства на устройство. Спасибо

У меня 2 устройства: Samsung Galaxy S4 (Android 5.0.1) и Vertex Win (Android 8.1).

На Самсунге все работает правильно и быстро, координаты GPS определяются, вызывается onLocationChanged .

В Vertex в приоритете PRIORITY_BALANCED_POWER_ACCURACY он, вероятно, сначала взаимодействует с сетевым провайдером, поэтому он находит координаты через Wi-Fi. Но он не может правильно определить, включена ли служба определения местоположения (через некоторое время устройство думает, что оно включено, пока оно выключено, и вызывает метод addOnSuccessListener для LocationServices.getSettingsClient . Поэтому я переключился на PRIORITY_HIGH_ACCURACY и получил еще один сюрприз. Сетевой провайдер отключился, но onLocationChanged не был вызван, поэтому я не смог получить координаты. Я скачал GPS tester (как посоветовал @ Li3ro) из Play Market и увидел, что спутники видны, но без фиксированного сигнала Я не мог принимать сигнал внутри здания.

Даже автономные карты не могли получать координаты, а вот открытые — могли. Итак, после того, как я ушел, я смог найти свои координаты в приложении.

См. Также https://stackoverflow.com/a/27828929/2914140, где говорится о приоритетах и ​​распознавании ошибок ( отключение GPS через некоторое время, если координаты не найдены).

Как ответил Phan Van Linh , вероятно, это потому, что вы находитесь внутри здания. Здесь есть объяснение о том, как имитировать GPS для эмулятора. Кроме того, существует приложение this, которое издевается над Данные GPS.

У меня была такая же проблема (onLocationChanged () никогда не вызывалась с помощью NETWORK_PROVIDER) на моем реальном устройстве (M, targetSDK 23 приложения), пока я не перезапустил его.

Если вы пытаетесь использовать NETWORK_PROVIDER, действительно сложно протестировать:

  • на эмуляторе: никогда не работай
  • на реальном устройстве: работает только getLastKnownLocation (), чтобы получить onLocationChanged (), вы должны использовать мобильные данные и выйти на улицу с риском потерять телефон от грабителя: P

Я предполагаю, что причина в том, что это просто местоположение сетевого провайдера, а не само ваше устройство, и сетевой провайдер никогда не перемещается, поэтому onLocationChanged () никогда не вызывается. Это может произойти только при переключении между мобильными данными и Wi-Fi и наоборот. Пожалуйста, поправьте меня, если я ошибаюсь.

Поэтому я предлагаю использовать GPS_PROVIDER, чтобы поэкспериментировать, прежде чем рассматривать производительность и использование батареи. Он отлично работает как на эмуляторах, так и на реальных устройствах. Лучшая практика: https://developer.android.com/guide/topics. /location/strategies.html

Мне потребовалось несколько часов, чтобы протестировать NETWORK_PROVIDER без каких-либо результатов, поэтому, надеюсь, мое предложение будет полезным.

Я столкнулся с той же проблемой. Я получал getLastKnownLocation как null. Проблема устранена, когда я перезапустил и устройство, и службу определения местоположения на устройстве.

Источник

LocationListener NETWORK_PROVIDER включен, но onLocationChanged никогда не вызывается

Я разрабатываю приложение, которое занимает позицию сотового телефона в течение всего 6 и 6 минут в сервисе, оно отлично работает, но иногда метод OnLocationChanged из прослушивателя сетевого провайдера перестает быть вызванным, и я не знаю почему.

Читайте также:  Телевизор sony как настроить канал

Это почему-то перестает быть вызванным, но поставщик включен, и Lister работает, когда я разрешаю или отключаю Провайдера вручную, onProviderEnabled и onProviderDisabled .

Это просто происходит с NETWORK_PROVIDER , GPS_PROVIDER работает хорошо.

Отчет в Samsung Galaxy S3:

По-прежнему получаю «Сем-синал» в течение 4 дней подряд.

Эта проблема уже произошла с Galaxy Y и LG Optimus l5

Я сделал еще один тест, чтобы узнать, получили ли другие приложения позиции NET, и я обнаружил, что они передают одну и ту же проблему, они не могут получить позицию NET только через GetLastknowLocation; Чтобы проверить, что я использовал Galaxy S3 с этой проблемой, и я отключил поставщик GPS. (Протестировано в Цербере).

Я не мог найти объяснений, почему слушатель NETWORKSLOCATIONS перестает давать позиции, но может быть, потому что он не должен работать в течение 2 или 3 дней без остановки.

Я провел несколько тестов с другими приложениями, чтобы проверить, не возникает ли эта проблема с моим назначением, и я обнаружил, что они передаются по одной и той же проблеме, например, в Cerberus:

Я отключу GPS-провайдера в мобильном телефоне (Galaxy S3) с проблемой «Семь синала», посмотрите:

Мой отчет:

И Цербер (печать, сделанная в 14/05/2013) сообщает:

Но когда я открывал Карты Google, он, похоже, работает нормально, я попытался переместиться на дистанционное место, чтобы посмотреть, будет ли он показывать GetLastknowLocation , но нет, карты google помещают меня в нужное место в данный момент, поэтому я понял, что Карты Google использовали motionevent для перемещения меня на карту;

А также распечатайте журнал Google Maps, чтобы получить NetWorkProvider:

У меня возникли аналогичные проблемы с сетевым провайдером, и только решение было принудительным перезапуском устройства . Хотя карта google всегда показывала правильное местоположение, потому что она также использует информацию других датчиков, кроме поставщика сетевого местоположения.

Но вот хорошая новость , а не долгое время назад. Google представил Fuse Location Provider api через свою сервисную платформу Google Play, которая очень проста в использовании, чем поставщики GPS / Network Location.

Совместимость до уровня API 8, теперь, когда я получаю эту странную проблему с сетевым провайдером, в то же время Fused Location дает мне точное местоположение (без перезагрузки устройства).

Я совершил один рабочий проект FusedLocation Test здесь , вы можете клонировать и тестировать себя.

Ниже приведен фрагмент кода: –

У меня точно такая же проблема, и единственным решением для меня является перезагрузка устройства. Что интересно, что ни одно из приложений не содержит информацию о местоположении, кроме карт Google.
Google Maps приложение каким-то образом находит свое местоположение! ..

PS с помощью службы LocationListener в сервисе, поэтому это определенно не проблема плохой ссылки, мертвого объекта и т. Д.

У меня все еще есть эта проблема. Но я все еще ищу ответ, я попытался реализовать это в слушателе NETWORK_PROVIDER:

Потому что: OUT_OF_SERVICE, если поставщик не работает, и это не ожидается в ближайшем будущем; TEMPORARILY_UNAVAILABLE, если поставщик временно недоступен, но ожидается, что он будет доступен в ближайшее время; И AVAILABLE, если поставщик в настоящее время доступен. onStatusChanged

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

Читайте также:  Опель астра не работает педаль газа

Кажется, проблема с сетевым провайдером была обнаружена в Android Open Source Project, Issue Tracker: https://code.google.com/p/android/issues/detail?id=57707 . Короче говоря, выпуск был опубликован 17 июля 2013 г. – последний блог 7 января 2015 г., выпущенный с Android 4.1.x, появляется на самых разных устройствах: «Не разрешено в последней библиотеке службы воспроизведения», никаких обходных решений, предложенных в блоге, не было.

Я понимаю кое-что в нашем вопросе; Вы вызываете метод requestGPS, а затем dicover его location.If gps включен, получил через gps. Othervise gott через NET. Когда вы вызываете requestGPS и управляете провайдером, чем получаете lat-lang, но удаляете обновления. (Не вызывайте, потому что вы удалили триггер обновлений);

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

Я думаю, это потому, что ваше приложение «убито» в фоновом режиме. Я столкнулся с этой проблемой раньше, и я решил ее, переместив создание службы LocationListener в службу. Обязательно сохраните ссылку на слушателя. Это может решить проблему.

Источник

Android LocationListener onLocationChanged() is never called

I’m developing a Android app and I’m still green in this area.

In my app I’m using the FusedLocationApi to get both the last know location and make Location update requests and I got a problem where, even with both Location and WiFi activated on Android Studio emulator and Samsung Galaxy S5, I never got the LocationListener’s onLocationChanged() called.

Here is my code:

Below are both my AndroidManifest.xml and my gradle:

I’v searched a lot this week but I’ve got no helpful answer yet =s

These are some of the threads I’ve searched (I don’t want to look like a lazy guy, because I’m not, I’m just stuck)

Can someone point my errors? =S

2 Answers 2

I’ll venture this answer. if it’s helpful, great. if not, sorry.

I have a similar Activity that uses the FusedLocationprovider.

I’m no expert, and can’t say WHY yours is not working, but mine is working, and I’ve noticed the following differences:

in your onCreate method. Is this necessary? Wouldn’t mLocationRequest always be null in onCreate()?

2) Your methods are private, mine protected

3) your createLocationrequest() is labeled as ‘synchronized’ . could is be not working because of this?

4) you use the setSmallestDisplacement() method. I have seen posts that say this method doesn’t work properly and results in onLocationChanged() not being called.

5) You instantiate your LocationRequest with: ‘LocationRequest.create()’ and not «new LocationRequest()’ could this be the problem?

Here is an alternate answer.

There is one line of code that is vital in order for onlocationChanged to ever be called:

And in your case, this code resides very deeply in your code with many conditions needing to be met for this to be reached:

Conditions you require:

  • security exception not thrown
  • last location == null
  • (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
  • !(ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
  • button pushed

I would consider putting MORE LOGS in your code in order to determine that these conditions are in fact being met. trace backwards from:

PS — I see you’re using the Android N permission model. I have yet to put my toes in that water due to the confusion it seems to create. I just set my target SDK = 22. 🙂

Источник

Оцените статью