Este es el primero de seis artículos de un curso que tuve la oportunidad de dar de Windows Phone 8. En este artículo el tema es acerca de la pantalla de bloqueo y sus notificaciones.

Para iniciar puedes decargar el código de ejemplo desde aquí.

Comienza por configurar el archivo WMAppManifest.xml

<Extensions>
  <Extension ExtensionName="LockScreen_Notification_IconCount" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
  <Extension ExtensionName="LockScreen_Notification_TextField" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
  <Extension ExtensionName="LockScreen_Background" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default"/>
</Extensions>

Después de eso, al momento de ejecutarla en tu emulador, podrás ver que tu aplicación ya se encuentra disponible en tres opciones de configuración de la pantalla de bloqueo.

La primera es para poder modificar el fondo de pantalla, para ello debes habilitar la opción de LockScreen_Background en la configuración de arriba.

image

La segunda opción es para poder permitir que la aplicación acceda al bloque de texto de la pantalla. Para ello es que habilitaste la opción de LockScreen_Notification_TextField.

image

La última opción es para poder permitir que la aplicación acceda al estado de notificaciones rápidas. Y para eso es que estabas en la última opción LockScreen_Notification_IconCount.

image

Esto, es lo que puedes hacer desde la configuración del teléfono. Para poder hacerlo desde tu aplicación. Coloca un botón y escribe el manejador de eventos para el Tap del botón. Ahí es donde podrás escribir el siguiente código.

private async void btnPantallaBloqueo_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    if (!LockScreenManager.IsProvidedByCurrentApplication)
    {
        var resultado = await LockScreenManager.RequestAccessAsync();

        if (resultado == LockScreenRequestResult.Granted)
        {
            string nombreArchivo = "ms-appx:///Assets/portada.jpg";

            Uri uri = new Uri(nombreArchivo, UriKind.RelativeOrAbsolute);
            LockScreen.SetImageUri(uri);
        }
    }
    else
    {
        MessageBox.Show("Cambio de fondo negado");
    }
}

La clase LockScreenManager es quien puede gestionar la posibilidad de acceder a la pantalla de bloqueo y lo hace por medio de un método de solicitud que mostrará el siguiente mensaje.

image

El resto es solo indicar la imagen que será colocada en la pantalla de bloqueo y establecerla por medio del método SetImage de la clase estática LockScreen. En el caso de que la aplicación esté negada para hacerlo entonces mostrará un mensaje. Funcionalidad sumamente simple y útil para tus aplicaciones.