Я относительно новичок в программировании 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 () не вызван, если экран отключен.>
Я относительно новичок в программировании Android, и я пытался создать приложение с службой переднего плана (я нацелен на API 31 или выше), которое использует местоположение и датчики. Я реализовал как SensoreventListener , так и LocationListener и их соответствующие методы интерфейса onsensorchanged () и onlocationChanged () . Они оба работают так, как предполагалось, когда действия приложения находятся на переднем плане, но onlocationChanged () не вызывается, когда я выключаю экран устройства.[code]...
... < /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(); [/code] После всего этого я также «я" беллистискую службу "в настройках устройства в настройках устройства, поэтому оно не ограничено вариантами сохранения батареи Android, но моя проблема все еще остается, и что я могу видеть из журналов, так это то, что onlocationchanged () не вызван, если экран отключен.>