Код: Выделить всё
...
...
< /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();
Подробнее здесь: https://stackoverflow.com/questions/796 ... een-is-off