Виджет блокировки экрана Android - PullRequest
71 голосов
/ 07 ноября 2010

Несколько пользователей спрашивали меня о виджетах экрана блокировки Android для моего приложения - я думаю, что им нужен виджет, который остается на их экранах блокировки и позволяет им взаимодействовать с приложением.

Я не былсмог найти любую официальную документацию для этого - единственное, что я нашел, это приложения, которые будут брать виджеты домашнего экрана и помещать их на экран блокировки для вас.

Любые подсказки, где я узнаю больше о построении истинного замкаэкранные виджеты?

Ответы [ 3 ]

54 голосов
/ 12 января 2011

Взаимодействие с экраном блокировки затруднено. 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

Флаг окна: когда установлено окно, клавиатура будет уволен, только если он не является безопасным блокировка клавиатуры Потому что такая клавиатура не нужен для безопасности, это будет никогда не появляется снова, если пользователь перемещается в другое окно (в отличие от FLAG_SHOW_WHEN_LOCKED, который будет только временно скрыть как безопасный, так и небезопасные ключи, но убедитесь, что они появляются снова, когда пользователь переходит на другой интерфейс, который не скрывает их). Если клавиатура в настоящее время активна и является безопасным (требуется графический ключ разблокировки) чем пользователю все еще нужно будет подтвердите это перед тем, как увидеть это окно, если FLAG_SHOW_WHEN_LOCKED также не имеет был установлен. Постоянное значение: 4194304 (0x00400000)

28 голосов
/ 16 ноября 2012

Официальный документ виджета экрана блокировки - здесь

10 голосов
/ 22 марта 2011

Мне пришлось реализовать виджет блокировки экрана для моего проекта. В процессе я накопил пару ресурсов.

  1. Если у вас есть приложение, которое вы хотите разместить на экране блокировки, сначала сделайте его приложением . Для этого вы можете использовать класс AppWidget.
  2. Теперь используйте класс AppWidgetHost из Android API, чтобы сделал ваш экран блокировки хостом для виджетов. Я не знаю, как сделать эту часть, но есть некоторые существующие реализации, такие как mylockandroid (ссылки ниже).

Ресурсы

http://code.google.com/p/mylockforandroid/ (Примечание: этот код предназначен для более старых версий Android. В Android 4.2 и более поздних версиях встроена поддержка виджетов на экране блокировки)

http://mylockandroid.blogspot.com/2010/03/widget-lockscreen-beta-11-r2.html

...