Widget de pantalla de locking de Android

Algunos usuarios me han estado pidiendo widgets de la pantalla de locking de Android para mi aplicación: creo que quieren un widget que permanezca en sus pantallas de locking y les permita interactuar con la aplicación.

No he podido encontrar ninguna documentación oficial para esto; lo único que encontré fueron aplicaciones que tomarán los widgets de la pantalla de inicio y los pondrán en la pantalla de locking por usted.

¿Alguna pista sobre dónde aprendo más sobre la construcción de widgets de locking de pantalla?

La interacción de la pantalla de locking es difícil. Android permite operaciones básicas con dos indicadores de ventana (FLAG_SHOW_WHEN_LOCKED y FLAG_DISMISS_KEYGUARD). FLAG_SHOW_WHEN_LOCKED funciona de forma bastante consistente, ya que se mostrará en la parte superior de la pantalla de locking, incluso cuando la seguridad está habilitada (la seguridad no está anulada, no puede cambiar a otra ventana que no sea FLAG_SHOW_WHEN_LOCKED).

Si solo estás haciendo algo temporal, como cuando la música está sonando o algo similar, es probable que en general estés bien. Si intenta crear una pantalla de locking personalizada, hay muchas interacciones inusuales en todas las diferentes plataformas de Android. (“¡Ayuda! No puedo apagar mi alarma sin reiniciar mi teléfono 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 

Indicador de ventana: indicador especial para permitir que las ventanas se muestren cuando la pantalla está bloqueada.

 FLAG_DISMISS_KEYGUARD 

Indicador de ventana: cuando se establece, la ventana hará que se descuelgue el locking de teclas, solo si no se trata de un locking de teclado seguro. Debido a que dicho locking de teclado no es necesario para la seguridad, nunca volverá a aparecer si el usuario navega a otra ventana (a diferencia de FLAG_SHOW_WHEN_LOCKED, que solo ocultará temporalmente los protectores de teclado seguros y no seguros, pero asegurará que vuelvan a aparecer cuando el usuario se mueva a otra interfaz de usuario que no los oculta). Si el locking de teclas está actualmente activo y es seguro (requiere un patrón de deslocking), el usuario aún deberá confirmarlo antes de ver esta ventana, a menos que FLAG_SHOW_WHEN_LOCKED también se haya configurado. Valor constante: 4194304 (0x00400000)

El documento del widget oficial de la pantalla de locking está aquí

Tuve que implementar un widget de pantalla de locking para mi proyecto. En el proceso, acumulé un par de recursos.

  1. Si tiene una aplicación que desea colocar en la pantalla de locking, primero conviértala en un appwidget . Puede usar la clase AppWidget para hacer esto.
  2. Ahora, use la clase AppWidgetHost de la API de Android para hacer que su pantalla de locking sea un host para los widgets. No sé cómo hacer esta parte, pero hay algunas implementaciones existentes como mylockandroid (enlaces a continuación).

Recursos

http://code.google.com/p/mylockforandroid/ (NB Este código es para versiones anteriores de Android. Android 4.2 y posteriores tienen incorporado el soporte de widgets de locking)

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