Ответ 1
Заблокировать взаимодействие экрана сложно. Android позволяет выполнять основные операции с помощью двух флажков окна (FLAG_SHOW_WHEN_LOCKED и FLAG_DISMISS_KEYGUARD). FLAG_SHOW_WHEN_LOCKED работает довольно последовательно, поскольку он будет отображаться поверх экрана блокировки, даже когда безопасность включена (безопасность не обойдена, вы не можете переключиться на другое окно, отличное от FLAG_SHOW_WHEN_LOCKED).
Если вы просто делаете что-то временное, например, когда играет музыка или что-то подобное, вы, вероятно, в основном будете в порядке. Если вы пытаетесь создать пользовательский экран блокировки, то есть много необычных взаимодействий на всех разных платформах Android. ( "Помогите! Я не могу отключить будильник без перезагрузки моего телефона HTC" ).
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
FLAG_SHOW_WHEN_LOCKED
Флаг окна: специальный флаг, чтобы окна отображались, когда экран заперта.
FLAG_DISMISS_KEYGUARD
Флаг окна: если установить окно, это приведет к тому, что keyguard будет отклоняется, только если он не является безопасным блокировка блокировки клавиатуры. Потому что такая блокировка клавиатуры для безопасности не требуется. никогда не появляться, если пользователь переводит в другое окно (в отличие от FLAG_SHOW_WHEN_LOCKED, который будет временно скрыть как безопасные, так и не защищенные блокировки клавиатуры, но появляться, когда пользователь переходит к другой пользовательский интерфейс, который не скрывает их). Если в настоящее время активна блокировка клавиатуры (требуется шаблон разблокировки) чем пользователь все равно должен будет подтвердите это перед просмотром этого окна, если FLAG_SHOW_WHEN_LOCKED также были установлены. Постоянное значение: 4194304 (0x00400000)