Android onlocationChanged () обратный вызов не работает при выключении экранаJAVA

Программисты JAVA общаются здесь
Anonymous
Android onlocationChanged () обратный вызов не работает при выключении экрана

Сообщение Anonymous »

Я относительно новичок в программировании Android, и я пытался создать приложение с службой переднего плана (я нацелен на API 31 или выше), которое использует местоположение и датчики. Я реализовал как SensoreventListener , так и LocationListener и их соответствующие методы интерфейса onsensorchanged () и onlocationChanged () . Они оба работают так, как предполагалось, когда действия приложения находятся на переднем плане, но onlocationChanged () не вызывается, когда я выключаю экран устройства.

Код: Выделить всё

...







...
< /code>
И я динамически запросил их в своей основной деятельности; Я объявил свой сервис с < /p>


< /code>
В моей деятельности я начинаю свою службу переднего плана с < /p>
startForegroundService(i);
< /code>
и в методе службы onstartcommand () я использую < /p>
ServiceCompat.startForeground(this, notification_id, serviceNotification, FOREGROUND_SERVICE_TYPE_LOCATION);
< /code>
Служба запускается нормально, и уведомление, которое я создал, публикуется как предполагалось; В Service's Oncreate () я зарегистрировал как методы обратного вызова датчиков, так и изменение местоположения < /p>
SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this, accelSensor, SensorManager.SENSOR_DELAY_UI);
sm.registerListener(this, rotationVectorSensor, SensorManager.SENSOR_DELAY_UI);

...

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50, 5.f, this);
< /code>
Я заметил, что если я использовал свое приложение с экраном, но с чем-то, что заставило устройство работать (например, навигатор GPS на Android Auto), оба методы обратного вызова работают, как и предполагалось, поэтому я также пытался использовать Wakelock в My Service's OnstartCommand < /p>

, который я позже выпускаю в методе Ondestroy Service < /p>
...

wakeLock.release();
После всего этого я также «я" беллистискую службу "в настройках устройства в настройках устройства, поэтому оно не ограничено вариантами сохранения батареи Android, но моя проблема все еще остается, и что я могу видеть из журналов, так это то, что onlocationchanged () не вызван, если экран отключен.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... een-is-off

Вернуться в «JAVA»