У меня есть давно работающая служба, прослушивающая вход датчика. Для экономии заряда батареи я остановил выборку датчиков в ACTION_SCREEN_OFF и возобновил ее в ACTION_SCREEN_ON.
Однако часто я просто включаю телефон, чтобы быстро взглянуть на часы на экране блокировки (чтобы проверить текущее время), а затем снова выключаю его, не разблокируя телефон. В этом случае нет причин раскручивать датчики только для того, чтобы сразу же отключить их.
Поэтому я попытался заменить ACTION_SCREEN_ON на ACTION_USER_PRESENT в моем прослушивателе вещания. Это работало нормально, за исключением одного особого случая: когда экран гаснет, и я сразу нажимаю кнопку питания (или кнопку «Домой»), экран блокировки пропускается. И тогда ACTION_USER_PRESENT никогда не будет получен, только ACTION_SCREEN_ON.
Есть ли способ для моего широковещательного приемника после получения ACTION_SCREEN_ON узнать, активна ли блокировка экрана, и ожидать ACTION_USER_PRESENT позже? Или, если блокировка экрана пропущена, не ждать ACTION_USER_PRESENT, а сразу перезапустить выборку?