Определите, включен ли экран в версиях Android 15 - присутствует
Я пишу SDK, который будет использоваться устройствами Android с уровнем API 15 и выше. В настоящее время я нацеливаюсь на SDK 22-й версии. Я пытаюсь определить, включен экран или нет. Иногда я буду делать это, когда приложение находится на переднем плане или в фоновом режиме, а иногда я буду делать это, когда приложение закрыто, с помощью Alarm. То, что я хочу сделать, это спросить у фреймворка, включен ли экран или нет, но это не похоже на то, что это возможно для версий Android <= 19.
Похоже, SDK версии 19 позволяет устройству использовать PowerManager.isScreenOn() для определения состояния экрана, но когда вышла версия 20, этот метод устарел, и теперь вы можете вызывать PowerManager.isInteractive(), но это работает только на устройствах работает API 20 и выше. Если вы попытаетесь вызвать isScreenOn () с помощью устройства, работающего с API 19 или менее, вызов на самом деле просто оборачивает isInteractive (), и вы в конечном итоге получаете метод, не найденный в ваших журналах, и фактически не получаете нужные данные.
Таким образом, кажется, что если я всегда хочу знать текущее состояние экрана для устройств <= 19, то одним из способов является запуск фоновой службы, которая в основном всегда работает и которая регистрирует широковещательный приемник, который ищет ACTION_SCREEN_ON и ACTION_SCREEN_OFF Intents, Это, очевидно, нежелательно, потому что тогда я должен всегда иметь на службе, что не рекомендуется.
Я полагаю, что другим обходным путем является компиляция против SDK 19 при сборке, что сделало бы доступным вызов isScreenOn () (и сделал бы вызов isInteractive () недоступным). Это может быть возможным, но кажется плохим обходным путем, потому что я бы по существу застрял на этом уровне SDK, пока либо платформа не предоставит бэкпорт этой функциональности, либо SDX 15 - 19 не будет использоваться достаточным количеством пользователей, чтобы их больше не имело смысла поддерживать.
Правильно ли я оцениваю ситуацию?
Кто-нибудь может прокомментировать два предложенных обходных пути или предложить альтернативы?