Служба проигрывателя musi c работает как «служба переднего плана».
Службы переднего плана по большей части не зависят от дремоты при использовании в сочетании с частичной блокировкой пробуждения:
Назначение WakeLock в современных условиях Android?
Если вашему приложению необходимо создать службу переднего плана, когда приложение находится в фоновом режиме:
ContextCompat.startForegroundService()
Внутри службы, продвиньте ее на передний план и опубликуйте уведомление, позвонив:
startForeground()
Из Android docs: «Служба переднего плана выполняет некоторую операцию, которая заметна пользователю. Например, аудио приложение будет использовать службу переднего плана для воспроизведения звуковой дорожки. Службы переднего плана должны отображать уведомление. Службы переднего плана продолжают работать, даже если пользователь не взаимодействует с приложением. "
https://developer.android.com/guide/components/services
Как правило, приложение musi c меняет уведомление службы переднего плана с «обязательства», которое раздражает пользователя, на актив, отображая изображение t Исполнитель, текущая дорожка и кнопки мультимедиа, такие как воспроизведение / пауза / перемотка назад / вперед.
Службу переднего плана обычно не следует использовать для выполнения регулярных запланированных работ, потому что это значительно сократит срок службы батареи устройства.
Вместо этого попробуйте использовать WorkManager
, JobScheduler
или Firebase Cloud Messaging
, чтобы вывести устройство из спящего режима только при необходимости.
Выполняйте частые задачи с помощью Work Manager API
Но с этими решениями невозможно будет «опросить» или запустить ваш код каждые 20 секунд. Вам действительно нужно найти решение, которое работает с "Doze", вместо того, чтобы бороться с ним.